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