TCP_RACK(4)
π TCP_RACK(4) β RACK-TLP but make it make sense β¨
okay so bestie, this is the manual page for tcp_rack(4): the TCP RACK-TLP Loss Detection Algorithm for TCP. Yes, manual name is right there near the top, we're doing it cute today. π«Ά
π NAME π
tcp_rack β TCP RACK-TLP Loss Detection Algorithm for TCP.
β¨ SYNOPSIS β¨
Need to load the TCP stack as a module at boot time? Put this line in loader.conf(5):
tcp_rack_load="YES"
Need to enable the TCP stack? Put this line in sysctl.conf(5):
net.inet.tcp.functions_default=rack
π¦ DESCRIPTION π¦
RACK-TLP uses per-segment transmit timestamps and selective acknowledgments (SACKs), and it has two parts. Recent Acknowledgment (RACK) starts fast recovery quickly using time-based inferences derived from acknowledgment (ACK) feedback. Tail Loss Probe (TLP) leverages RACK and sends a probe packet to trigger ACK feedback to avoid retransmission timeout (RTO) events. π
Compared to the widely used duplicate acknowledgment (DupAck) threshold approach, RACK-TLP detects losses more efficiently when there are application-limited flights of data, lost retransmissions, or data packet reordering events.
It is intended to be an alternative to the DupAck threshold approach. No cap.
π§ MIB Variables π§
The algorithm exposes the following scopes in the net.inet.tcp.rack branch of the sysctl(3) MIB:
net.inet.tcp.rack.miscβ misc related controls, aka the little random-knob corner.net.inet.tcp.rack.featuresβ feature controls.net.inet.tcp.rack.measureβ measure related controls.net.inet.tcp.rack.timersβ timer related controls.net.inet.tcp.rack.tlpβ TLP and Rack related Controls.net.inet.tcp.rack.timelyβ Rack Timely RTT Controls.net.inet.tcp.rack.hdwr_pacingβ Pacing related Controls.net.inet.tcp.rack.pacingβ Pacing related Controls.net.inet.tcp.rack.tpβ Rack tracepoint facility.net.inet.tcp.rack.proberttβ ProbeRTT related Controls.net.inet.tcp.rack.statsβ Rack Counters.net.inet.tcp.rack.sack_attackβ Rack Sack Attack Counters and Controls.
Besides the variables within the above scopes, the following variables are also exposed in the net.inet.tcp.rack branch:
net.inet.tcp.rack.clearβ clear counters.net.inet.tcp.rack.optsβ RACK Option Stats.net.inet.tcp.rack.outsizeβ MSS send sizes.net.inet.tcp.rack.req_measure_cntβ if doing dynamic pacing, how many measurements must be in before we start pacing?net.inet.tcp.rack.use_pacingβ if set we use pacing, if clear we use only the original burst mitigation.net.inet.tcp.rack.rate_sample_methodβ what method should we use for rate sampling?0=high,1=low.
π SEE ALSO π
cc_chd(4),cc_cubic(4),cc_hd(4),cc_htcp(4),cc_newreno(4),cc_vegas(4),h_ertt(4),mod_cc(4),tcp(4),tcp_bbr(4),mod_cc(9)β go read these too, bestie.- Neal Cardwell, Yuchung Cheng, Nandita Dukkipati, and Priyaranjan Jha, The RACK-TLP Loss Detection Algorithm for TCP, February 2021, RFC 8985.
- M. Allman, V. Paxson, and E. Blanton, TCP Congestion Control, September 2009, RFC 5681.
- M. Mathis, Nandita Dukkipati, and Yuchung Cheng, Proportional Rate Reduction for TCP, May 2013, RFC 6937.
π HISTORY π
The tcp_rack congestion control module first appeared in FreeBSD 13.0. β¨
π AUTHORS π
The tcp_rack congestion control module was written by Randall Stewart <rrs@FreeBSD.org> and sponsored by Netflix, Inc. This manual page was written by Gordon Bergling <gbe@FreeBSD.org>. Give them flowers. π
Debian, March 18, 2024 β that's the source/version and date, bestie. Bye! π
π¦ where this page comes from
- freebsd 14.5: base 14.5
- freebsd 15.1: base 15.1
- nixpkgs unstable: source
- π the page's license: BSD-2-Clause
- Copyright (c) 2022, Gordon Bergling <gbe@FreeBSD.org>
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms