cc_hd —
HD
Congestion Control Algorithm
The HD congestion control algorithm is an implementation of the Hamilton
Institute's delay-based congestion control which aims to keep network queuing
delays below a particular threshold (queue_threshold).
HD probabilistically reduces the congestion window (cwnd) based on its estimate
of the network queuing delay. The probability of reducing cwnd is zero at
hd_qmin or less, rising to a maximum at queue_threshold, and then back to zero
at the maximum queuing delay.
Loss-based congestion control algorithms such as NewReno probe for network
capacity by filling queues until there is a packet loss. HD competes with
loss-based congestion control algorithms by allowing its probability of
reducing cwnd to drop from a maximum at queue_threshold to be zero at the
maximum queuing delay. This has been shown to work well when the bottleneck
link is highly multiplexed.
The algorithm exposes the following tunable variables in the
net.inet.tcp.cc.hd branch of the
sysctl(3) MIB:
- queue_threshold
- Queueing congestion threshold (qth) in ticks. Default is
20.
- pmax
- Per packet maximum backoff probability as a percentage.
Default is 5.
- qmin
- Minimum queuing delay threshold (qmin) in ticks. Default is
5.
cc_chd(4),
cc_cubic(4),
cc_htcp(4),
cc_newreno(4),
cc_vegas(4),
h_ertt(4),
mod_cc(4),
tcp(4),
khelp(9),
mod_cc(9)
L. Budzisz,
R. Stanojevic, R. Shorten,
and F. Baker, A strategy for fair
coexistence of loss and delay-based congestion control algorithms,
IEEE Commun. Lett., 7,
13, 555-557,
Jul 2009.
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.
The Hamilton Institute have recently made some improvements to the algorithm
implemented by this module and have called it Coexistent-TCP (C-TCP). The
improvements should be evaluated and potentially incorporated into this
module.
The
cc_hd 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/
The
cc_hd congestion control module and this manual
page were written by
David Hayes
<
[email protected]>.