home | help
TCP_RACK(4)		     Kernel Interfaces Manual		     TCP_RACK(4)

NAME
     tcp_rack -- TCP RACK-TLP Loss Detection Algorithm for TCP

SYNOPSIS
     To use this TCP stack, place the following line in the kernel configuration
     file:

	   options TCPHPTS

     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 recov-
     ery  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 ap-
     proach, RACK-TLP detects losses more efficiently when  there  are	applica-
     tion-limited flights of data, lost retransmissions, or data packet reorder-
     ing 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 miti-
	     gation

     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 Dukkipat, and  Priyaranjan  Jha,  The
     RACK-TLP Loss Detection Algorithm for TCP, February 2021, RFC 8985.

     Ahmed  M. Abdelmoniem and Brahim Bensaou, T-RACKs: A Faster Recovery Mecha-
     nism   for    TCP	  in	Data	Center	  Networks,    February    2021,
     https://arxiv.org/abs/2102.07477.

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

FreeBSD 14.0			 March 19, 2023 		     TCP_RACK(4)

home | help