Difference between revisions of "GSOC2019TCPTestingAndAlignment"

From Nsnam
Jump to: navigation, search
Line 4: Line 4:
  
 
* '''Project Name:''' TCP Testing and Alignment
 
* '''Project Name:''' TCP Testing and Alignment
* '''Student:''' Apoorva Bhargava
+
* '''Student:''' [mailto:apoorvabhargava13@gmail.com Apoorva Bhargava]
* '''Mentors:''' Tom Henderson, Vivek Jain
+
* '''Mentors:''' [mailto:tomh@tomh.org Tom Henderson], [mailto:jain.vivek.anand@gmail.com 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 which allows the users to run kernel space protocol inside the ns-3 without changing the source code.
 
* '''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 which allows the users to run kernel space protocol inside the ns-3 without changing the source code.
 
* '''Code:''' to be added
 
* '''Code:''' to be added
* '''About Me:''' I am a 2nd-year postgraduate student at National Institute of Technology, Karnataka India. I have worked on [https://github.com/apoorvabhargava/Implementation-of-TCP-Jersey-in-ns-3 Implementation of TCP Jersey in ns-3] and [https://github.com/apoorvabhargava/Implementation-of-CARED-in-ns-3 Implementation CARED AQM in ns-3] in my first year of postgraduate. Currently, I am working on Alignment and Validation of ns-3 TCP with Linux TCP using ns-3 Direct Code Execution framework (DCE).
+
* '''About Me:''' I am a 2nd-year postgraduate student at National Institute of Technology, Karnataka India. I have worked on [https://github.com/apoorvabhargava/Implementation-of-TCP-Jersey-in-ns-3 Implementation of TCP Jersey in ns-3] and [https://github.com/apoorvabhargava/Implementation-of-CARED-in-ns-3 Implementation Cautious Adaptive RED in ns-3] in my first year of postgraduate. Currently, I am working on Alignment and Validation of ns-3 TCP with Linux TCP using ns-3 Direct Code Execution framework (DCE).
 +
 
 +
= 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 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 [https://github.com/apoorvabhargava/ns-3-dev-git/wiki 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 provide the proper documentation of all the differences. 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 will 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 ===
 +
* 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: ===
 +
* 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: ===
 +
* Align the differences found in ECN and validate the implementation in dumbbell topology using DCE.
 +
 
 +
=== Week 3: ===
 +
* Validate Data Center TCP in data center topology using DCE.
 +
 
 +
=== Week 4: ===
 +
* Start understanding the codebase of SACK in ns-3 as well as Linux.
 +
* Document the differences observed.
 +
 
 +
=== Week 5: ===
 +
* Align the differences found in SACK and validate the implementation using DCE.
 +
 
 +
=== Week 6: ===
 +
* Study the codebase of DSACK in ns-3 and Linux.
 +
* Document the differences observed.
 +
 
 +
=== Week 7: ===
 +
* Align the differences found in DSACK and validate the implementation using DCE.
 +
 
 +
=== Week 8: ===
 +
* Study the codebase of RACK in ns-3 as well as in Linux.
 +
* Document the differences.
 +
 
 +
=== Week 9: ===
 +
* Align the differences found in RACK and validate the implementation using DCE.
 +
 
 +
=== Week 10: ===
 +
* Study the codebase of Paced Chirping in ns-3 as well as Linux.
 +
* Document the differences.
 +
 
 +
=== Week 11: ===
 +
* Align the differences found in Paced Chirping and validate the implementation using DCE.
 +
 
 +
=== Week 12: ===
 +
* Submit all the required patches.
 +
 
 +
= Weekly Progress =

Revision as of 11:23, 13 May 2019

Main Page - Current Development - Developer FAQ - Tools - Related Projects - Project Ideas - Summer Projects

Installation - Troubleshooting - User FAQ - HOWTOs - 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 which 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 in my first year of postgraduate. Currently, I am working on Alignment and Validation of ns-3 TCP with Linux TCP using ns-3 Direct Code Execution framework (DCE).

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 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 provide the proper documentation of all the differences. 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 will 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

  • 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:

  • 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:

  • Align the differences found in ECN and validate the implementation in dumbbell topology using DCE.

Week 3:

  • Validate Data Center TCP in data center topology using DCE.

Week 4:

  • Start understanding the codebase of SACK in ns-3 as well as Linux.
  • Document the differences observed.

Week 5:

  • Align the differences found in SACK and validate the implementation using DCE.

Week 6:

  • Study the codebase of DSACK in ns-3 and Linux.
  • Document the differences observed.

Week 7:

  • Align the differences found in DSACK and validate the implementation using DCE.

Week 8:

  • Study the codebase of RACK in ns-3 as well as in Linux.
  • Document the differences.

Week 9:

  • Align the differences found in RACK and validate the implementation using DCE.

Week 10:

  • Study the codebase of Paced Chirping in ns-3 as well as Linux.
  • Document the differences.

Week 11:

  • Align the differences found in Paced Chirping and validate the implementation using DCE.

Week 12:

  • Submit all the required patches.

Weekly Progress