GSOC2019TCPTestingAndAlignment: Difference between revisions
No edit summary |
No edit summary |
||
Line 20: | Line 20: | ||
=== Phase 1: === | === Phase 1: === | ||
* Align Explicit Congestion Notification (ECN) implementation of ns-3 with Linux | * Align Explicit Congestion Notification (ECN) implementation of ns-3 with Linux | ||
* Align Data Center TCP (DCTCP) implementation of ns-3 with Linux | * Align Data Center TCP (DCTCP) implementation of ns-3 with Linux | ||
* Validate the alignment of ECN in dumbbell topology using ns-3 DCE | * Validate the alignment of ECN in dumbbell topology using ns-3 DCE | ||
* Validate the alignment of DCTCP in data | * Validate the alignment of DCTCP in data center topology using ns3-DCE | ||
=== Phase 2: === | === Phase 2: === | ||
* Align ns-3 implementation of Selective Acknowledgement (SACK) and Duplicate Selective Acknowledgement with Linux | * Align ns-3 implementation of Selective Acknowledgement (SACK) and Duplicate Selective Acknowledgement with Linux | ||
* Align ns-3 implementation of Recent Acknowledgement (RACK) with Linux | * Align ns-3 implementation of Recent Acknowledgement (RACK) with Linux | ||
* Validate the alignment of SACK, DSACK and RACK using ns-3 DCE | * Validate the alignment of SACK, DSACK, and RACK using ns-3 DCE | ||
* Align ns-3 implementation of Paced Chirping with Linux | * Align ns-3 implementation of Paced Chirping with Linux | ||
* Validate the alignment of Paced Chirping using ns-3 DCE | * Validate the alignment of Paced Chirping using ns-3 DCE | ||
= Weekly Plan = | = Weekly Plan = | ||
=== Community Bonding Period (6 May - 26 May 2019) === | === Community Bonding Period (6 May - 26 May 2019) === | ||
* Contact the mentors and update weekly plan according to their suggestions | * Contact the mentors and update weekly plan according to their suggestions | ||
* Setting up a git repository for the project | * Setting up a git repository for the project | ||
* Get suggestions on the testing scenarios which will be used for the validation | * Get suggestions on the testing scenarios which will be used for the validation | ||
* Work on the alignment of PRR as it the default recovery algorithm in Linux | * Work on the alignment of PRR as it the default recovery algorithm in Linux | ||
=== Week 1 (27 May - 2 June 2019) === | === Week 1 (27 May - 2 June 2019) === | ||
* Start understanding the codebase of ECN in ns-3 as well as in Linux | * Start understanding the codebase of ECN in ns-3 as well as in Linux | ||
* Document the differences observed in ECN code of ns-3 and Linux | * Document the differences observed in ECN code of ns-3 and Linux | ||
=== Week 2 (3 June - 9 June 2019 ) === | === Week 2 (3 June - 9 June 2019 ) === | ||
* Align the differences found in ECN and validate the implementation in dumbbell topology using DCE | * Align the differences found in ECN and validate the implementation in dumbbell topology using DCE | ||
=== Week 3 (10 June - 16 June 2019) === | === Week 3 (10 June - 16 June 2019) === | ||
* Validate Data Center TCP in data center topology using DCE | * Validate Data Center TCP in data center topology using DCE | ||
=== Week 4 (17 June - 23 June 2019) === | === Week 4 (17 June - 23 June 2019) === | ||
* Start understanding the codebase of SACK in ns-3 as well as Linux | * Start understanding the codebase of SACK in ns-3 as well as Linux | ||
* Document the differences observed | * Document the differences observed | ||
=== Week 5 (24 June - 30 June 2019) === | === Week 5 (24 June - 30 June 2019) === | ||
* Align the differences found in SACK and validate the implementation using DCE | * Align the differences found in SACK and validate the implementation using DCE | ||
=== Week 6 (1 July - 7 July 2019) === | === Week 6 (1 July - 7 July 2019) === | ||
* Study the codebase of DSACK in ns-3 and Linux | * Study the codebase of DSACK in ns-3 and Linux | ||
* Document the differences observed | * Document the differences observed | ||
=== Week 7 (8 July - 14 July 2019) === | === Week 7 (8 July - 14 July 2019) === | ||
* Align the differences found in DSACK and validate the implementation using DCE | * Align the differences found in DSACK and validate the implementation using DCE | ||
=== Week 8 (15 July - 21 July 2019) === | === Week 8 (15 July - 21 July 2019) === | ||
* Study the codebase of RACK in ns-3 as well as in Linux | * Study the codebase of RACK in ns-3 as well as in Linux | ||
* Document the differences. | * Document the differences. | ||
=== Week 9 (22 July - 28 July 2019) === | === Week 9 (22 July - 28 July 2019) === | ||
* Align the differences found in RACK and validate the implementation using DCE | * Align the differences found in RACK and validate the implementation using DCE | ||
=== Week 10 (29 July - 4 August 2019) === | === Week 10 (29 July - 4 August 2019) === | ||
* Study the codebase of Paced Chirping in ns-3 as well as Linux | * Study the codebase of Paced Chirping in ns-3 as well as Linux | ||
* Document the differences | * Document the differences | ||
=== Week 11 (5 August - 11 August 2019) === | === Week 11 (5 August - 11 August 2019) === | ||
* Align the differences found in Paced Chirping and validate the implementation using DCE | * Align the differences found in Paced Chirping and validate the implementation using DCE | ||
=== Week 12 (13 August - 19 August 2019) === | === Week 12 (13 August - 19 August 2019) === | ||
* Submit all the required patches | * Submit all the required patches | ||
= Weekly Progress = | = Weekly Progress = | ||
=== Community Bonding Period === | |||
* Communicate with the mentors through call | |||
* Set up my git repository | |||
* Reported a bug by creating a merge request and it got merged into mainline of ns-3 |
Revision as of 11:39, 23 May 2019
Main Page - Roadmap - Summer Projects - Project Ideas - Developer FAQ - Tools - Related Projects
HOWTOs - Installation - Troubleshooting - User FAQ - Samples - Models - Education - Contributed Code - Papers
Project Overview
- Project Name: TCP Testing and Alignment
- Student: Apoorva Bhargava
- Mentors: Tom Henderson, Vivek Jain
- Abstract: This project aims at aligning the ns-3 TCP with Linux kernel to have a more realistic implementation of TCP in ns-3 with proper documentation of the differences. The features of TCP which will be aligned are ECN, RACK, SACK, DSACK, and Paced Chirping. To achieve this, ns-3 DCE (Direct Code Execution) will be used. DCE (Direct Code Execution) is a framework that allows the users to run kernel space protocol inside the ns-3 without changing the source code.
- Code: to be added
- About Me: I am a 2nd-year postgraduate student at National Institute of Technology, Karnataka India. I have worked on Implementation of TCP Jersey in ns-3 and Implementation Cautious Adaptive RED in ns-3 during my first year of postgraduation. Currently, I am working on Alignment and Validation of ns-3 TCP with Linux TCP using ns-3 Direct Code Execution (DCE) framework.
Technical Approach
Many features of ns-3 TCP are aligned with RFCs but not with TCP implementation in Linux. The main goal of this project is to have a Linux like TCP implementation in ns-3 and cover main components of TCP Prague i.e ECN, DCTCP, RACK and Paced Chirping. I have already done the alignment of Slow Start and Congestion Avoidance phase of ns-3 New Reno with Linux TCP Reno and validated it in simple dumbbell topology with one sender and one receiver using ns-3 DCE. Results can be found here. Currently, I am working on alignment of PRR recovery algorithm of ns-3 with Linux using ns-3 DCE as it is default recovery algorithm in Linux kernel. Further, I will work on the alignment of ECN followed by DCTCP, as DCTCP uses ECN feature of TCP in its algorithm. Next, I will cover the alignment of RACK which will also cover the alignment of SACK and DSACK as these two are the pre-requisites. Lastly, the alignment of Paced Chirping will be done. Validation of all the aligned features of ns-3 TCP will be done using ns-3 DCE and proper documentation of all the differences will be provided. Also, if time permits I will try to align the ns-3 implementation of TCP Cubic and TCP BBR with Linux kernel.
Milestones and Deliverables
The entire GSoC period is be divided into 2 phases and the deliverables at the end of each phase will be as follows:
Phase 1:
- Align Explicit Congestion Notification (ECN) implementation of ns-3 with Linux
- Align Data Center TCP (DCTCP) implementation of ns-3 with Linux
- Validate the alignment of ECN in dumbbell topology using ns-3 DCE
- Validate the alignment of DCTCP in data center topology using ns3-DCE
Phase 2:
- Align ns-3 implementation of Selective Acknowledgement (SACK) and Duplicate Selective Acknowledgement with Linux
- Align ns-3 implementation of Recent Acknowledgement (RACK) with Linux
- Validate the alignment of SACK, DSACK, and RACK using ns-3 DCE
- Align ns-3 implementation of Paced Chirping with Linux
- Validate the alignment of Paced Chirping using ns-3 DCE
Weekly Plan
Community Bonding Period (6 May - 26 May 2019)
- Contact the mentors and update weekly plan according to their suggestions
- Setting up a git repository for the project
- Get suggestions on the testing scenarios which will be used for the validation
- Work on the alignment of PRR as it the default recovery algorithm in Linux
Week 1 (27 May - 2 June 2019)
- Start understanding the codebase of ECN in ns-3 as well as in Linux
- Document the differences observed in ECN code of ns-3 and Linux
Week 2 (3 June - 9 June 2019 )
- Align the differences found in ECN and validate the implementation in dumbbell topology using DCE
Week 3 (10 June - 16 June 2019)
- Validate Data Center TCP in data center topology using DCE
Week 4 (17 June - 23 June 2019)
- Start understanding the codebase of SACK in ns-3 as well as Linux
- Document the differences observed
Week 5 (24 June - 30 June 2019)
- Align the differences found in SACK and validate the implementation using DCE
Week 6 (1 July - 7 July 2019)
- Study the codebase of DSACK in ns-3 and Linux
- Document the differences observed
Week 7 (8 July - 14 July 2019)
- Align the differences found in DSACK and validate the implementation using DCE
Week 8 (15 July - 21 July 2019)
- Study the codebase of RACK in ns-3 as well as in Linux
- Document the differences.
Week 9 (22 July - 28 July 2019)
- Align the differences found in RACK and validate the implementation using DCE
Week 10 (29 July - 4 August 2019)
- Study the codebase of Paced Chirping in ns-3 as well as Linux
- Document the differences
Week 11 (5 August - 11 August 2019)
- Align the differences found in Paced Chirping and validate the implementation using DCE
Week 12 (13 August - 19 August 2019)
- Submit all the required patches
Weekly Progress
Community Bonding Period
- Communicate with the mentors through call
- Set up my git repository
- Reported a bug by creating a merge request and it got merged into mainline of ns-3