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