During GSoC 2017, I started developing a framework for simulating TCP Prague in the ns-3 network simulator. "TCP Prague" is a term used to refer to current research work on extending TCP (the dominant transport protocol in the Internet) to provide lower latency service in a wide-area network, similar to what can be achieved in data centers, but with a congestion control and in-network queuing elements that are backward compatible with legacy implementations. TCP Prague is targeted to be an evolution of Data Center TCP (DCTCP), and the research community is parallely implementing and standardising it.
DCTCP starves the throughput of other TCP flows (e.g., Reno, Cubic, etc) when they co-exist; so one of the goals of research community is to ensure that TCP Prague can co-exist with other TCP flows without degrading their throughput. Although still a work-in-progress, a few modules of TCP Prague have been finalised and briefly experimented by the research community, such as: the Low Latency, Low Loss, Scalable throughput (L4S) service architecture, DualQ Coupled Active Queue Management (AQM) and Modified ECN Semantics for Ultra Low Queuing Delay.
I developed a framework to simulate above mentioned TCP Prague modules in ns-3 with necessary examples, tests and documentation. This work is important to the ns-3 and research community, because this is a contemporary research topic and because network simulators are extensively used for performance evaluation. This report presents the details of the work done during GSoC 2017, and provides the necessary information to reproduce this work.
This project was split into three phases, and each phase has been completed with documentation, tests, and example programs, and is ready to be reviewed for merging to the ns-3 mainline. My patches integrate with ns-3-dev as of changeset 13050, and contain 7848 lines of new or changed C++ code.
Implemented Data Center TCP (DCTCP) algorithm in ns-3 and documented its functionality. A test suite and an example program (aligned with the ACM SIGCOMM 2010 paper of DCTCP) are also provided.
Implemented BCube and Fat Tree topology helpers for Data Center Network simulations in ns-3, and documented their functionality. An example program for each helper with NetAnim support is also provided.
Extended CoupledAQM support for PiSquare queue discipline and implemented DualQ Coupled PiSquare queue discipline. Example, test-suite and documentation are provided for both.
This project can be extended further as suggested below:
More details about this project, source code and final patch are available on the links given below: