5.8.5. UDP Advanced Tuning (settings.cfg)

For high-throughput, low-latency, or highly congested diode networks, several transport parameters can be tuned. You can define these in settings.cfg using LISP-like expressions:

(set setting-name value)

Please see Advanced Settings in Configuration Files for more information on the settings.cfg file.

Below are the key UDP tuning settings:

udp.reorder.holdms

Syntax:  (set udp.reorder.holdms 50)

Type: Integer (milliseconds)

Default:  50

Purpose: Instructs the receiver on how long to wait when a sequence gap opens before giving up and skipping ahead.

Details: Out-of-order packets are held in a buffer. Since copies are interleaved, a missing packet (or one of its redundant clones) may arrive slightly late. If a gap remains unrecovered for more than holdms milliseconds, the receiver aborts waiting, logs a warning, skips past the gap, and delivers subsequent queued packets to the DataHub engine to prevent permanent delivery latency.

udp.reorder.maxbuffered

Syntax:  (set udp.reorder.maxbuffered 4096)

Type: Integer (packets)

Default:  4096

Purpose: A safety cap on the number of out-of-order packets the receiver is willing to buffer during a hold gap.

Details: Protects system memory from exhausting when the data rate is extremely high and holdms is large. If the reorder buffer fills with more than maxbuffered packets, the receiver immediately skips ahead and drops the missing packets, even if the holdms timer has not elapsed.

udp.recvsocketbuf.bytes

Syntax:  (set udp.recvsocketbuf.bytes 4194304)

Type: Integer (bytes)

Default: 4194304 (4 MB)

Purpose: Configures the OS-level socket receive buffer (SO_RCVBUF).

Details: Kernel-level socket drops occur when the receiving thread is busy writing and parsing a prior batch of frames and the network adapter's buffer overflows. These drops happen below the raw packet-capture layer and are invisible to tools like Wireshark. Setting this buffer to a high value (like 4 MB) allows the OS kernel to safely queue packets during transient burst conditions.

udp.txpacing.window

Syntax:  (set udp.txpacing.window 8)

Type: Integer (sequence count)

Default:  8

Purpose: Sets the size of the sliding pacing window on the transmitter.

Details: Controls the maximum number of sequence numbers that can be in flight simultaneously. When retransmit copies are active, copies are interleaved with new packets inside this sliding window (rather than sending duplicate copies consecutively). Interleaving ensures that a short-duration burst drop on the physical wire is highly unlikely to wipe out all copies of a single sequence.

udp.ticksizems

Syntax:  (set udp.ticksizems 10)

Type: Integer (milliseconds, forced between 1 and 1000)

Default:  10

Purpose: The resolution/tick-rate of the high-resolution multimedia timer used for token-bucket refill.

Details: The token-bucket allocator runs inside cbUDPPacingHandler on a scheduled high-precision timer. This setting controls how often tokens (bytes) are refilled. A smaller tick size (e.g., 5 ms) ensures smoother, more fluid packet transmission over the wire, whereas a larger value leads to bulkier burst transmissions.

udp.tokenbucket.ticks

Syntax:  (set udp.tokenbucket.ticks 2)

Type: Integer (ticks multiplier)

Default:  2

Purpose: Specifies the depth of the Token Bucket bucket capacity.

Details: Configures the “burst capacity” of the pacing bucket as a multiple of bytes-per-tick. A setting of 2 means the sender can burst up to 2 ticks worth of data immediately if the channel was previously quiet, before throttling back down to the steady-state configured bandwidth limit.

udp.maxbandwidthbits

Syntax:  (set udp.maxbandwidthbits 1000000000)

Type: Integer (bits per second)

Default: 1000000000 (1 Gbps)

Purpose: The absolute physical ceiling of the network adapter.

Details: Used as a ceiling to clamp the Token Bucket's rate limits and prevent math operations from overflowing.

Continue to UDP Diagnostics and Telemetry.