1fb929f78SGordon Bergling.\" 2bdbc05beSGordon Bergling.\" Copyright (c) 2020, Gordon Bergling <gbe@FreeBSD.org> 3fb929f78SGordon Bergling.\" 4fb929f78SGordon Bergling.\" Redistribution and use in source and binary forms, with or without 5fb929f78SGordon Bergling.\" modification, are permitted provided that the following conditions 6fb929f78SGordon Bergling.\" are met: 7fb929f78SGordon Bergling.\" 1. Redistributions of source code must retain the above copyright 8fb929f78SGordon Bergling.\" notice, this list of conditions and the following disclaimer. 9fb929f78SGordon Bergling.\" 2. Redistributions in binary form must reproduce the above copyright 10fb929f78SGordon Bergling.\" notice, this list of conditions and the following disclaimer in the 11fb929f78SGordon Bergling.\" documentation and/or other materials provided with the distribution. 12fb929f78SGordon Bergling.\" 13fb929f78SGordon Bergling.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 14fb929f78SGordon Bergling.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 15fb929f78SGordon Bergling.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 16fb929f78SGordon Bergling.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR 17fb929f78SGordon Bergling.\" ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 18fb929f78SGordon Bergling.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 19fb929f78SGordon Bergling.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 20fb929f78SGordon Bergling.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 21fb929f78SGordon Bergling.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 22fb929f78SGordon Bergling.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 23fb929f78SGordon Bergling.\" SUCH DAMAGE. 24fb929f78SGordon Bergling.\" 25*4fb5eda6SGordon Bergling.Dd December 17, 2023 26fb929f78SGordon Bergling.Dt TCP_BBR 4 27fb929f78SGordon Bergling.Os 28fb929f78SGordon Bergling.Sh NAME 29fb929f78SGordon Bergling.Nm tcp_bbr 30fb929f78SGordon Bergling.Nd TCP Bottleneck Bandwidth and Round-Trip Time Algorithm 31fb929f78SGordon Bergling.Sh SYNOPSIS 32fb929f78SGordon BerglingTo load the driver as a module at boot time, place the following line in 33fb929f78SGordon Bergling.Xr loader.conf 5 : 34fb929f78SGordon Bergling.Bd -literal -offset indent 35fb929f78SGordon Berglingtcp_bbr_load="YES" 36fb929f78SGordon Bergling.Ed 37fb929f78SGordon Bergling.Pp 38fb929f78SGordon BerglingTo enable the TCP stack you must place the following line in the 39fb929f78SGordon Bergling.Xr sysctl.conf 5 : 40fb929f78SGordon Bergling.Bd -literal -offset indent 41fb929f78SGordon Berglingnet.inet.tcp.functions_default=bbr 42fb929f78SGordon Bergling.Ed 43fb929f78SGordon Bergling.Sh DESCRIPTION 44fb929f78SGordon BerglingBottleneck bandwidth and round-trip time (BBR) is a congestion control algorithm which 45fb929f78SGordon Berglingseeks high throughput with a small queue by probing BW and RTT. 46fb929f78SGordon BerglingIt is a round-up redesign of congestion control, which is not loss-based, delay-based, 47fb929f78SGordon BerglingECN-based or AIMD-based. 48fb929f78SGordon Bergling.Pp 49fb929f78SGordon BerglingThe core design of BBR is about creating a model graph of the network path by 50fb929f78SGordon Berglingestimating the maximum BW and minimum RTT on each ACK. 51fb929f78SGordon Bergling.Sh MIB Variables 52fb929f78SGordon BerglingThe algorithm exposes the following scopes in the 53fb929f78SGordon Bergling.Va net.inet.tcp.bbr 54fb929f78SGordon Berglingbranch of the 55fb929f78SGordon Bergling.Xr sysctl 3 56fb929f78SGordon BerglingMIB: 57fb929f78SGordon Bergling.Bl -tag -width ".Va exp_backoff_scale" 58fb929f78SGordon Bergling.It Va cwnd 59b3df222eSGordon BerglingCwnd controls, for example "target cwnd rtt measurement" and "BBR initial window". 60fb929f78SGordon Bergling.It Va measure 61fb929f78SGordon BerglingMeasurement controls. 62fb929f78SGordon Bergling.It Va pacing 63fb929f78SGordon BerglingConnection pacing controls. 64fb929f78SGordon Bergling.It Va policer 65fb929f78SGordon BerglingPolicer controls, for example "false detection threshold" and "loss threshold". 66fb929f78SGordon Bergling.It Va probertt 67fb929f78SGordon BerglingProbe RTT controls. 68fb929f78SGordon Bergling.It Va startup 69fb929f78SGordon BerglingStartup controls. 70fb929f78SGordon Bergling.It Va states 71fb929f78SGordon BerglingState controls. 72fb929f78SGordon Bergling.It Va timeout 73fb929f78SGordon BerglingTime out controls. 74fb929f78SGordon Bergling.El 75fb929f78SGordon Bergling.Pp 76fb929f78SGordon BerglingBesides the variables within the above scopes the following 77fb929f78SGordon Berglingvariables are also exposed in the 78fb929f78SGordon Bergling.Va net.inet.tcp.bbr 79fb929f78SGordon Berglingbranch: 80fb929f78SGordon Bergling.Bl -tag -width ".Va exp_backoff_scale" 81fb929f78SGordon Bergling.It Va clrlost 82fb929f78SGordon BerglingClear lost counters. 83fb929f78SGordon Bergling.It Va software_pacing 84fb929f78SGordon BerglingTotal number of software paced flows. 85fb929f78SGordon Bergling.It Va hdwr_pacing 86fb929f78SGordon BerglingTotal number of hardware paced flows. 87fb929f78SGordon Bergling.It Va enob_no_hdwr_pacing 88fb929f78SGordon BerglingTotal number of enobufs for non-hardware paced flows. 89fb929f78SGordon Bergling.It Va enob_hdwr_pacing 90fb929f78SGordon BerglingTotal number of enobufs for hardware paced flows. 91fb929f78SGordon Bergling.It Va rtt_tlp_thresh 92fb929f78SGordon BerglingWhat divisor for TLP rtt/retran will be added (1=rtt, 2=1/2 rtt etc). 93fb929f78SGordon Bergling.It Va reorder_fade 94fb929f78SGordon BerglingDoes reorder detection fade, if so how many ms (0 means never). 95fb929f78SGordon Bergling.It Va reorder_thresh 96fb929f78SGordon BerglingWhat factor for rack will be added when seeing reordering (shift right). 97fb929f78SGordon Bergling.It Va bb_verbose 98fb929f78SGordon BerglingShould BBR black box logging be verbose. 99fb929f78SGordon Bergling.It Va sblklimit 100fb929f78SGordon BerglingWhen do we start ignoring small sack blocks. 101fb929f78SGordon Bergling.It Va resend_use_tso 102fb929f78SGordon BerglingCan resends use TSO? 103fb929f78SGordon Bergling.It Va data_after_close 104fb929f78SGordon BerglingDo we hold off sending a RST until all pending data is ack'd. 105fb929f78SGordon Bergling.It Va kill_paceout 106fb929f78SGordon BerglingWhen we hit this many errors in a row, kill the session? 107fb929f78SGordon Bergling.It Va error_paceout 108fb929f78SGordon BerglingWhen we hit an error what is the min to pace out in usec's? 109fb929f78SGordon Bergling.It Va cheat_rxt 110fb929f78SGordon BerglingDo we burst 1ms between sends on retransmissions (like rack)? 111fb929f78SGordon Bergling.It Va minrto 112fb929f78SGordon BerglingMinimum RTO in ms. 113fb929f78SGordon Bergling.El 114fb929f78SGordon Bergling.Sh SEE ALSO 115fb929f78SGordon Bergling.Xr cc_chd 4 , 116fb929f78SGordon Bergling.Xr cc_cubic 4 , 117fb929f78SGordon Bergling.Xr cc_hd 4 , 118fb929f78SGordon Bergling.Xr cc_htcp 4 , 119fb929f78SGordon Bergling.Xr cc_newreno 4 , 120fb929f78SGordon Bergling.Xr cc_vegas 4 , 121fb929f78SGordon Bergling.Xr h_ertt 4 , 122fb929f78SGordon Bergling.Xr mod_cc 4 , 123fb929f78SGordon Bergling.Xr tcp 4 , 124bdbc05beSGordon Bergling.Xr tcp_rack 4 , 125fb929f78SGordon Bergling.Xr mod_cc 9 126fb929f78SGordon Bergling.Rs 127fb929f78SGordon Bergling.%A "Neal Cardwell" 128fb929f78SGordon Bergling.%A "Yuchung Cheng" 129fb929f78SGordon Bergling.%A "Stephen Gunn" 130fb929f78SGordon Bergling.%A "Soheil Hassas Yeganeh" 131fb929f78SGordon Bergling.%A "Van Jacobson" 132fb929f78SGordon Bergling.%T "BBR: Congestion-Based Congestion Control" 133fb929f78SGordon Bergling.%J "ACM Queue, Vol. 14" 134fb929f78SGordon Bergling.%D "September / October 2016" 135fb929f78SGordon Bergling.Re 136fb929f78SGordon Bergling.Rs 137fb929f78SGordon Bergling.%A "Dominik Scholz" 138fb929f78SGordon Bergling.%A "Benedikt Jaeger" 139fb929f78SGordon Bergling.%A "Lukas Schwaighofer" 140fb929f78SGordon Bergling.%A "Daniel Raumer" 141fb929f78SGordon Bergling.%A "Fabien Geyer" 142fb929f78SGordon Bergling.%A "Georg Carle" 143fb929f78SGordon Bergling.%T "Towards a Deeper Understanding of TCP BBR Congestion Control" 144fb929f78SGordon Bergling.%J "IFIP Networking 2018" 145fb929f78SGordon Bergling.%D "May 2018" 146fb929f78SGordon Bergling.%U "http://www.net.in.tum.de/fileadmin/bibtex/publications/papers/IFIP-Networking-2018-TCP-BBR.pdf" 147fb929f78SGordon Bergling.Re 148fb929f78SGordon Bergling.Sh HISTORY 149fb929f78SGordon BerglingThe 150fb929f78SGordon Bergling.Nm 151fb929f78SGordon Berglingcongestion control module first appeared in 152fb929f78SGordon Bergling.Fx 13.0 . 153fb929f78SGordon Bergling.Sh AUTHORS 154fb929f78SGordon Bergling.An -nosplit 155fb929f78SGordon BerglingThe 156fb929f78SGordon Bergling.Nm 157fb929f78SGordon Berglingcongestion control module was written by 158fb929f78SGordon Bergling.An Randall Stewart Aq Mt rrs@FreeBSD.org 159fb929f78SGordon Berglingand sponsored by Netflix, Inc. 160fb929f78SGordon BerglingThis manual page was written by 161fb929f78SGordon Bergling.An Gordon Bergling Aq Mt gbe@FreeBSD.org . 162