xref: /freebsd/share/man/man4/cc_cdg.4 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
192a0637fSLawrence Stewart.\"
292a0637fSLawrence Stewart.\" Copyright (c) 2013 Swinburne University of Technology, Melbourne, Australia
392a0637fSLawrence Stewart.\" All rights reserved.
492a0637fSLawrence Stewart.\"
592a0637fSLawrence Stewart.\" Redistribution and use in source and binary forms, with or without
692a0637fSLawrence Stewart.\" modification, are permitted provided that the following conditions
792a0637fSLawrence Stewart.\" are met:
892a0637fSLawrence Stewart.\" 1. Redistributions of source code must retain the above copyright
992a0637fSLawrence Stewart.\"    notice, this list of conditions and the following disclaimer.
1092a0637fSLawrence Stewart.\" 2. Redistributions in binary form must reproduce the above copyright
1192a0637fSLawrence Stewart.\"    notice, this list of conditions and the following disclaimer in the
1292a0637fSLawrence Stewart.\"    documentation and/or other materials provided with the distribution.
1392a0637fSLawrence Stewart.\"
1492a0637fSLawrence Stewart.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1592a0637fSLawrence Stewart.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1692a0637fSLawrence Stewart.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1792a0637fSLawrence Stewart.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
1892a0637fSLawrence Stewart.\" ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1992a0637fSLawrence Stewart.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2092a0637fSLawrence Stewart.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2192a0637fSLawrence Stewart.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2292a0637fSLawrence Stewart.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2392a0637fSLawrence Stewart.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2492a0637fSLawrence Stewart.\" SUCH DAMAGE.
2592a0637fSLawrence Stewart.\"
26*8ea5eeb9SMichael Tuexen.Dd May 13, 2021
2792a0637fSLawrence Stewart.Dt CC_CDG 4
2892a0637fSLawrence Stewart.Os
2992a0637fSLawrence Stewart.Sh NAME
3092a0637fSLawrence Stewart.Nm cc_cdg
3192a0637fSLawrence Stewart.Nd CDG Congestion Control Algorithm
3292a0637fSLawrence Stewart.Sh DESCRIPTION
3392a0637fSLawrence StewartCAIA-Delay Gradient (CDG) is a hybrid congestion control algorithm which reacts
3492a0637fSLawrence Stewartto both packet loss and inferred queuing delay.
3592a0637fSLawrence StewartIt attempts to operate as a delay-based algorithm where possible, but utilises
3692a0637fSLawrence Stewartheuristics to detect loss-based TCP cross traffic and will compete effectively
3792a0637fSLawrence Stewartas required.
3892a0637fSLawrence StewartCDG is therefore incrementally deployable and suitable for use on shared
3992a0637fSLawrence Stewartnetworks.
4092a0637fSLawrence Stewart.Pp
4192a0637fSLawrence StewartDuring delay-based operation, CDG uses a delay-gradient based probabilistic
4292a0637fSLawrence Stewartbackoff mechanism, and will also try to infer non congestion related
4392a0637fSLawrence Stewartpacket losses and avoid backing off when they occur.
4492a0637fSLawrence StewartDuring loss-based operation, CDG essentially reverts to
4592a0637fSLawrence Stewart.Xr cc_newreno 4 Ns - Ns like
4692a0637fSLawrence Stewartbehaviour.
4792a0637fSLawrence Stewart.Pp
4892a0637fSLawrence StewartCDG switches to loss-based operation when it detects that a configurable number
4992a0637fSLawrence Stewartof consecutive delay-based backoffs have had no measurable effect.
5092a0637fSLawrence StewartIt periodically attempts to return to delay-based operation, but will keep
5192a0637fSLawrence Stewartswitching back to loss-based operation as required.
5292a0637fSLawrence Stewart.Sh MIB Variables
5392a0637fSLawrence StewartThe algorithm exposes the following variables in the
5492a0637fSLawrence Stewart.Va net.inet.tcp.cc.cdg
5592a0637fSLawrence Stewartbranch of the
5692a0637fSLawrence Stewart.Xr sysctl 3
5792a0637fSLawrence StewartMIB:
5892a0637fSLawrence Stewart.Bl -tag -width ".Va exp_backoff_scale"
5992a0637fSLawrence Stewart.It Va version
6092a0637fSLawrence StewartCurrent algorithm/implementation version number.
6192a0637fSLawrence Stewart.It Va beta_delay
6292a0637fSLawrence StewartDelay-based window decrease factor as a percentage (on delay-based backoff, w =
6392a0637fSLawrence Stewartw * beta_delay / 100).
6492a0637fSLawrence StewartDefault is 70.
6592a0637fSLawrence Stewart.It Va beta_loss
6692a0637fSLawrence StewartLoss-based window decrease factor as a percentage (on loss-based backoff, w =
6792a0637fSLawrence Stewartw * beta_loss / 100).
6892a0637fSLawrence StewartDefault is 50.
6992a0637fSLawrence Stewart.It Va exp_backoff_scale
7092a0637fSLawrence StewartScaling parameter for the probabilistic exponential backoff.
7192a0637fSLawrence StewartDefault is 2.
7292a0637fSLawrence Stewart.It Va smoothing_factor
7392a0637fSLawrence StewartNumber of samples used for moving average smoothing (0 means no smoothing).
7492a0637fSLawrence StewartDefault is 8.
7592a0637fSLawrence Stewart.It Va loss_compete_consec_cong
7692a0637fSLawrence StewartNumber of consecutive delay-gradient based congestion episodes which will
7792a0637fSLawrence Stewarttrigger loss-based CC compatibility.
7892a0637fSLawrence StewartDefault is 5.
7992a0637fSLawrence Stewart.It Va loss_compete_hold_backoff
8092a0637fSLawrence StewartNumber of consecutive delay-gradient based congestion episodes to hold the
8192a0637fSLawrence Stewartwindow backoff for loss-based CC compatibility.
8292a0637fSLawrence StewartDefault is 5.
8392a0637fSLawrence Stewart.It Va alpha_inc
8492a0637fSLawrence StewartIf non-zero, this enables an experimental mode where CDG's window increase
8592a0637fSLawrence Stewartfactor (alpha) is increased by 1 MSS every
8692a0637fSLawrence Stewart.Va alpha_inc
8792a0637fSLawrence StewartRTTs during congestion avoidance mode.
8892a0637fSLawrence Stewart(Setting
8992a0637fSLawrence Stewart.Va alpha_inc
9092a0637fSLawrence Stewartto 1 results in the most aggressive growth of the window increase factor over
9192a0637fSLawrence Stewarttime.
9292a0637fSLawrence StewartUse higher
9392a0637fSLawrence Stewart.Va alpha_inc
9492a0637fSLawrence Stewartvalues for slower growth.)
9592a0637fSLawrence StewartDefault is 0.
9692a0637fSLawrence Stewart.El
9792a0637fSLawrence Stewart.Sh SEE ALSO
9892a0637fSLawrence Stewart.Xr cc_chd 4 ,
9992a0637fSLawrence Stewart.Xr cc_cubic 4 ,
100*8ea5eeb9SMichael Tuexen.Xr cc_dctcp 4 ,
10192a0637fSLawrence Stewart.Xr cc_hd 4 ,
10292a0637fSLawrence Stewart.Xr cc_htcp 4 ,
10392a0637fSLawrence Stewart.Xr cc_newreno 4 ,
10492a0637fSLawrence Stewart.Xr cc_vegas 4 ,
10592a0637fSLawrence Stewart.Xr h_ertt 4 ,
10692a0637fSLawrence Stewart.Xr mod_cc 4 ,
10792a0637fSLawrence Stewart.Xr tcp 4 ,
10892a0637fSLawrence Stewart.Xr khelp 9 ,
10992a0637fSLawrence Stewart.Xr mod_cc 9
11092a0637fSLawrence Stewart.Rs
11192a0637fSLawrence Stewart.%A "D. A. Hayes"
11292a0637fSLawrence Stewart.%A "G. Armitage"
11392a0637fSLawrence Stewart.%T "Revisiting TCP Congestion Control using Delay Gradients"
11492a0637fSLawrence Stewart.%J "Networking 2011 Proceedings, Part II"
11592a0637fSLawrence Stewart.%D "May 2011"
11692a0637fSLawrence Stewart.%P "328-341"
11792a0637fSLawrence Stewart.Re
11892a0637fSLawrence Stewart.Rs
11992a0637fSLawrence Stewart.%A "N. Khademi"
12092a0637fSLawrence Stewart.%A "G. Armitage"
12192a0637fSLawrence Stewart.%T "Minimising RTT across homogeneous 802.11 WLANs with CAIA Delay-Gradient TCP (v0.1)"
12292a0637fSLawrence Stewart.%R "CAIA Technical Report 121113A"
12392a0637fSLawrence Stewart.%D "November 2012"
12492a0637fSLawrence Stewart.%U "http://caia.swin.edu.au/reports/121113A/CAIA-TR-121113A.pdf"
12592a0637fSLawrence Stewart.Re
12692a0637fSLawrence Stewart.Sh ACKNOWLEDGEMENTS
12792a0637fSLawrence StewartDevelopment and testing of this software were made possible in part by grants
12892a0637fSLawrence Stewartfrom the FreeBSD Foundation and The Cisco University Research Program Fund, a
12992a0637fSLawrence Stewartcorporate advised fund of Silicon Valley Community Foundation.
13092a0637fSLawrence Stewart.Sh HISTORY
13192a0637fSLawrence StewartThe
13292a0637fSLawrence Stewart.Nm
13392a0637fSLawrence Stewartcongestion control module first appeared in
13492a0637fSLawrence Stewart.Fx 9.2 .
13592a0637fSLawrence Stewart.Pp
13692a0637fSLawrence StewartThe module was first released in 2011 by David Hayes whilst working on the
13792a0637fSLawrence StewartNewTCP research project at Swinburne University of Technology's Centre for
13892a0637fSLawrence StewartAdvanced Internet Architectures, Melbourne, Australia.
13992a0637fSLawrence StewartMore details are available at:
14092a0637fSLawrence Stewart.Pp
14192a0637fSLawrence Stewarthttp://caia.swin.edu.au/urp/newtcp/
14292a0637fSLawrence Stewart.Sh AUTHORS
14392a0637fSLawrence Stewart.An -nosplit
14492a0637fSLawrence StewartThe
14592a0637fSLawrence Stewart.Nm
14692a0637fSLawrence Stewartcongestion control module was written by
1476c899950SBaptiste Daroussin.An David Hayes Aq Mt david.hayes@ieee.org .
14892a0637fSLawrence StewartThis manual page was written by
1496c899950SBaptiste Daroussin.An Lawrence Stewart Aq Mt lstewart@FreeBSD.org
15092a0637fSLawrence Stewartand
1516c899950SBaptiste Daroussin.An Grenville Armitage Aq Mt garmitage@swin.edu.au .
15292a0637fSLawrence Stewart.Sh BUGS
15392a0637fSLawrence StewartThe underlying algorithm and parameter values are still a work in progress and
15492a0637fSLawrence Stewartmay not be optimal for some network scenarios.
155