tail head cat sleep
QR code linking to this page

Manual Pages  — TCP_RACK

NAME

tcp_rack – TCP RACK-TLP Loss Detection Algorithm for TCP

CONTENTS

SYNOPSIS

To load the TCP stack as a module at boot time, place the following line in loader.conf(5):
tcp_rack_load="YES"

To enable the TCP stack, place the following line in the sysctl.conf(5):

net.inet.tcp.functions_default=rack

DESCRIPTION

RACK-TLP uses per-segment transmit timestamps and selective acknowledgments (SACKs) and has two parts. Recent Acknowledgment (RACK) starts fast recovery quickly using time-based inferences derived from acknowledgment (ACK) feedback, and 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.

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
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)

Neal Cardwell, Yuchung Cheng, Nandita Dukkipati, Priyaranjan Jha, RFC 8985, The RACK-TLP Loss Detection Algorithm for TCP, February 2021.

M. Allman, V. Paxson, E. Blanton, RFC 5681, TCP Congestion Control, September 2009.

M. Mathis, Nandita Dukkipati, Yuchung Cheng, RFC 6937, Proportional Rate Reduction for TCP, May 2013.

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 <Mt rrs@FreeBSD.org> and sponsored by Netflix, Inc. This manual page was written by Gordon Bergling <Mt gbe@FreeBSD.org>.

TCP_RACK (4) March 18, 2024

tail head cat sleep
QR code linking to this page


Please direct any comments about this manual page service to Ben Bullock. Privacy policy.

… one of the main causes of the fall of the Roman Empire was that, lacking zero, they had no way to indicate successful termination of their C programs.
— Robert Firth