myasuda / dctcp-linux Goto Github PK
View Code? Open in Web Editor NEWDCTCP Linux kernel Patch
Home Page: http://www.stanford.edu/~alizade/Site/DCTCP.html
DCTCP Linux kernel Patch
Home Page: http://www.stanford.edu/~alizade/Site/DCTCP.html
This is an implementation of Data Center TCP (DCTCP), an enhancement to the TCP congestion control algorithm for data centers. The patch applies to Linux 2.6.38.3. The implementation is based on the algorithm described in the paper "Data Center TCP (DCTCP)" (Alizadeh et al.), presented at SIGCOMM 2010. We refer to this paper for the details and evaluation of the algorithm. The paper is available online at http://www.stanford.edu/~alizade/Site/Publications_files/dctcp-final.pdf Authors: Abdul Kabbani, Stanford University Masato Yasuda, NEC Corp., Japan Mohammad Alizadeh, Stanford University ------------------------------------------------------------------ [How to Apply Patch] wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.38.3.tar.bz2 tar jxvf linux-2.6.38.3.tar.bz2 cp dctcp-2.6.38.3-rev1.1.0.patch linux-2.6.38.3 cd linux-2.6.38.3 patch -p1 < dctcp-2.6.38.3-rev1.0.0.patch After applying patch, please compile the kernel as usual. No special kernel configuration is necessary for DCTCP. [How to Enable DCTCP] DCTCP (over Reno) is enabled by the following commands. sysctl -w net.ipv4.tcp_congestion_control=reno sysctl -w net.ipv4.tcp_dctcp_enable=1 sysctl -w net.ipv4.tcp_ecn=1 DCTCP is enabled when kernel parameter net.ipv4.tcp_dctcp_enable is 1 (default value is 0) and net.ipv4.tcp_ecn is 1. (default value is 2). In testing DCTCP, the DCTCP kernel must be running both on the sender and the receiver. In addition, ECN functionality must be enabled at the switch. The default ECN marking threshold for DCTCP is 20 packets (30KB) at 1Gbps, and 65 packets (~100KB) at 10Gbps. [Other DCTCP parameters] We added the following two parameters. - net.ipv4.tcp_delayed_ack The default value is 1 (Delayed ACK is enabled). Delayed ACK can be disabled by setting this to 0. - net.ipv4.tcp_dctcp_shift_g This is the parameter, g, for updating dctcp_alpha. The default value is 4 (i.e. g = 1/2^4 = 1/16). In every RTT, dctcp_alpha is updated as follows: dctcp_alpha = (1-g) * dctcp_alpha + g * F. (F is the fraction of marked data during the last RTT.) [Changelog] 2011 Apl 29 - Rev1.0.0 2011 Sep 1 - Rev1.1.0 - Fixed a bug in initializing DCTCP internal parameters in the case of passive open - Erased the unneccesary variable tp->prior_ack - Changed the setting for enabling dctcp, for enabling dctcp, both net.ipv4.tcp_dctcp_enable and net.ipv4.tcp_ecn are needed to be 1.
In README file:
Error: patch -p1 < dctcp-2.6.38.3-rev1.0.0.patch
Correct: patch -p1 < dctcp-2.6.38.3-rev1.1.0.patch
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.