JGroups UDP

Definition

UDP uses IP multicast for sending messages to all members of a group and UDP datagrams for unicast messages (sent to a single member). When started, it opens a unicast and multicast socket: the unicast socket is used to send/receive unicast messages, whereas the multicast socket sends/receives multicast messages. The channel's address will be the address and port number of the unicast socket.

 

A protocol stack with UDP as transport protocol is typically used with groups whose members run on the same host or are distributed across a LAN. Before running such a stack a programmer has to ensure that IP multicast is enabled across subnets. It is often the case that IP multicast is not enabled across subnets. In such cases, the stack has to either use UDP without IP multicasting or other transports such as TCP.

 

 

Configuration Example

 

<UDP mcast_addr="228.8.8.8"  mcast_port="45566"  
ip_ttl="32"
ip_mcast="true" 
mcast_send_buf_size="150000"
mcast_recv_buf_size="80000"  
ucast_send_buf_size="150000"
ucast_recv_buf_size="80000" 
loopback="true" 
max_bundle_size="60000" 
max_bundle_timeout="30"
use_incoming_packet_handler="false"
use_outgoing_packet_handler="false"
enable_bundling="false" ></UDP>

 

 

Configuration Parameters

NameDescription
bind_addr

The bind address which should be used by this transport.  Supports these special values:

  • GLOBAL: Choose a public IP address, an address that is NON_LOOPBACK and not SITE_LOCAL and not LINK_LOCAL.
  • SITE_LOCAL: Choose a private IP address for which InetAddress,isSiteLocalAddress() is true (for example, 192.168.x.x or 10.x.x.x)
  • LINK_LOCAL: Choose an IP address for which InetAddress.isLinkLocalAddress() is true (for example, 169.x.x.x or 254.0.0.0).  Only useful for traffic only within one box.
  • NON_LOOPBACK: use the first address found on an interface (which is up), which is not a 127.x.x.x address
bind_interface_strThe interface (NIC) which should be used by this transport
bind_portThe port to which the transport binds. Default of 0 binds to any (ephemeral) port
bundler_capacityThe max number of elements in a bundler if the bundler supports size limitations
bundler_typeThe type of bundler used. Has to be "old" (default) or "new"
diagnostics_addrAddress for diagnostic probing. Default is 224.0.75.75
diagnostics_portPort for diagnostic probing. Default is 7500
disable_loopback
discard_incompatible_packetsDiscard packets with a different version if true. Default is false
enable_bundlingEnable bundling of smaller messages into bigger ones. Default is true
enable_diagnosticsSwitch to enable diagnostic probing. Default is true
enable_unicast_bundlingEnable bundling of smaller messages into bigger ones for unicast messages. Default is false
idGive the protocol a different ID if needed so we can have multiple instances of it in the same stack
ip_mcastMulticast toggle. If false multiple unicast datagrams are sent instead of one multicast. Default is true
ip_ttlThe time-to-live (TTL) for multicast datagram packets. Default is 8
levelSets the logger level (see javadocs)
log_discard_msgswhether or not warnings about messages from different groups are logged
logical_addr_cache_expirationTime (in ms) after which entries in the logical address cache marked as removable are removed
logical_addr_cache_max_sizeMax number of elements in the logical address cache before eviction starts
loopbackMessages to self are looped back immediately if true
marshaller_pool_size
max_bundle_sizeMaximum number of bytes for messages to be queued until they are sent
max_bundle_timeoutMax number of milliseconds until queued messages are sent
mcast_group_addrThe multicast address used for sending and receiving packets. Default is 228.8.8.8
mcast_portThe multicast port used for sending and receiving packets. Default is 7600
mcast_recv_buf_sizeReceive buffer size of the multicast datagram socket. Default is 500'000 bytes
mcast_send_buf_sizeSend buffer size of the multicast datagram socket. Default is 100'000 bytes
nameGive the protocol a different name if needed so we can have multiple instances of it in the same stack
num_timer_threadsNumber of threads to be used by the timer thread pool. Default is 4
oob_thread_pool.keep_alive_timeTimeout in ms to remove idle threads from the OOB pool
oob_thread_pool.max_threadsMax thread pool size for the OOB thread pool
oob_thread_pool.min_threadsMinimum thread pool size for the OOB thread pool
oob_thread_pool_enabledSwitch for enabling thread pool for OOB messages. Default=true
oob_thread_pool_queue_enabledUse queue to enqueue incoming OOB messages
oob_thread_pool_queue_max_sizeMaximum queue size for incoming OOB messages. Default is 500
oob_thread_pool_rejection_policyThread rejection policy. Possible values are Abort, Discard, DiscardOldest and Run. Default is Discard
port_rangeThe range of valid ports, from bind_port to end_port. Infinite if 0
receive_interfacesComma delimited list of interfaces (IP addresses or interface names) to receive multicasts on
receive_on_all_interfacesIf true, the transport should use all available interfaces to receive multicast messages
singleton_nameIf assigned enable this transport to be a singleton (shared) transport
statsDetermines whether to collect statistics (and expose them via JMX). Default is true
thread_naming_patternThread naming pattern for threads in this channel. Default is cl
thread_pool.keep_alive_timeTimeout in milliseconds to remove idle thread from regular pool
thread_pool.max_threadsMaximum thread pool size for the regular thread pool
thread_pool.min_threadsMinimum thread pool size for the regular thread pool
thread_pool_enabledSwitch for enabling thread pool for regular messages. Default true
thread_pool_queue_enabledUse queue to enqueue incoming regular messages. Default is true
thread_pool_queue_max_sizeMaximum queue size for incoming OOB messages. Default is 500
thread_pool_rejection_policyThread rejection policy. Possible values are Abort, Discard, DiscardOldest and Run. Default is Discard
tosTraffic class for sending unicast and multicast datagrams. Default is 8
ucast_recv_buf_sizeReceive buffer size of the unicast datagram socket. Default is 64'000 bytes
ucast_send_buf_sizeSend buffer size of the unicast datagram socket. Default is 100'000 bytes
use_local_hostIgnores all bind address parameters and  let's the OS return the local host address

 

 

See also TP and Protocol Configuration Common Parameters.

 

Back To JGroups