Return to GSoC 2017 Accepted Projects page.
- Project name: Framework for TCP Prague simulations in ns-3
- Student: Shravya K.S.
- Mentor: Mohit Tahiliani
- Abstract: Recently, there has been a lot of interest in the research community (IRTF / IETF) towards parallely implementing and standardising a new TCP extension called TCP Prague, which is targeted to be an evolution of Data Center TCP (DCTCP). DCTCP starves the throughput of other TCP flows (e.g., Reno, Cubic, etc) when they co-exist; so one of the goals is to ensure that TCP Prague can co-exist with other TCP flows without degrading their throughput. Although TCP Prague is still a work in progress, some related modules have been finalised and briefly experimented, such as: the Low Latency, Low Loss, Scalable throughput (L4S) service architecture, DualQ Coupled AQM, Modified ECN Semantics for Ultra Low Queuing Delay. Availability of these modules in network simulators like ns-3 is crucial to boost up the ongoing efforts of standardising TCP Prague. In this project, the aim is to implement the above mentioned modules in ns-3. Additionally, the functionality of these modules will be tested, and the necessary documentation with some examples will also be provided.
- Code: https://github.com/shravya-ks/ns-3-tcp-prague
- Documentation: https://github.com/shravya-ks/ns-3-tcp-prague/wiki
- About me: I have completed my BTech. in Computer Engineering from National Institute of Technology Karnataka (NITK), Surathkal, India. I will be pursuing MS in Networks at CMU from August, 2017 . I have been working in ns-3 for the past 2 years. I have worked on "ECN Support for ns-3 queue discs" during ns-3 Summer of Code, 2016 and "AQM Evaluation Suite for ns-3" as Bachelor's thesis.
ns-3 supports a rich set of TCP extensions, but lacks those which generate L4S traffic, such as DCTCP. Thus, the first phase of the project would comprise of implementing DCTCP to provide support for simulating L4S traffic in ns-3. This will be followed by testing, documentation and development of examples for DCTCP. In the second phase, topology helpers to set up basic data center topologies such as Fat tree and BCube will be provided, which would help users to quickly setup an environment for Data Center Networks (DCNs) in ns-3. The necessary trace sources required to easily fetch the data from simulation will also be provided in this phase. In the third phase, DualQ Coupled AQM will be implemented by using PI2 as a queuing discipline. Although there is an implementation of PI2 for ns-3 which is currently review, it cannot differentiate between the classic traffic and L4S traffic i.e., it lacks the DualQ functionality. Thus, the existing implementation of PI2 will be extended to support DualQ functionality. Lastly, the existing implementation of ECN in ns-3 will be extended to complement the DualQ functionality, and provide a complete framework ready to be used for future TCP Prague experimentation.
Milestones and Deliverables
The entire GSoC period is divided into 3 phases. The deliverable at the end of each phase is as mentioned below :
- Implementation of DCTCP algorithm
- Testing of DCTCP model and documentation
- Provide examples for DCTCP
- Implementation of topology helpers
- Implementation of necessary trace sources
- Provide NetAnim examples for topology helpers
- Extending the existing PI2 implementation
- Testing of extended PI2 model and documentation
- Implementation of Modified ECN
- Testing of Modified ECN
- Integration of TCP models and extended PI2 AQM with Modified ECN
- Provide examples to simulate TCP Prague
Community bonding period (May 4 - May 29)
* Community bonding period (May 4 - May 29) * Contact mentors and update weekly plans based on suggestions. * Prepare wikipedia page for the project explaining the details of the project * Prepare architecture for implementation of all components and get reviews from mentors
Week - 1 (May 30 - June 5)
* Implementing sender side functionality of DCTCP * Implementing receiver side functionality of DCTCP * Implementing router side functionality of DCTCP
Week - 2 (June 6 - June 12)
* Testing sender side functionality of DCTCP * Testing receiver side functionality of DCTCP * Testing router side functionality of DCTCP