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:
(setsetting-namevalue)
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.