xref: /freebsd/share/man/man4/tcp_rack.4 (revision bdbc05bea995d73465def1ab31bb3b2b37b37a93)
1*bdbc05beSGordon Bergling.\" SPDX-License-Identifier: BSD-2-Clause
2*bdbc05beSGordon Bergling.\"
3*bdbc05beSGordon Bergling.\" Copyright (c) 2022, Gordon Bergling <gbe@FreeBSD.org>
4*bdbc05beSGordon Bergling.\"
5*bdbc05beSGordon Bergling.\" Redistribution and use in source and binary forms, with or without
6*bdbc05beSGordon Bergling.\" modification, are permitted provided that the following conditions
7*bdbc05beSGordon Bergling.\" are met:
8*bdbc05beSGordon Bergling.\" 1. Redistributions of source code must retain the above copyright
9*bdbc05beSGordon Bergling.\"    notice, this list of conditions and the following disclaimer.
10*bdbc05beSGordon Bergling.\" 2. Redistributions in binary form must reproduce the above copyright
11*bdbc05beSGordon Bergling.\"    notice, this list of conditions and the following disclaimer in the
12*bdbc05beSGordon Bergling.\"    documentation and/or other materials provided with the distribution.
13*bdbc05beSGordon Bergling.\"
14*bdbc05beSGordon Bergling.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15*bdbc05beSGordon Bergling.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16*bdbc05beSGordon Bergling.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17*bdbc05beSGordon Bergling.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
18*bdbc05beSGordon Bergling.\" ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19*bdbc05beSGordon Bergling.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20*bdbc05beSGordon Bergling.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21*bdbc05beSGordon Bergling.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22*bdbc05beSGordon Bergling.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23*bdbc05beSGordon Bergling.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24*bdbc05beSGordon Bergling.\" SUCH DAMAGE.
25*bdbc05beSGordon Bergling.\"
26*bdbc05beSGordon Bergling.Dd November 7, 2022
27*bdbc05beSGordon Bergling.Dt TCP_RACK 4
28*bdbc05beSGordon Bergling.Os
29*bdbc05beSGordon Bergling.Sh NAME
30*bdbc05beSGordon Bergling.Nm tcp_rack
31*bdbc05beSGordon Bergling.Nd TCP RACK-TLP Loss Detection Algorithm for TCP
32*bdbc05beSGordon Bergling.Sh SYNOPSIS
33*bdbc05beSGordon BerglingTo use this TCP stack, place the following line in the
34*bdbc05beSGordon Berglingkernel configuration file:
35*bdbc05beSGordon Bergling.Bd -ragged -offset indent
36*bdbc05beSGordon Bergling.Cd "options TCPHPTS"
37*bdbc05beSGordon Bergling.Ed
38*bdbc05beSGordon Bergling.Pp
39*bdbc05beSGordon BerglingTo load the TCP stack as a module at boot time, place the following line in
40*bdbc05beSGordon Bergling.Xr loader.conf 5 :
41*bdbc05beSGordon Bergling.Bd -literal -offset indent
42*bdbc05beSGordon Berglingtcp_rack_load="YES"
43*bdbc05beSGordon Bergling.Ed
44*bdbc05beSGordon Bergling.Pp
45*bdbc05beSGordon BerglingTo enable the TCP stack, place the following line in the
46*bdbc05beSGordon Bergling.Xr sysctl.conf 5 :
47*bdbc05beSGordon Bergling.Bd -literal -offset indent
48*bdbc05beSGordon Berglingnet.inet.tcp.functions_default=rack
49*bdbc05beSGordon Bergling.Ed
50*bdbc05beSGordon Bergling.Sh DESCRIPTION
51*bdbc05beSGordon BerglingRACK-TLP uses per-segment transmit timestamps and selective
52*bdbc05beSGordon Berglingacknowledgments (SACKs) and has two parts.
53*bdbc05beSGordon BerglingRecent Acknowledgment (RACK) starts fast recovery quickly
54*bdbc05beSGordon Berglingusing time-based inferences derived from acknowledgment (ACK)
55*bdbc05beSGordon Berglingfeedback, and Tail Loss Probe (TLP) leverages RACK
56*bdbc05beSGordon Berglingand sends a probe packet to trigger ACK feedback to avoid
57*bdbc05beSGordon Berglingretransmission timeout (RTO) events.
58*bdbc05beSGordon Bergling.Pp
59*bdbc05beSGordon BerglingCompared to the widely used duplicate acknowledgment (DupAck)
60*bdbc05beSGordon Berglingthreshold approach, RACK-TLP detects losses more efficiently
61*bdbc05beSGordon Berglingwhen there are application-limited flights of data, lost
62*bdbc05beSGordon Berglingretransmissions, or data packet reordering events.
63*bdbc05beSGordon Bergling.Pp
64*bdbc05beSGordon BerglingIt is intended to be an alternative to the
65*bdbc05beSGordon BerglingDupAck threshold approach.
66*bdbc05beSGordon Bergling.Sh MIB Variables
67*bdbc05beSGordon BerglingThe algorithm exposes the following scopes in the
68*bdbc05beSGordon Bergling.Va net.inet.tcp.rack
69*bdbc05beSGordon Berglingbranch of the
70*bdbc05beSGordon Bergling.Xr sysctl 3
71*bdbc05beSGordon BerglingMIB:
72*bdbc05beSGordon Bergling.Bl -tag -width indent
73*bdbc05beSGordon Bergling.It Va net.inet.tcp.rack.misc
74*bdbc05beSGordon BerglingMisc related controls
75*bdbc05beSGordon Bergling.It Va net.inet.tcp.rack.features
76*bdbc05beSGordon BerglingFeature controls
77*bdbc05beSGordon Bergling.It Va net.inet.tcp.rack.measure
78*bdbc05beSGordon BerglingMeasure related controls
79*bdbc05beSGordon Bergling.It Va net.inet.tcp.rack.timers
80*bdbc05beSGordon BerglingTimer related controls
81*bdbc05beSGordon Bergling.It Va net.inet.tcp.rack.tlp
82*bdbc05beSGordon BerglingTLP and Rack related Controls
83*bdbc05beSGordon Bergling.It Va net.inet.tcp.rack.timely
84*bdbc05beSGordon BerglingRack Timely RTT Controls
85*bdbc05beSGordon Bergling.It Va net.inet.tcp.rack.hdwr_pacing
86*bdbc05beSGordon BerglingPacing related Controls
87*bdbc05beSGordon Bergling.It Va net.inet.tcp.rack.pacing
88*bdbc05beSGordon BerglingPacing related Controls
89*bdbc05beSGordon Bergling.It Va net.inet.tcp.rack.tp
90*bdbc05beSGordon BerglingRack tracepoint facility
91*bdbc05beSGordon Bergling.It Va net.inet.tcp.rack.probertt
92*bdbc05beSGordon BerglingProbeRTT related Controls
93*bdbc05beSGordon Bergling.It Va net.inet.tcp.rack.stats
94*bdbc05beSGordon BerglingRack Counters
95*bdbc05beSGordon Bergling.It Va net.inet.tcp.rack.sack_attack
96*bdbc05beSGordon BerglingRack Sack Attack Counters and Controls
97*bdbc05beSGordon Bergling.El
98*bdbc05beSGordon Bergling.Pp
99*bdbc05beSGordon BerglingBesides the variables within the above scopes the following
100*bdbc05beSGordon Berglingvariables are also exposed in the
101*bdbc05beSGordon Bergling.Va net.inet.tcp.rack
102*bdbc05beSGordon Berglingbranch:
103*bdbc05beSGordon Bergling.Bl -tag -width indent
104*bdbc05beSGordon Bergling.It Va net.inet.tcp.rack.clear
105*bdbc05beSGordon BerglingClear counters
106*bdbc05beSGordon Bergling.It Va net.inet.tcp.rack.opts
107*bdbc05beSGordon BerglingRACK Option Stats
108*bdbc05beSGordon Bergling.It Va net.inet.tcp.rack.outsize
109*bdbc05beSGordon BerglingMSS send sizes
110*bdbc05beSGordon Bergling.It Va net.inet.tcp.rack.req_measure_cnt
111*bdbc05beSGordon BerglingIf doing dynamic pacing, how many measurements
112*bdbc05beSGordon Berglingmust be in before we start pacing?
113*bdbc05beSGordon Bergling.It Va net.inet.tcp.rack.use_pacing
114*bdbc05beSGordon BerglingIf set we use pacing, if clear we use only the original burst mitigation
115*bdbc05beSGordon Bergling.It Va net.inet.tcp.rack.rate_sample_method
116*bdbc05beSGordon BerglingWhat method should we use for rate sampling 0=high, 1=low
117*bdbc05beSGordon Bergling.El
118*bdbc05beSGordon Bergling.Sh SEE ALSO
119*bdbc05beSGordon Bergling.Xr cc_chd 4 ,
120*bdbc05beSGordon Bergling.Xr cc_cubic 4 ,
121*bdbc05beSGordon Bergling.Xr cc_hd 4 ,
122*bdbc05beSGordon Bergling.Xr cc_htcp 4 ,
123*bdbc05beSGordon Bergling.Xr cc_newreno 4 ,
124*bdbc05beSGordon Bergling.Xr cc_vegas 4 ,
125*bdbc05beSGordon Bergling.Xr h_ertt 4 ,
126*bdbc05beSGordon Bergling.Xr mod_cc 4 ,
127*bdbc05beSGordon Bergling.Xr tcp 4 ,
128*bdbc05beSGordon Bergling.Xr tcp_bbr 4 ,
129*bdbc05beSGordon Bergling.Xr mod_cc 9
130*bdbc05beSGordon Bergling.Rs
131*bdbc05beSGordon Bergling.%A "Neal Cardwell"
132*bdbc05beSGordon Bergling.%A "Yuchung Cheng"
133*bdbc05beSGordon Bergling.%A "Nandita Dukkipat"
134*bdbc05beSGordon Bergling.%A "Priyaranjan Jha"
135*bdbc05beSGordon Bergling.%T "The RACK-TLP Loss Detection Algorithm for TCP"
136*bdbc05beSGordon Bergling.%O "RFC 8985"
137*bdbc05beSGordon Bergling.%D "February 2021"
138*bdbc05beSGordon Bergling.Re
139*bdbc05beSGordon Bergling.Rs
140*bdbc05beSGordon Bergling.%A "Ahmed M. Abdelmoniem"
141*bdbc05beSGordon Bergling.%A "Brahim Bensaou"
142*bdbc05beSGordon Bergling.%T "T-RACKs: A Faster Recovery Mechanism for TCP in Data Center Networks"
143*bdbc05beSGordon Bergling.%O "https://arxiv.org/pdf/2102.07477.pdf"
144*bdbc05beSGordon Bergling.%D "February 2021"
145*bdbc05beSGordon Bergling.Re
146*bdbc05beSGordon Bergling.Sh HISTORY
147*bdbc05beSGordon BerglingThe
148*bdbc05beSGordon Bergling.Nm
149*bdbc05beSGordon Berglingcongestion control module first appeared in
150*bdbc05beSGordon Bergling.Fx 13.0 .
151*bdbc05beSGordon Bergling.Sh AUTHORS
152*bdbc05beSGordon Bergling.An -nosplit
153*bdbc05beSGordon BerglingThe
154*bdbc05beSGordon Bergling.Nm
155*bdbc05beSGordon Berglingcongestion control module was written by
156*bdbc05beSGordon Bergling.An Randall Stewart Aq Mt rrs@FreeBSD.org
157*bdbc05beSGordon Berglingand sponsored by Netflix, Inc.
158*bdbc05beSGordon BerglingThis manual page was written by
159*bdbc05beSGordon Bergling.An Gordon Bergling Aq Mt gbe@FreeBSD.org .
160