Giter VIP home page Giter VIP logo

dctcp-linux's Introduction

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.

dctcp-linux's People

Contributors

myasuda avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

dctcp-linux's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.