xref: /freebsd-src/share/man/man4/tcp_bbr.4 (revision 4fb5eda6493c3dada695efbfad0a44d204b7fc5e)
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