1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
<table class="head">
<tr>
<td class="head-ltitle">CC_CDG(4)</td>
<td class="head-vol">Device Drivers Manual</td>
<td class="head-rtitle">CC_CDG(4)</td>
</tr>
</table>
<div class="manual-text">
<section class="Sh">
<h1 class="Sh" id="NAME"><a class="permalink" href="#NAME">NAME</a></h1>
<p class="Pp"><code class="Nm">cc_cdg</code> — <span class="Nd">CDG
Congestion Control Algorithm</span></p>
</section>
<section class="Sh">
<h1 class="Sh" id="DESCRIPTION"><a class="permalink" href="#DESCRIPTION">DESCRIPTION</a></h1>
<p class="Pp">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 heuristics
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.</p>
<p class="Pp">During delay-based operation, CDG uses a delay-gradient based
probabilistic 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
<a class="Xr">cc_newreno(4)</a>-like behaviour.</p>
<p class="Pp">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.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="MIB_Variables"><a class="permalink" href="#MIB_Variables">MIB
Variables</a></h1>
<p class="Pp">The algorithm exposes the following variables in the
<var class="Va">net.inet.tcp.cc.cdg</var> branch of the
<a class="Xr">sysctl(3)</a> MIB:</p>
<dl class="Bl-tag">
<dt id="version"><var class="Va">version</var></dt>
<dd>Current algorithm/implementation version number.</dd>
<dt id="beta_delay"><var class="Va">beta_delay</var></dt>
<dd>Delay-based window decrease factor as a percentage (on delay-based
backoff, w = w * beta_delay / 100). Default is 70.</dd>
<dt id="beta_loss"><var class="Va">beta_loss</var></dt>
<dd>Loss-based window decrease factor as a percentage (on loss-based backoff,
w = w * beta_loss / 100). Default is 50.</dd>
<dt id="exp_backoff_scale"><var class="Va">exp_backoff_scale</var></dt>
<dd>Scaling parameter for the probabilistic exponential backoff. Default is
2.</dd>
<dt id="smoothing_factor"><var class="Va">smoothing_factor</var></dt>
<dd>Number of samples used for moving average smoothing (0 means no
smoothing). Default is 8.</dd>
<dt id="loss_compete_consec_cong"><var class="Va">loss_compete_consec_cong</var></dt>
<dd>Number of consecutive delay-gradient based congestion episodes which will
trigger loss-based CC compatibility. Default is 5.</dd>
<dt id="loss_compete_hold_backoff"><var class="Va">loss_compete_hold_backoff</var></dt>
<dd>Number of consecutive delay-gradient based congestion episodes to hold the
window backoff for loss-based CC compatibility. Default is 5.</dd>
<dt id="alpha_inc"><var class="Va">alpha_inc</var></dt>
<dd>If non-zero, this enables an experimental mode where CDG's window increase
factor (alpha) is increased by 1 MSS every <var class="Va">alpha_inc</var>
RTTs during congestion avoidance mode. (Setting
<var class="Va">alpha_inc</var> to 1 results in the most aggressive growth
of the window increase factor over time. Use higher
<var class="Va">alpha_inc</var> values for slower growth.) Default is
0.</dd>
</dl>
</section>
<section class="Sh">
<h1 class="Sh" id="SEE_ALSO"><a class="permalink" href="#SEE_ALSO">SEE
ALSO</a></h1>
<p class="Pp"><a class="Xr">cc_chd(4)</a>, <a class="Xr">cc_cubic(4)</a>,
<a class="Xr">cc_dctcp(4)</a>, <a class="Xr">cc_hd(4)</a>,
<a class="Xr">cc_htcp(4)</a>, <a class="Xr">cc_newreno(4)</a>,
<a class="Xr">cc_vegas(4)</a>, <a class="Xr">h_ertt(4)</a>,
<a class="Xr">mod_cc(4)</a>, <a class="Xr">tcp(4)</a>,
<a class="Xr">khelp(9)</a>, <a class="Xr">mod_cc(9)</a></p>
<p class="Pp"><cite class="Rs"><span class="RsA">D. A. Hayes</span> and
<span class="RsA">G. Armitage</span>, <span class="RsT">Revisiting TCP
Congestion Control using Delay Gradients</span>, <i class="RsJ">Networking
2011 Proceedings, Part II</i>, <span class="RsP">328-341</span>,
<span class="RsD">May 2011</span>.</cite></p>
<p class="Pp"><cite class="Rs"><span class="RsA">N. Khademi</span> and
<span class="RsA">G. Armitage</span>, <span class="RsT">Minimising RTT
across homogeneous 802.11 WLANs with CAIA Delay-Gradient TCP (v0.1)</span>,
<span class="RsR">CAIA Technical Report 121113A</span>,
<a class="RsU" href="http://caia.swin.edu.au/reports/121113A/CAIA-TR-121113A.pdf">http://caia.swin.edu.au/reports/121113A/CAIA-TR-121113A.pdf</a>,
<span class="RsD">November 2012</span>.</cite></p>
</section>
<section class="Sh">
<h1 class="Sh" id="ACKNOWLEDGEMENTS"><a class="permalink" href="#ACKNOWLEDGEMENTS">ACKNOWLEDGEMENTS</a></h1>
<p class="Pp">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.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="HISTORY"><a class="permalink" href="#HISTORY">HISTORY</a></h1>
<p class="Pp">The <code class="Nm">cc_cdg</code> congestion control module first
appeared in <span class="Ux">FreeBSD 9.2</span>.</p>
<p class="Pp">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:</p>
<p class="Pp">http://caia.swin.edu.au/urp/newtcp/</p>
</section>
<section class="Sh">
<h1 class="Sh" id="AUTHORS"><a class="permalink" href="#AUTHORS">AUTHORS</a></h1>
<p class="Pp">The <code class="Nm">cc_cdg</code> congestion control module was
written by <span class="An">David Hayes</span>
<<a class="Mt" href="mailto:david.hayes@ieee.org">david.hayes@ieee.org</a>>.
This manual page was written by <span class="An">Lawrence Stewart</span>
<<a class="Mt" href="mailto:lstewart@FreeBSD.org">lstewart@FreeBSD.org</a>>
and <span class="An">Grenville Armitage</span>
<<a class="Mt" href="mailto:garmitage@swin.edu.au">garmitage@swin.edu.au</a>>.</p>
</section>
<section class="Sh">
<h1 class="Sh" id="BUGS"><a class="permalink" href="#BUGS">BUGS</a></h1>
<p class="Pp">The underlying algorithm and parameter values are still a work in
progress and may not be optimal for some network scenarios.</p>
</section>
</div>
<table class="foot">
<tr>
<td class="foot-date">May 13, 2021</td>
<td class="foot-os">FreeBSD 15.0</td>
</tr>
</table>
|