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