xref: /freebsd/share/man/man4/tcp_rack.4 (revision c8e7f78a3d28ff6e6223ed136ada8e1e2f34965e)
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 December 17, 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 load the TCP stack as a module at boot time, place the following line in
34.Xr loader.conf 5 :
35.Bd -literal -offset indent
36tcp_rack_load="YES"
37.Ed
38.Pp
39To enable the TCP stack, place the following line in the
40.Xr sysctl.conf 5 :
41.Bd -literal -offset indent
42net.inet.tcp.functions_default=rack
43.Ed
44.Sh DESCRIPTION
45RACK-TLP uses per-segment transmit timestamps and selective
46acknowledgments (SACKs) and has two parts.
47Recent Acknowledgment (RACK) starts fast recovery quickly
48using time-based inferences derived from acknowledgment (ACK)
49feedback, and Tail Loss Probe (TLP) leverages RACK
50and sends a probe packet to trigger ACK feedback to avoid
51retransmission timeout (RTO) events.
52.Pp
53Compared to the widely used duplicate acknowledgment (DupAck)
54threshold approach, RACK-TLP detects losses more efficiently
55when there are application-limited flights of data, lost
56retransmissions, or data packet reordering events.
57.Pp
58It is intended to be an alternative to the
59DupAck threshold approach.
60.Sh MIB Variables
61The algorithm exposes the following scopes in the
62.Va net.inet.tcp.rack
63branch of the
64.Xr sysctl 3
65MIB:
66.Bl -tag -width indent
67.It Va net.inet.tcp.rack.misc
68Misc related controls
69.It Va net.inet.tcp.rack.features
70Feature controls
71.It Va net.inet.tcp.rack.measure
72Measure related controls
73.It Va net.inet.tcp.rack.timers
74Timer related controls
75.It Va net.inet.tcp.rack.tlp
76TLP and Rack related Controls
77.It Va net.inet.tcp.rack.timely
78Rack Timely RTT Controls
79.It Va net.inet.tcp.rack.hdwr_pacing
80Pacing related Controls
81.It Va net.inet.tcp.rack.pacing
82Pacing related Controls
83.It Va net.inet.tcp.rack.tp
84Rack tracepoint facility
85.It Va net.inet.tcp.rack.probertt
86ProbeRTT related Controls
87.It Va net.inet.tcp.rack.stats
88Rack Counters
89.It Va net.inet.tcp.rack.sack_attack
90Rack Sack Attack Counters and Controls
91.El
92.Pp
93Besides the variables within the above scopes the following
94variables are also exposed in the
95.Va net.inet.tcp.rack
96branch:
97.Bl -tag -width indent
98.It Va net.inet.tcp.rack.clear
99Clear counters
100.It Va net.inet.tcp.rack.opts
101RACK Option Stats
102.It Va net.inet.tcp.rack.outsize
103MSS send sizes
104.It Va net.inet.tcp.rack.req_measure_cnt
105If doing dynamic pacing, how many measurements
106must be in before we start pacing?
107.It Va net.inet.tcp.rack.use_pacing
108If set we use pacing, if clear we use only the original burst mitigation
109.It Va net.inet.tcp.rack.rate_sample_method
110What method should we use for rate sampling 0=high, 1=low
111.El
112.Sh SEE ALSO
113.Xr cc_chd 4 ,
114.Xr cc_cubic 4 ,
115.Xr cc_hd 4 ,
116.Xr cc_htcp 4 ,
117.Xr cc_newreno 4 ,
118.Xr cc_vegas 4 ,
119.Xr h_ertt 4 ,
120.Xr mod_cc 4 ,
121.Xr tcp 4 ,
122.Xr tcp_bbr 4 ,
123.Xr mod_cc 9
124.Rs
125.%A "Neal Cardwell"
126.%A "Yuchung Cheng"
127.%A "Nandita Dukkipat"
128.%A "Priyaranjan Jha"
129.%T "The RACK-TLP Loss Detection Algorithm for TCP"
130.%O "RFC 8985"
131.%D "February 2021"
132.Re
133.Rs
134.%A "Ahmed M. Abdelmoniem"
135.%A "Brahim Bensaou"
136.%T "T-RACKs: A Faster Recovery Mechanism for TCP in Data Center Networks"
137.%O "https://arxiv.org/abs/2102.07477"
138.%D "February 2021"
139.Re
140.Sh HISTORY
141The
142.Nm
143congestion control module first appeared in
144.Fx 13.0 .
145.Sh AUTHORS
146.An -nosplit
147The
148.Nm
149congestion control module was written by
150.An Randall Stewart Aq Mt rrs@FreeBSD.org
151and sponsored by Netflix, Inc.
152This manual page was written by
153.An Gordon Bergling Aq Mt gbe@FreeBSD.org .
154