Giter VIP home page Giter VIP logo

dctcp-demo's Introduction

Data Center TCP (DCTCP) Demo

Guanzhou Hu @ UW-Madison, CS740, Spring 2022

This is a minimal implementation of the DCTCP congestion control protocol (SIGCOMM paper, RFC 8257) with the ns-3 simulator. Tested on Ubuntu 20.04.

It turns out that ns-3.35 already ships with a default implementation of DCTCP. This repo holds my own minimal implementation based on my understanding of the original SIGCOMM paper.

Contents

Due to the design of ns-3, all new components and simulation scripts must be put within the ns-3.35 folder, be built by the default ./waf toolchain, and be run with ./waf --run. Hence, ns-3.35 source code is included in-place. I added my new DCTCP component into the source folder and modified the build scripts to involve the new stuff.

Files added or modified:

  • ns-3.35/src/internet/model/tcp-dctcp-my.cc: my implementation of TcpDctcpMy component
  • ns-3.35/src/internet/model/tcp-dctcp-my.h: mostly a duplicate of tcp-dctcp.h
  • ns-3.35/src/internet/test/tcp-dctcp-my-test.cc: a duplicate of tcp-dctcp.test.cc
  • ns-3.35/src/internet/wscript: modified to involve TcpDctcpMy stuff when building
  • ns-3.35/scratch/trace-tcp-reno.cc: simple simulation experiment on TcpLinuxReno
  • ns-3.35/scratch/trace-dctcp-my.cc: simple simulation experiment on TcpDctcpMy
  • ns-3.35/scratch/paper-dctcp-my.cc: a duplicate of dctcp-example.cc

Build Instructions

Build ns-3, including the new components added:

make clean && make

Run unit tests to ensure all PASSED:

make test

Simulation

Two simple simulation scripts, trace-tcp-reno.cc and trace-dctcp-my.cc, have been provided to test the congestion window adjustment behavior of my DCTCP algorithm and the default Reno algorithm. The simulation involves 20 senders, 1 switch, and 1 receiver. Senders each connect to the switch through 1Gbps link, while the switch is connected to the receiver through 10Gbps link. Each sender inejcts a steady stream of packets at rate 1Gbps to the receiver.

Run the simulation:

make simulation

You will find trace-tcp-reno.log and trace-dctcp-my.log at the root directory of this repo once this finished. In both logs, the time region between 2 secs - 3 secs is the meaningful measurement window after convergence.

ns-3 ships with a much more complicated example simulation that mimicks the exepriment originally presented in the DCTCP paper. I also duplicated that one to paper-dctcp-my.cc.

Run the paper experiment:

make paper-expt     # may take long

You will find a bunch of .dat data logs under ns-3.35/ once this finished.

dctcp-demo's People

Contributors

josehu07 avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar

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.