Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
CC_CDG(4)	       FreeBSD Kernel Interfaces Manual		     CC_CDG(4)

     cc_cdg -- CDG Congestion Control Algorithm

     CAIA-Delay	Gradient (CDG) is a hybrid congestion control algorithm	which
     reacts to both packet loss	and inferred queuing delay.  It	attempts to
     operate as	a delay-based algorithm	where possible,	but utilises heuris-
     tics to detect loss-based TCP cross traffic and will compete effectively
     as	required.  CDG is therefore incrementally deployable and suitable for
     use on shared networks.

     During delay-based	operation, CDG uses a delay-gradient based probabilis-
     tic backoff mechanism, and	will also try to infer non congestion related
     packet losses and avoid backing off when they occur.  During loss-based
     operation,	CDG essentially	reverts	to cc_newreno(4)-like behaviour.

     CDG switches to loss-based	operation when it detects that a configurable
     number of consecutive delay-based backoffs	have had no measurable effect.
     It	periodically attempts to return	to delay-based operation, but will
     keep switching back to loss-based operation as required.

MIB Variables
     The algorithm exposes the following variables in the
     branch of the sysctl(3) MIB:

     version		Current	algorithm/implementation version number.

     beta_delay		Delay-based window decrease factor as a	percentage (on
			delay-based backoff, w = w * beta_delay	/ 100).	 De-
			fault is 70.

     beta_loss		Loss-based window decrease factor as a percentage (on
			loss-based backoff, w =	w * beta_loss /	100).  Default
			is 50.

     exp_backoff_scale	Scaling	parameter for the probabilistic	exponential
			backoff.  Default is 2.

     smoothing_factor	Number of samples used for moving average smoothing (0
			means no smoothing).  Default is 8.

			Number of consecutive delay-gradient based congestion
			episodes which will trigger loss-based CC compatibil-
			ity.  Default is 5.

			Number of consecutive delay-gradient based congestion
			episodes to hold the window backoff for	loss-based CC
			compatibility.	Default	is 5.

     alpha_inc		If non-zero, this enables an experimental mode where
			CDG's window increase factor (alpha) is	increased by 1
			MSS every alpha_inc RTTs during	congestion avoidance
			mode.  (Setting	alpha_inc to 1 results in the most ag-
			gressive growth	of the window increase factor over
			time.  Use higher alpha_inc values for slower growth.)
			Default	is 0.

     cc_chd(4),	cc_cubic(4), cc_dctcp(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)

     D.	A. Hayes and G.	Armitage, "Revisiting TCP Congestion Control using
     Delay Gradients", Networking 2011 Proceedings, Part II, 328-341, May

     N.	Khademi	and G. Armitage, Minimising RTT	across homogeneous 802.11
     WLANs with	CAIA Delay-Gradient TCP	(v0.1),	CAIA Technical Report 121113A,, November

     Development and testing of	this software were made	possible in part by
     grants from the FreeBSD Foundation	and The	Cisco University Research Pro-
     gram Fund,	a corporate advised fund of Silicon Valley Community Founda-

     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 Cen-
     tre for Advanced Internet Architectures, Melbourne, Australia.  More de-
     tails are available at:

     The cc_cdg	congestion control module was written by David Hayes
     <>.  This manual page was written by Lawrence Stewart
     <> and	Grenville Armitage <>.

     The underlying algorithm and parameter values are still a work in
     progress and may not be optimal for some network scenarios.

FreeBSD	13.0			 May 13, 2021			  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help