GithubHelp home page GithubHelp logo

mkheirkhah / amp Goto Github PK

View Code? Open in Web Editor NEW
12.0 2.0 10.0 19.37 MB

Adaptive MultiPath TCP (AMP)

License: GNU General Public License v2.0

Makefile 0.12% Python 3.96% C++ 93.84% MATLAB 0.15% Click 0.10% C 0.14% Shell 0.02% Perl 1.63% Gnuplot 0.04% Batchfile 0.01%
datacenters incast transport mptcp tcp dctcp ecn ecmp

amp's Introduction

AMP: An Adaptive Multipath TCP for Data Center Networks

In this research, we proposed two novel ECN-capable multipath congestion control algorithms for modern data center networks (DCNs).

The first algorithm is called Adaptive MultiPath (AMP) that is particularly designed to be robust against the TCP incast problem. It also coexists well with single-path flows like DCTCP, preventing the Last Hop Unfairness (LHU) problem that we've reported in this paper for the first time. In addition, the design of AMP is simple with low overhead. AMP moves traffic quickly from congested paths to less congested ones without sophisticated mechanisms such as RTT-dependent congestion window increase, as in standard MPTCP, or dynamic congestion window decrease, as in DCTCP.

The second algorithm is called Data Center MultiPath (DCM), which integrates DCTCP with the standard MPTCP congestion control algorithm -- Linked Increases Algorithm (LIA). To the best of our knowledge, we are the first to do such an integration.

The AMP paper has presented at the IFIP Networking 2019 Conference in Warsaw, Poland. Paper - Extended Version.

Implementations

As part of this project, we have implemented several networking protocols within ns-3.19. A few of our implementations are listed bellow:

  • AMP : Adaptive MultiPath TCP
  • DCM : Data Center MultiPath TCP
  • XMP : eXplicit MultiPath
  • MPTCP : MultiPath TCP
  • MMPTCP : Maximum MultiPath TCP
  • DCTCP : Data Center TCP
  • ECN : Explicit Congestion Notification
  • ECMP : Equal-Cost Multi-Path

Installations

Mac

  1. Install gcc-5 with wonderful Homebrew. If you are using MacPort, then you should install gcc4.3 (or at least I tested it with this gcc version)
brew install gcc@5
  1. Clone the AMP's repository
git clone https://github.com/mkheirkhah/amp.git
  1. Configure and build ns-3 with g++-5
GCC="g++-5" CC="gcc-5" CXXFLAGS="-Wall" ./waf --build-profile=optimized configure build
  1. Run a simulation
./waf --run "incast"

Linux

I have tested this source code atop Ubuntu16.4 with gcc/g++5.4.0.

  1. Clone the AMP's repository
git clone https://github.com/mkheirkhah/amp.git
  1. Configure and build ns-3 with
CXXFLAGS="-Wall" ./waf --build-profile=optimized configure build 
  1. Run a simulation
./waf --run "incast"

Simulations

All simulation configurations are available here.

Contact

Morteza Kheirkhah, University College London (UCL), [email protected]

How to reference this source code?

Please use the following bibtex:

@inproceedings{amp2019, 
author={Kheirkhah, Morteza and Lee, Myungjin},
booktitle={IFIP Networking Conference},
title={{AMP: An Adaptive Multipath TCP for Data Center Networks}},
year={2019},
pages={1-9},
doi={10.23919/IFIPNetworking.2019.8816848},
ISSN={1861-2288},
month={May},}

amp's People

Contributors

mkheirkhah avatar

Stargazers

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

Watchers

 avatar  avatar

amp's Issues

Error in run a script

Hi,
I want to run a script but I get an error. I configured your module successfully. I use ubuntu 16 with gcc 5.4.0
Please help me.
Thanks in advance
image

Simultaneous multipath and single path sessions

Hi Morteza,

Thank you for the great contribution of MPTCP in ns-3.

I have a problem to simulate multipath and single path flows in the same network to understand fair share of a capacity of MPTCP and TCP. Independent simulation is alright. I have tried to use different port and IP address for MPTCP and TCP but still, the simulation fails. Some how MPTCP advertises all IP and port setup for the node. Can you please comment on how to simulate such cases.

It is this global configuration that causes the problem

Config::SetDefault("ns3::TcpL4Protocol::SocketType",TypeIdValue(MpTcpSocketBase::GetTypeId()));

Is there a way to also have some TCP variant flows say TcpNewReno when MPTCP session is simulated?

Thanks,

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.