CC_CDG(4)
π CC_CDG π
okay bestie, welcome to CC_CDG(4), straight out of the Kernel Interfaces Manual β¨ this is the CDG Congestion Control Algorithm and she is so much smarter than she looks π§ π
πΈ NAME πΈ
cc_cdg β the CDG Congestion Control Algorithm. that's it, that's the name, iconic π
π¦ DESCRIPTION π¦
so CAIA-Delay Gradient (CDG) is a hybrid congestion control algorithm β she reacts to both packet loss and inferred queuing delay. main character energy fr fr π
her whole thing is: she tries to operate as a delay-based algorithm wherever possible, but she's got heuristics on deck to detect loss-based TCP cross traffic, and she will compete effectively as required π€ CDG is therefore incrementally deployable and suitable for use on shared networks. no cap.
during delay-based operation, CDG uses a delay-gradient based probabilistic backoff mechanism, and she'll also try to infer non congestion related packet losses and avoid backing off when they occur π«Ά like, she's not gonna panic over a loss that wasn't even about congestion, be serious.
during loss-based operation, CDG essentially reverts to cc_newreno(4)-like behaviour. yeah she switches lanes, it's giving versatility π
CDG switches to loss-based operation when she detects that a configurable number of consecutive delay-based backoffs have had no measurable effect. then she periodically attempts to return to delay-based operation, but she'll keep switching back to loss-based operation as required. she's flexible like that π₯
β¨ MIB Variables β¨
the algorithm exposes the following variables in the net.inet.tcp.cc.cdg branch of the sysctl(3) MIB π
versionβ Current algorithm/implementation version number. literally just the version, bestie.beta_delayβ Delay-based window decrease factor as a percentage (on delay-based backoff,w = w * beta_delay / 100). Default is70. πbeta_lossβ Loss-based window decrease factor as a percentage (on loss-based backoff,w = w * beta_loss / 100). Default is50.exp_backoff_scaleβ Scaling parameter for the probabilistic exponential backoff. Default is2. β¨smoothing_factorβ Number of samples used for moving average smoothing (0means no smoothing). Default is8.loss_compete_consec_congβ Number of consecutive delay-gradient based congestion episodes which will trigger loss-based CC compatibility. Default is5. πloss_compete_hold_backoffβ Number of consecutive delay-gradient based congestion episodes to hold the window backoff for loss-based CC compatibility. Default is5.alpha_incβ If non-zero, this enables an experimental mode where CDG's window increase factor (alpha) is increased by1 MSSeveryalpha_incRTTs during congestion avoidance mode. (Settingalpha_incto1results in the most aggressive growth of the window increase factor over time. Use higheralpha_incvalues for slower growth.) Default is0. π§
π SEE ALSO π
cc_chd(4)cc_cubic(4)cc_hd(4)cc_htcp(4)cc_newreno(4)cc_vegas(4)h_ertt(4)mod_cc(4)tcp(4)khelp(9)mod_cc(9)
and the β¨academic readsβ¨, we love a scholarly queen:
- D. A. Hayes and G. Armitage, βRevisiting TCP Congestion Control using Delay Gradientsβ, Networking 2011 Proceedings, Part II, 328-341, May 2011.
- N. Khademi and G. Armitage, Minimising RTT across homogeneous 802.11 WLANs with CAIA Delay-Gradient TCP (v0.1), CAIA Technical Report 121113A, http://caia.swin.edu.au/reports/121113A/CAIA-TR-121113A.pdf, November 2012.
π ACKNOWLEDGEMENTS π
Development and testing of this software were made possible in part by grants from the FreeBSD Foundation and The Cisco University Research Program Fund, a corporate advised fund of Silicon Valley Community Foundation. thank u funders, we appreciate u π«Άπ
β HISTORY β
The cc_cdg congestion control module first appeared in FreeBSD 9.2. π
The module was first released in 2011 by David Hayes whilst working on the NewTCP research project at Swinburne University of Technology's Centre for Advanced Internet Architectures, Melbourne, Australia π¦πΊ More details are available at:
http://caia.swin.edu.au/urp/newtcp/
π AUTHORS π
The cc_cdg congestion control module was written by David Hayes <david.hayes@ieee.org>.
This manual page was written by Lawrence Stewart <lstewart@FreeBSD.org> and Grenville Armitage <garmitage@swin.edu.au>. queens, all of them π
β¨
π BUGS π
The underlying algorithm and parameter values are still a work in progress and may not be optimal for some network scenarios. π she's still growing, okay?? be nice!!
and that's the whole page bestie, no skips, no summaries, we ate and left no crumbs π
signing off from the Debian edition of this manual, dated July 2, 2013 β yeah she's vintage but she still slays π mwah π
π¦ where this page comes from
- debian bookworm: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- debian trixie: freebsd-manpages 12.2-2 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu jammy: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu noble: freebsd-manpages 12.2-1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu questing: freebsd-manpages 12.2-2
- ubuntu resolute: freebsd-manpages 12.2-2build1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- ubuntu stonking: freebsd-manpages 12.2-2build1 Β· BSD-2-Clause-FreeBSD AND BSD-4-Clause
- Copyright (c) 2013 Swinburne University of Technology, Melbourne, Australia
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms