xref: /freebsd/share/man/man4/cc_vegas.4 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
129f269dcSLawrence Stewart.\"
229f269dcSLawrence Stewart.\" Copyright (c) 2010-2011 The FreeBSD Foundation
329f269dcSLawrence Stewart.\"
429f269dcSLawrence Stewart.\" This documentation was written at the Centre for Advanced Internet
5891b8ed4SLawrence Stewart.\" Architectures, Swinburne University of Technology, Melbourne, Australia by
6891b8ed4SLawrence Stewart.\" David Hayes under sponsorship from the FreeBSD Foundation.
729f269dcSLawrence Stewart.\"
829f269dcSLawrence Stewart.\" Redistribution and use in source and binary forms, with or without
929f269dcSLawrence Stewart.\" modification, are permitted provided that the following conditions
1029f269dcSLawrence Stewart.\" are met:
1129f269dcSLawrence Stewart.\" 1. Redistributions of source code must retain the above copyright
1229f269dcSLawrence Stewart.\"    notice, this list of conditions and the following disclaimer.
1329f269dcSLawrence Stewart.\" 2. Redistributions in binary form must reproduce the above copyright
1429f269dcSLawrence Stewart.\"    notice, this list of conditions and the following disclaimer in the
1529f269dcSLawrence Stewart.\"    documentation and/or other materials provided with the distribution.
1629f269dcSLawrence Stewart.\"
1729f269dcSLawrence Stewart.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1829f269dcSLawrence Stewart.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1929f269dcSLawrence Stewart.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2029f269dcSLawrence Stewart.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
2129f269dcSLawrence Stewart.\" ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2229f269dcSLawrence Stewart.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2329f269dcSLawrence Stewart.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2429f269dcSLawrence Stewart.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2529f269dcSLawrence Stewart.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2629f269dcSLawrence Stewart.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2729f269dcSLawrence Stewart.\" SUCH DAMAGE.
2829f269dcSLawrence Stewart.\"
29*8ea5eeb9SMichael Tuexen.Dd May 13, 2021
3029f269dcSLawrence Stewart.Dt CC_VEGAS 4
3129f269dcSLawrence Stewart.Os
3229f269dcSLawrence Stewart.Sh NAME
3329f269dcSLawrence Stewart.Nm cc_vegas
3429f269dcSLawrence Stewart.Nd Vegas Congestion Control Algorithm
3529f269dcSLawrence Stewart.Sh DESCRIPTION
3629f269dcSLawrence StewartThe Vegas congestion control algorithm uses what the authors term the actual and
3729f269dcSLawrence Stewartexpected transmission rates to determine whether there is congestion along the
3829f269dcSLawrence Stewartnetwork path i.e.
3929f269dcSLawrence Stewart.Bl -item -offset indent
4029f269dcSLawrence Stewart.It
4129f269dcSLawrence Stewartactual rate = (total data sent in a RTT) / RTT
4229f269dcSLawrence Stewart.It
4329f269dcSLawrence Stewartexpected rate = cwnd / RTTmin
4429f269dcSLawrence Stewart.It
4529f269dcSLawrence Stewartdiff = expected - actual
4629f269dcSLawrence Stewart.El
4729f269dcSLawrence Stewart.Pp
4829f269dcSLawrence Stewartwhere RTT is the measured instantaneous round trip time and RTTmin is the
4929f269dcSLawrence Stewartsmallest round trip time observed during the connection.
5029f269dcSLawrence Stewart.Pp
5129f269dcSLawrence StewartThe algorithm aims to keep diff between two parameters alpha and beta, such
5229f269dcSLawrence Stewartthat:
5329f269dcSLawrence Stewart.Bl -item -offset indent
5429f269dcSLawrence Stewart.It
5529f269dcSLawrence Stewartalpha < diff < beta
5629f269dcSLawrence Stewart.El
5729f269dcSLawrence Stewart.Pp
5829f269dcSLawrence StewartIf diff > beta, congestion is inferred and cwnd is decremented by one packet (or
5929f269dcSLawrence Stewartthe maximum TCP segment size).
6029f269dcSLawrence StewartIf diff < alpha, then cwnd is incremented by one packet.
6129f269dcSLawrence StewartAlpha and beta govern the amount of buffering along the path.
6229f269dcSLawrence Stewart.Pp
6329f269dcSLawrence StewartThe implementation was done in a clean-room fashion, and is based on the
6429f269dcSLawrence Stewartpaper referenced in the
6529f269dcSLawrence Stewart.Sx SEE ALSO
6629f269dcSLawrence Stewartsection below.
6729f269dcSLawrence Stewart.Sh IMPLEMENTATION NOTES
6829f269dcSLawrence StewartThe time from the transmission of a marked packet until the receipt of an
6929f269dcSLawrence Stewartacknowledgement for that packet is measured once per RTT.
7029f269dcSLawrence StewartThis implementation does not implement Brakmo's and Peterson's original
7129f269dcSLawrence Stewartduplicate ACK policy since clock ticks in today's machines are not as coarse as
7229f269dcSLawrence Stewartthey were (i.e. 500ms) when Vegas was originally designed.
7329f269dcSLawrence StewartNote that modern TCP recovery processes such as fast retransmit and SACK are
7429f269dcSLawrence Stewartenabled by default in the TCP stack.
7529f269dcSLawrence Stewart.Sh MIB Variables
7629f269dcSLawrence StewartThe algorithm exposes the following tunable variables in the
7729f269dcSLawrence Stewart.Va net.inet.tcp.cc.vegas
7829f269dcSLawrence Stewartbranch of the
7929f269dcSLawrence Stewart.Xr sysctl 3
8029f269dcSLawrence StewartMIB:
8129f269dcSLawrence Stewart.Bl -tag -width ".Va alpha"
8229f269dcSLawrence Stewart.It Va alpha
8329f269dcSLawrence StewartQuery or set the Vegas alpha parameter as a number of buffers on the path.
8429f269dcSLawrence StewartWhen setting alpha, the value must satisfy: 0 < alpha < beta.
8529f269dcSLawrence StewartDefault is 1.
8629f269dcSLawrence Stewart.It Va beta
8729f269dcSLawrence StewartQuery or set the Vegas beta parameter as a number of buffers on the path.
8829f269dcSLawrence StewartWhen setting beta, the value must satisfy: 0 < alpha < beta.
8929f269dcSLawrence StewartDefault is 3.
9029f269dcSLawrence Stewart.El
9129f269dcSLawrence Stewart.Sh SEE ALSO
92*8ea5eeb9SMichael Tuexen.Xr cc_cdg 4 ,
9329f269dcSLawrence Stewart.Xr cc_chd 4 ,
9429f269dcSLawrence Stewart.Xr cc_cubic 4 ,
95*8ea5eeb9SMichael Tuexen.Xr cc_dctcp 4 ,
9629f269dcSLawrence Stewart.Xr cc_hd 4 ,
9729f269dcSLawrence Stewart.Xr cc_htcp 4 ,
9829f269dcSLawrence Stewart.Xr cc_newreno 4 ,
9929f269dcSLawrence Stewart.Xr h_ertt 4 ,
100f772f9feSLawrence Stewart.Xr mod_cc 4 ,
10129f269dcSLawrence Stewart.Xr tcp 4 ,
102f772f9feSLawrence Stewart.Xr khelp 9 ,
103f772f9feSLawrence Stewart.Xr mod_cc 9
10429f269dcSLawrence Stewart.Rs
10529f269dcSLawrence Stewart.%A "L. S. Brakmo"
10629f269dcSLawrence Stewart.%A "L. L. Peterson"
10729f269dcSLawrence Stewart.%T "TCP Vegas: end to end congestion avoidance on a global internet"
10829f269dcSLawrence Stewart.%J "IEEE J. Sel. Areas Commun."
10929f269dcSLawrence Stewart.%D "October 1995"
11029f269dcSLawrence Stewart.%V "13"
11129f269dcSLawrence Stewart.%N "8"
11229f269dcSLawrence Stewart.%P "1465-1480"
11329f269dcSLawrence Stewart.Re
11429f269dcSLawrence Stewart.Sh ACKNOWLEDGEMENTS
11529f269dcSLawrence StewartDevelopment and testing of this software were made possible in part by grants
11629f269dcSLawrence Stewartfrom the FreeBSD Foundation and Cisco University Research Program Fund at
11729f269dcSLawrence StewartCommunity Foundation Silicon Valley.
11829f269dcSLawrence Stewart.Sh HISTORY
11929f269dcSLawrence StewartThe
12029f269dcSLawrence Stewart.Nm
12129f269dcSLawrence Stewartcongestion control module first appeared in
12229f269dcSLawrence Stewart.Fx 9.0 .
12329f269dcSLawrence Stewart.Pp
12429f269dcSLawrence StewartThe module was first released in 2010 by David Hayes whilst working on the
125891b8ed4SLawrence StewartNewTCP research project at Swinburne University of Technology's Centre for
126891b8ed4SLawrence StewartAdvanced Internet Architectures, Melbourne, Australia.
12729f269dcSLawrence StewartMore details are available at:
12829f269dcSLawrence Stewart.Pp
12929f269dcSLawrence Stewarthttp://caia.swin.edu.au/urp/newtcp/
13029f269dcSLawrence Stewart.Sh AUTHORS
13129f269dcSLawrence Stewart.An -nosplit
13229f269dcSLawrence StewartThe
13329f269dcSLawrence Stewart.Nm
13429f269dcSLawrence Stewartcongestion control module and this manual page were written by
1356c899950SBaptiste Daroussin.An David Hayes Aq Mt david.hayes@ieee.org .
136