xref: /freebsd/share/man/man4/cc_dctcp.4 (revision fa9896e082a1046ff4fbc75fcba4d18d1f2efc19)
164807b30SHiren Panchasara.\"
264807b30SHiren Panchasara.\" Copyright (c) 2014 Midori Kato <katoon@sfc.wide.ad.jp>
364807b30SHiren Panchasara.\" Copyright (c) 2014 The FreeBSD Foundation
464807b30SHiren Panchasara.\" All rights reserved.
564807b30SHiren Panchasara.\"
664807b30SHiren Panchasara.\" Portions of this documentation were written at Keio University, Japan.
764807b30SHiren Panchasara.\"
864807b30SHiren Panchasara.\" Redistribution and use in source and binary forms, with or without
964807b30SHiren Panchasara.\" modification, are permitted provided that the following conditions
1064807b30SHiren Panchasara.\" are met:
1164807b30SHiren Panchasara.\" 1. Redistributions of source code must retain the above copyright
1264807b30SHiren Panchasara.\"    notice, this list of conditions and the following disclaimer.
1364807b30SHiren Panchasara.\" 2. Redistributions in binary form must reproduce the above copyright
1464807b30SHiren Panchasara.\"    notice, this list of conditions and the following disclaimer in the
1564807b30SHiren Panchasara.\"    documentation and/or other materials provided with the distribution.
1664807b30SHiren Panchasara.\"
1764807b30SHiren Panchasara.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1864807b30SHiren Panchasara.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1964807b30SHiren Panchasara.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2064807b30SHiren Panchasara.\" ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
2164807b30SHiren Panchasara.\" ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2264807b30SHiren Panchasara.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2364807b30SHiren Panchasara.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2464807b30SHiren Panchasara.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2564807b30SHiren Panchasara.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2664807b30SHiren Panchasara.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2764807b30SHiren Panchasara.\" SUCH DAMAGE.
2864807b30SHiren Panchasara.\"
29*dc9daa04SRichard Scheffenegger.Dd November 8, 2022
3064807b30SHiren Panchasara.Dt CC_DCTCP 4
3164807b30SHiren Panchasara.Os
3264807b30SHiren Panchasara.Sh NAME
3364807b30SHiren Panchasara.Nm cc_dctcp
3464807b30SHiren Panchasara.Nd DCTCP Congestion Control Algorithm
3564807b30SHiren Panchasara.Sh DESCRIPTION
3664807b30SHiren PanchasaraThe DCTCP (data center TCP) congestion control algorithm aims to maximise
3764807b30SHiren Panchasarathroughput and minimise latency in data center networks by utilising the
3864807b30SHiren Panchasaraproportion of Explicit Congestion Notification (ECN) marks received from capable
3964807b30SHiren Panchasarahardware as a congestion signal.
4064807b30SHiren Panchasara.Pp
41cb41a56dSChristian BruefferDCTCP uses fraction of ECN marked packets to update congestion window.
42cb41a56dSChristian BruefferThe window reduction ratio is always <= 1/2.
43cb41a56dSChristian BruefferOnly when all of the packets are
4464807b30SHiren Panchasaramarked, congestion window is halved.
4564807b30SHiren Panchasara.Pp
4664807b30SHiren PanchasaraIn order to keep the accuracy of the ECN marked fraction, a DCTCP receiver
4764807b30SHiren Panchasaramirrors back incoming (or missing) CE marks by setting (or clearing) ECE marks.
4864807b30SHiren PanchasaraThis feedback methodology is also adopted when the receiver uses delayed ACK.
4964807b30SHiren Panchasara.Pp
50cb41a56dSChristian BruefferThe
51cb41a56dSChristian Brueffer.Fx
52cb41a56dSChristian BruefferDCTCP implementation includes two minor modifications for the one-sided
53cb41a56dSChristian Bruefferdeployment.
54cb41a56dSChristian BruefferConsidering the situation that DCTCP is used as sender and classic
5564807b30SHiren PanchasaraECN is used as receiver, DCTCP sets the CWR flag as the reaction to the ECE
56cb41a56dSChristian Bruefferflag.
57cb41a56dSChristian BruefferIn addition, when classic ECN is used as sender and DCTCP is used as
5864807b30SHiren Panchasarareceiver, DCTCP avoids to mirror back ACKs only when the CWR flag is
5964807b30SHiren Panchasaraset in the incoming packet.
6064807b30SHiren Panchasara.Pp
61333ba164SMichael TuexenThe other specifications are based on the paper and the RFC referenced
6264807b30SHiren Panchasarain the
6364807b30SHiren Panchasara.Sx SEE ALSO
6464807b30SHiren Panchasarasection below.
6564807b30SHiren Panchasara.Sh MIB Variables
6664807b30SHiren PanchasaraThe algorithm exposes the following tunable variables in the
6764807b30SHiren Panchasara.Va net.inet.tcp.cc.dctcp
6864807b30SHiren Panchasarabranch of the
6964807b30SHiren Panchasara.Xr sysctl 3
7064807b30SHiren PanchasaraMIB:
71333ba164SMichael Tuexen.Bl -tag -width ".Va slowstart"
7264807b30SHiren Panchasara.It Va alpha
73333ba164SMichael TuexenThe initial value to estimate the congestion on the link.
74333ba164SMichael TuexenThe valid range is from 0 to 1024, where 1024 reduces the congestion
75333ba164SMichael Tuexenwindow to half, if a CE is observed in the first window and
76333ba164SMichael Tuexen.Va alpha
77333ba164SMichael Tuexencould not yet adjust to the congestion level on that path.
78333ba164SMichael TuexenDefault is 1024.
79333ba164SMichael Tuexen.It Va shift_g
80333ba164SMichael TuexenAn estimation gain in the
81333ba164SMichael Tuexen.Va alpha
82333ba164SMichael Tuexencalculation.
83333ba164SMichael TuexenThis influences the responsiveness when adjusting alpha
84333ba164SMichael Tuexento the most recent observed window.
85333ba164SMichael TuexenValid range from 0 to 10, the default is 4, resulting in an effective
86333ba164SMichael Tuexengain of 1 / ( 2 ^
87333ba164SMichael Tuexen.Va shift_g
88333ba164SMichael Tuexen), or 1/16th.
8964807b30SHiren Panchasara.It Va slowstart
90333ba164SMichael TuexenA flag if the congestion window should be reduced by one half after slow start.
91333ba164SMichael TuexenValid settings 0 and 1, default 0.
92*dc9daa04SRichard Scheffenegger.It Va ect1
93*dc9daa04SRichard ScheffeneggerControls if a DCTCP session should use IP ECT(0) marking when sending out
94*dc9daa04SRichard Scheffeneggersegments (default), or ECT(1) marking making use of L4S infrastructure.
95*dc9daa04SRichard ScheffeneggerChanges to this setting will only affect new sessions, existing sessions will
96*dc9daa04SRichard Scheffeneggerretain their previous marking value.
97cb41a56dSChristian Brueffer.El
9864807b30SHiren Panchasara.Sh SEE ALSO
998ea5eeb9SMichael Tuexen.Xr cc_cdg 4 ,
10064807b30SHiren Panchasara.Xr cc_chd 4 ,
10164807b30SHiren Panchasara.Xr cc_cubic 4 ,
10264807b30SHiren Panchasara.Xr cc_hd 4 ,
10364807b30SHiren Panchasara.Xr cc_htcp 4 ,
10464807b30SHiren Panchasara.Xr cc_newreno 4 ,
10564807b30SHiren Panchasara.Xr cc_vegas 4 ,
10664807b30SHiren Panchasara.Xr mod_cc 4 ,
10764807b30SHiren Panchasara.Xr tcp 4 ,
10864807b30SHiren Panchasara.Xr mod_cc 9
10964807b30SHiren Panchasara.Rs
11064807b30SHiren Panchasara.%A "Mohammad Alizadeh"
11164807b30SHiren Panchasara.%A "Albert Greenberg"
11264807b30SHiren Panchasara.%A "David A. Maltz"
11364807b30SHiren Panchasara.%A "Jitendra Padhye"
11464807b30SHiren Panchasara.%A "Parveen Patel"
11564807b30SHiren Panchasara.%A "Balaji Prabhakar"
11664807b30SHiren Panchasara.%A "Sudipta Sengupta"
11764807b30SHiren Panchasara.%A "Murari Sridharan"
11864807b30SHiren Panchasara.%T "Data Center TCP (DCTCP)"
11964807b30SHiren Panchasara.%U "http://research.microsoft.com/pubs/121386/dctcp-public.pdf"
12064807b30SHiren Panchasara.%J "ACM SIGCOMM 2010"
12164807b30SHiren Panchasara.%D "July 2010"
12264807b30SHiren Panchasara.%P "63-74"
12364807b30SHiren Panchasara.Re
12464807b30SHiren Panchasara.Rs
12564807b30SHiren Panchasara.%A "Stephen Bensley"
12664807b30SHiren Panchasara.%A "Dave Thaler"
127333ba164SMichael Tuexen.%A "Praveen Balasubramanian"
128333ba164SMichael Tuexen.%A "Lars Eggert"
129333ba164SMichael Tuexen.%A "Glenn Judd"
130333ba164SMichael Tuexen.%T "Data Center TCP (DCTCP): TCP Congestion Control for Data Centers"
131333ba164SMichael Tuexen.%U "https://tools.ietf.org/html/rfc8257"
13264807b30SHiren Panchasara.Re
13364807b30SHiren Panchasara.Sh HISTORY
13464807b30SHiren PanchasaraThe
13564807b30SHiren Panchasara.Nm
13664807b30SHiren Panchasaracongestion control module first appeared in
13764807b30SHiren Panchasara.Fx 11.0 .
13864807b30SHiren Panchasara.Pp
13964807b30SHiren PanchasaraThe module was first released in 2014 by Midori Kato studying at Keio
14064807b30SHiren PanchasaraUniversity, Japan.
14164807b30SHiren Panchasara.Sh AUTHORS
14264807b30SHiren Panchasara.An -nosplit
14364807b30SHiren PanchasaraThe
14464807b30SHiren Panchasara.Nm
14564807b30SHiren Panchasaracongestion control module and this manual page were written by
146cb41a56dSChristian Brueffer.An Midori Kato Mt katoon@sfc.wide.ad.jp
14764807b30SHiren Panchasaraand
148cb41a56dSChristian Brueffer.An Lars Eggert Mt lars@netapp.com
14964807b30SHiren Panchasarawith help and modifications from
150cb41a56dSChristian Brueffer.An Hiren Panchasara Mt hiren@FreeBSD.org
151