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