home | help
CC_CHD(4)		     Kernel Interfaces Manual		       CC_CHD(4)

NAME
     cc_chd -- CHD Congestion Control Algorithm

DESCRIPTION
     CHD  enhances the HD algorithm implemented in cc_hd(4).  It provides toler-
     ance to non-congestion related packet loss and improvements to  coexistence
     with  traditional loss-based TCP flows, especially when the bottleneck link
     is lightly multiplexed.

     Like HD, the algorithm aims to keep network queuing delays below a particu-
     lar threshold (queue_threshold) and decides to reduce the congestion window
     (cwnd) probabilistically based on its estimate of the network  queuing  de-
     lay.

     It differs from HD in three key aspects:

     *	 The  probability of cwnd reduction due to congestion is calculated once
	 per round trip time instead of each time an acknowledgement is received
	 as done by cc_hd(4).

     *	 Packet  losses  that  occur  while  the  queuing  delay  is  less  than
	 queue_threshold do not cause cwnd to be reduced.

     *	 CHD uses a shadow window to help regain lost transmission opportunities
	 when competing with loss-based TCP flows.

MIB Variables
     The   algorithm   exposes	 the   following   tunable   variables	 in  the
     net.inet.tcp.cc.chd branch of the sysctl(3) MIB:

     queue_threshold  Queueing congestion threshold (qth) in ticks.  Default  is
		      20.

     pmax	      Per  RTT maximum backoff probability as a percentage.  De-
		      fault is 50.

     qmin	      Minimum queuing delay threshold (qmin) in ticks.	 Default
		      is 5.

     loss_fair	      If 1, cwnd is adjusted using the shadow window when a con-
		      gestion related loss is detected.  Default is 1.

     use_max	      If  1,  the maximum RTT seen within the measurement period
		      is used as the basic delay measurement for the  algorithm,
		      otherwise  a  sampled RTT measurement is used.  Default is
		      1.

SEE ALSO
     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)

     D.  A.  Hayes and G. Armitage, "Improved coexistence and loss tolerance for
     delay based TCP congestion control", in 35th Annual IEEE Conference on  Lo-
     cal Computer Networks, 24-31, October 2010.

ACKNOWLEDGEMENTS
     Development  and  testing	of  this  software were made possible in part by
     grants from the FreeBSD Foundation and Cisco  University  Research  Program
     Fund at Community Foundation Silicon Valley.

HISTORY
     The cc_chd congestion control module first appeared in FreeBSD 9.0.

     The  module was first released in 2010 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_chd congestion control module and this manual page were  written  by
     David Hayes <david.hayes@ieee.org>.

FreeBSD 9.0		       September 15, 2011		       CC_CHD(4)

home | help