summaryrefslogtreecommitdiff
path: root/static/freebsd/man4/cc_dctcp.4 3.html
blob: db66dbacdcffe262b5212bf4d307765913fbd9f5 (plain)
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
<table class="head">
  <tr>
    <td class="head-ltitle">CC_DCTCP(4)</td>
    <td class="head-vol">Device Drivers Manual</td>
    <td class="head-rtitle">CC_DCTCP(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_dctcp</code> &#x2014; <span class="Nd">DCTCP
    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">The DCTCP (data center TCP) congestion control algorithm aims to
    maximise throughput and minimise latency in data center networks by
    utilising the proportion of Explicit Congestion Notification (ECN) marks
    received from capable hardware as a congestion signal.</p>
<p class="Pp">DCTCP uses fraction of ECN marked packets to update congestion
    window. The window reduction ratio is always &lt;= 1/2. Only when all of the
    packets are marked, congestion window is halved.</p>
<p class="Pp">In order to keep the accuracy of the ECN marked fraction, a DCTCP
    receiver mirrors back incoming (or missing) CE marks by setting (or
    clearing) ECE marks. This feedback methodology is also adopted when the
    receiver uses delayed ACK.</p>
<p class="Pp">The <span class="Ux">FreeBSD</span> DCTCP implementation includes
    two minor modifications for the one-sided deployment. Considering the
    situation that DCTCP is used as sender and classic ECN is used as receiver,
    DCTCP sets the CWR flag as the reaction to the ECE flag. In addition, when
    classic ECN is used as sender and DCTCP is used as receiver, DCTCP avoids to
    mirror back ACKs only when the CWR flag is set in the incoming packet.</p>
<p class="Pp">The other specifications are based on the paper and the RFC
    referenced in the <a class="Sx" href="#SEE_ALSO">SEE ALSO</a> section
  below.</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 tunable variables in the
    <var class="Va">net.inet.tcp.cc.dctcp</var> branch of the
    <a class="Xr">sysctl(3)</a> MIB:</p>
<dl class="Bl-tag">
  <dt id="alpha"><var class="Va">alpha</var></dt>
  <dd>The initial value to estimate the congestion on the link. The valid range
      is from 0 to 1024, where 1024 reduces the congestion window to half, if a
      CE is observed in the first window and <var class="Va">alpha</var> could
      not yet adjust to the congestion level on that path. Default is 1024.</dd>
  <dt id="shift_g"><var class="Va">shift_g</var></dt>
  <dd>An estimation gain in the <var class="Va">alpha</var> calculation. This
      influences the responsiveness when adjusting alpha to the most recent
      observed window. Valid range from 0 to 10, the default is 4, resulting in
      an effective gain of 1 / ( 2 ^ <var class="Va">shift_g</var> ), or
    1/16th.</dd>
  <dt id="slowstart"><var class="Va">slowstart</var></dt>
  <dd>A flag if the congestion window should be reduced by one half after slow
      start. Valid settings 0 and 1, default 0.</dd>
  <dt id="ect1"><var class="Va">ect1</var></dt>
  <dd>Controls if a DCTCP session should use IP ECT(0) marking when sending out
      segments (default), or ECT(1) marking making use of L4S infrastructure.
      Changes to this setting will only affect new sessions, existing sessions
      will retain their previous marking value.</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_cdg(4)</a>, <a class="Xr">cc_chd(4)</a>,
    <a class="Xr">cc_cubic(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">mod_cc(4)</a>,
    <a class="Xr">tcp(4)</a>, <a class="Xr">mod_cc(9)</a></p>
<p class="Pp"><cite class="Rs"><span class="RsA">Mohammad Alizadeh</span>,
    <span class="RsA">Albert Greenberg</span>, <span class="RsA">David A.
    Maltz</span>, <span class="RsA">Jitendra Padhye</span>,
    <span class="RsA">Parveen Patel</span>, <span class="RsA">Balaji
    Prabhakar</span>, <span class="RsA">Sudipta Sengupta</span>, and
    <span class="RsA">Murari Sridharan</span>, <span class="RsT">Data Center TCP
    (DCTCP)</span>, <i class="RsJ">ACM SIGCOMM 2010</i>,
    <a class="RsU" href="http://research.microsoft.com/pubs/121386/dctcp-public.pdf">http://research.microsoft.com/pubs/121386/dctcp-public.pdf</a>,
    <span class="RsP">63-74</span>, <span class="RsD">July
  2010</span>.</cite></p>
<p class="Pp"><cite class="Rs"><span class="RsA">Stephen Bensley</span>,
    <span class="RsA">Dave Thaler</span>, <span class="RsA">Praveen
    Balasubramanian</span>, <span class="RsA">Lars Eggert</span>, and
    <span class="RsA">Glenn Judd</span>, <span class="RsT">Data Center TCP
    (DCTCP): TCP Congestion Control for Data Centers</span>,
    <a class="RsU" href="https://tools.ietf.org/html/rfc8257">https://tools.ietf.org/html/rfc8257</a>.</cite></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_dctcp</code> congestion control module
    first appeared in <span class="Ux">FreeBSD 11.0</span>.</p>
<p class="Pp">The module was first released in 2014 by Midori Kato studying at
    Keio University, Japan.</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_dctcp</code> congestion control module and
    this manual page were written by <span class="An">Midori Kato</span>
    <a class="Mt" href="mailto:katoon@sfc.wide.ad.jp">katoon@sfc.wide.ad.jp</a>
    and <span class="An">Lars Eggert</span>
    <a class="Mt" href="mailto:lars@netapp.com">lars@netapp.com</a> with help
    and modifications from <span class="An">Hiren Panchasara</span>
    <a class="Mt" href="mailto:hiren@FreeBSD.org">hiren@FreeBSD.org</a></p>
</section>
</div>
<table class="foot">
  <tr>
    <td class="foot-date">November 8, 2022</td>
    <td class="foot-os">FreeBSD 15.0</td>
  </tr>
</table>