Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Server configuration

The Server reads its settings from built-in defaults, then a TOML file (udpstp server --config FILE), then the command line, each replacing the one before. This page is generated from the settings’ own documentation and from udpstp server --print-config, which prints the effective settings as TOML and exits.

Defaults

With no file and no options, --print-config prints:

listen = []
port = 24601
allow_unauthenticated = false
checksum = false
jumbo = true
traditional_mtu = false
server_mtu = 1500
ephemeral_ports = "49152-65535"
delay_var_statistic = "maximum"
tests_per_source = 1
max_test_connections = 256
test_connections_per_test = 24
max_test_share = 50
require_max_bandwidth = false
troubleshooting = false
unverified_setups_per_second = 20000
source_setup_burst = 48
source_setups_per_second = 5
key_setup_burst = 1000
key_setups_per_second = 1000
allowed_dscp = [0]
max_start_row = 100
quota_period = 3600
socket_buffer_size = 2097152
dont_fragment = true
log_format = "human"
address_privacy = "full"
statistics_interval = 60

A setting shown as “none” is absent by default and printed only when set.

Settings

SettingDefaultMeaning
listen[]The addresses the Server listens on for Setup Requests; empty, the IPv4 and IPv6 wildcards (IPv6 if the host has it). A listener on a specific address never sees multicast or broadcast Setup Requests.
port24601The UDP port the Server listens on for Setup Requests.
allow_unauthenticatedfalseServe unauthenticated Tests too (not conformant to RFC 9946).
checksumfalseFill the header checksum and verify it when populated (RFC 9946 §5.6).
jumbotrueCHSR_JUMBO_STATUS: rows above 1 Gbps may use packets up to 9000 bytes (RFC 9946 §6.1). Clients must ask for the same.
traditional_mtufalseCHSR_TRADITIONAL_MTU: packets may be 1500 bytes, not 1250, up to 1 Gbps too. Clients must ask for the same.
server_mtu1500The Server MTU: the largest IP packet the Server sends, in bytes, 1280 or more (9000 at most is used). Jumbo rows keep their rates with more, smaller packets below 9000.
ephemeral_ports"49152-65535"The Ephemeral Ports Test Connections' sockets are bound to, as FIRST-LAST, picked at random: the Server's own range, not the OS's ephemeral port range. It holds at least max_test_connections plus the Unactivated Test Connection share.
delay_var_statistic"maximum"Which statistic of a Trial Interval's one-way delay variation classifies it for the Load Rate Adjustment Algorithms.
tests_per_source1How many Tests may run at once from one Source (an IPv4 address or an IPv6 /64). RFC 9946 §4.2 says 1; more, for Clients behind carrier-grade NAT, departs from it.
max_test_connections256How many Test Connections activated Tests may reserve at once.
test_connections_per_test24How many Test Connections one Test may have over its life.
max_unactivated_test_connectionsnoneHow many Test Connections may be admitted but not yet activated at once, separately from the global cap; absent, half of max_test_connections, but at least test_connections_per_test.
admitted_rate_capnoneThe most maxBandwidth admitted at once in each direction, in Mbps; no cap when absent.
max_test_share50The most of admitted_rate_cap, in percent, that one Test without an Operator Key may state, all its Test Connections together.
require_max_bandwidthfalseRefuse Tests that state no maxBandwidth.
troubleshootingfalseAnswer authentication failures of Setup Requests with the reason instead of silence, to debug Clients. Off by default.
unverified_setups_per_second20000How many Setup Requests a second may reach authentication; the rest are dropped silently.
source_setup_burst48How many authentic Setup Requests one Source may send at once; at least test_connections_per_test.
source_setups_per_second5How many more a Source may send each second after its burst.
key_setup_burst1000How many authentic Setup Requests one Key Table row may send at once, Unauthenticated Mode counting as one; at least test_connections_per_test.
key_setups_per_second1000How many more a Key Table row may send each second after its burst.
allowed_dscp[0]The DSCPs, 0 to 63, a Test without an Operator Key may mark its traffic with; another is coerced to 0. Only 0 by default, so a Consumer can't put the load into a priority class.
operator_allowed_dscpnoneThe DSCPs a Test with an Operator Key may mark its traffic with; absent, all but network control (48 and 56).
max_start_row100The highest Sending Rate Table row a Test without an Operator Key may start its search at; a higher one is coerced to it. Operator Keys are exempt.
quota_period3600The Quota Period, in seconds: what Quotas are counted over.
source_tests_per_quota_periodnoneEach Source's Quota of Tests per Quota Period; absent, none. Operator Keys are exempt.
source_bytes_per_quota_periodnoneEach Source's Quota of load bytes per Quota Period, both directions; absent, none. Operator Keys are exempt.
socket_buffer_size2097152Each Test Connection's receive and send buffer in its Data Phase, in bytes, within the OS's limits.
dont_fragmenttrueSet the Don't Fragment bit on test traffic (RFC 9946 §5: it SHOULD be set unless fragmentation is being measured).
max_hopsnoneMaxHops: the IPv4 TTL and IPv6 hop limit of test traffic, 1 to 255, set from the expected path length (RFC 9946 §10). Absent, 64, with a warning.
log_format"human"The log's format on stdout: human or json, one object a line.
log_filenoneWhere the log goes instead of stdout, with the startup's errors and warnings: a new file each day, named from this path with the date before its extension (server.log gives server.2026-10-01.log), the last 14 kept. A Windows service has no stdout, so it needs one.
address_privacy"full"How the log shows client addresses: full, pseudonymize or truncate (to the IPv4 /24 or IPv6 /48).
address_privacy_key_filenoneThe pseudonym key, as hexadecimal digits (16 bytes or more), for address_privacy = "pseudonymize".
statistics_interval60How often the log reports the Server's counters, in seconds, up to a day; 0 never does.
key_filenoneThe key file: a TOML Key Table if its name ends in .toml, else an OB-UDPST udpst.keys file. A relative path is taken from the current directory.

Hosting a Server explains the settings in use, and Command line lists the option for each.