TCP_RACK(4)

πŸ“¦ version 15.1, in freebsd 14.5, freebsd 15.1, nixpkgs unstable

πŸ’… 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 πŸ’…

🌈 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