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