ifdef::context[:parent-context: {context}]
[id='cluster-transport']
:context: cluster-transport
= Setting up {brandname} cluster transport

{brandname} requires a transport layer so nodes can automatically join and leave clusters.
The transport layer also enables {brandname} nodes to replicate or distribute data across the network and perform operations such as re-balancing and state transfer.

include::{topics}/ref_jgroups_default.adoc[leveloffset=+1]

//Discovery
include::{topics}/con_cluster_discovery_protocols.adoc[leveloffset=+1]
include::{topics}/ref_discovery_ping.adoc[leveloffset=+2]
include::{topics}/ref_discovery_tcp_ping.adoc[leveloffset=+2]
include::{topics}/ref_discovery_mping.adoc[leveloffset=+2]
include::{topics}/ref_discovery_gossip_router.adoc[leveloffset=+2]
include::{topics}/ref_discovery_jdbc.adoc[leveloffset=+2]
include::{topics}/ref_discovery_dns_ping.adoc[leveloffset=+2]
include::{topics}/ref_discovery_cloud.adoc[leveloffset=+2]

//Default JGroups
include::{topics}/proc_using_jgroups_default.adoc[leveloffset=+1]

//Custom JGroups
include::{topics}/proc_customizing_jgroups_stacks.adoc[leveloffset=+1]
include::{topics}/ref_jgroups_inheritance_attributes.adoc[leveloffset=+2]
//
include::{topics}/proc_using_jgroups_system_properties.adoc[leveloffset=+1]
include::{topics}/ref_jgroups_system_properties.adoc[leveloffset=+2]
include::{topics}/ref_jgroups_extras_properties.adoc[leveloffset=+2]

//
include::{topics}/proc_using_jgroups_inline.adoc[leveloffset=+1]
include::{topics}/proc_using_jgroups_external.adoc[leveloffset=+1]

//Embedded only
ifdef::embedded_caches[]
include::{topics}/proc_using_custom_jchannels.adoc[leveloffset=+1]
endif::embedded_caches[]

//Security
include::assembly_encrypting_cluster_traffic.adoc[leveloffset=+1]

include::{topics}/ref_jgroups_ports.adoc[leveloffset=+1]

// Configuring virtual threads
include::{topics}/proc_virtual_threads.adoc[leveloffset=+1]

// Restore the parent context.
ifdef::parent-context[:context: {parent-context}]
ifndef::parent-context[:!context:]
