Difference between revisions of "GSOC2020Prague"

From Nsnam
Jump to: navigation, search
(Week 2 Reports)
m (Project Overview)
(One intermediate revision by the same user not shown)
Line 10: Line 10:
 
* '''Project Goals:''' Scalable congestion controls such as DCTCP improve performance over Reno and Cubic, which perform badly in high-speed networks (because of their slow response with large congestion windows). Several additional modifications over DCTCP have been drafted into the protocol called TCP Prague, that aims to integrate scalable congestion control into the Internet while still allowing it to coexist with current Classic protocols. This project would complete the integration and testing of fallback detection, RTT independence and pacing into the TCP Prague model of ns-3. The project would also validate the aforementioned implemenation against Linux and document the changes made. My proposal can be found [https://docs.google.com/document/d/17WmcPW74gGmAB_mg1y4B_ZRptNgEPkPWAzpEyK86RA4/edit?usp=sharing here].
 
* '''Project Goals:''' Scalable congestion controls such as DCTCP improve performance over Reno and Cubic, which perform badly in high-speed networks (because of their slow response with large congestion windows). Several additional modifications over DCTCP have been drafted into the protocol called TCP Prague, that aims to integrate scalable congestion control into the Internet while still allowing it to coexist with current Classic protocols. This project would complete the integration and testing of fallback detection, RTT independence and pacing into the TCP Prague model of ns-3. The project would also validate the aforementioned implemenation against Linux and document the changes made. My proposal can be found [https://docs.google.com/document/d/17WmcPW74gGmAB_mg1y4B_ZRptNgEPkPWAzpEyK86RA4/edit?usp=sharing here].
 
* '''Repository:''' [https://gitlab.com/deepakkavoor/ns-3-dev https://gitlab.com/deepakkavoor/ns-3-dev]
 
* '''Repository:''' [https://gitlab.com/deepakkavoor/ns-3-dev https://gitlab.com/deepakkavoor/ns-3-dev]
* '''About Me:''' I am a third-year undergraduate student pursuing Computer Science and Engineering at the National Institute of Technology Karnataka (NITK), India. My interests include computer networks, protocol design, cryptography and security. Previously, I have worked on implementing the Set-Associative Hashing feature for Fq-CoDel AQM in ns-3.
+
* '''About Me:''' I am a third-year undergraduate student pursuing Computer Science and Engineering at the National Institute of Technology Karnataka (NITK), India. My interests include computer networks, protocol design, cryptography and security. Previously, I have worked on implementing the Set-Associative Hashing feature for Fq-CoDel AQM in ns-3 (link to my [https://gitlab.com/nsnam/ns-3-dev/-/commit/94495ca0ef8bc0ed92ebb7430bcedb520f9e3847 commit]).
  
 
= Weekly Reports =
 
= Weekly Reports =
Line 30: Line 30:
  
 
=== Week 3 (June 15 - June 21) ===
 
=== Week 3 (June 15 - June 21) ===
 +
* Worked on fixing a few issues with the MR generated in Week 2.
 +
* Went through the code for RTT Independence in Linux Prague, and gathered a few notes in this [https://docs.google.com/document/d/1uSFm7tdjHJcvLan7vKVtjtj0ZlrwSmoaw_O2-n-qd20/edit?usp=sharing document] (work in progress).
 +
* Added code to enable different scaling heuristics (similar to Linux).
 +
<pre>
 +
  typedef enum
 +
  {
 +
    RTT_CONTROL_NONE,      //!< No RTT Independence
 +
    RTT_CONTROL_RATE,      //!< Flows with e2e RTT < target try to achieve same throughput
 +
    RTT_CONTROL_SCALABLE,  //!< At low RTT, trade throughput balance for same marks/RTT
 +
    RTT_CONTROL_ADDITIVE  //!< Behave as a flow operating with extra target RTT
 +
  } RttScalingMode_t;
 +
</pre>
 +
* The initial commit can be found [https://gitlab.com/deepakkavoor/ns-3-dev/-/commit/d10dcdcd8c7697d0e6f223167b673a79bcc70542 here].
 +
 +
=== Week 4 (June 22 - June 28) ===
 
(To be added)
 
(To be added)

Revision as of 12:02, 25 June 2020

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

Installation - Troubleshooting - User FAQ - HOWTOs - Samples - Models - Education - Contributed Code - Papers

Back to GSoC 2020 projects

Project Overview

  • Project Name: TCP Prague model for ns-3
  • Student: Deepak K
  • Mentors: Ankit Deepak, Mohit Tahiliani, Vivek Jain, Viyom Mittal
  • Project Goals: Scalable congestion controls such as DCTCP improve performance over Reno and Cubic, which perform badly in high-speed networks (because of their slow response with large congestion windows). Several additional modifications over DCTCP have been drafted into the protocol called TCP Prague, that aims to integrate scalable congestion control into the Internet while still allowing it to coexist with current Classic protocols. This project would complete the integration and testing of fallback detection, RTT independence and pacing into the TCP Prague model of ns-3. The project would also validate the aforementioned implemenation against Linux and document the changes made. My proposal can be found here.
  • Repository: https://gitlab.com/deepakkavoor/ns-3-dev
  • About Me: I am a third-year undergraduate student pursuing Computer Science and Engineering at the National Institute of Technology Karnataka (NITK), India. My interests include computer networks, protocol design, cryptography and security. Previously, I have worked on implementing the Set-Associative Hashing feature for Fq-CoDel AQM in ns-3 (link to my commit).

Weekly Reports

Community Bonding Period (May 4 - May 31)

  • Established the Wiki page for this project.
  • Rebased the GSoC 2018 implementation of ECN++ and AccECN (without TCP options) to the latest ns-3-dev. The rebased branches can be found in my repository
  • Went through the TCP models and architecture in ns-3 and studied about Paced Chirping.

After a discussion with my mentors and the L4S Team, it was decided that the first phase of this project should focus on pacing in TCP Prague. Therefore, the pacing model from the ns-3 TCP BBR implementation will be primarily referred.

Week 1 (June 1 - June 7)

  • Agreed upon the pacing structure for TCP Prague in ns-3. The document can be found here.
  • Integrated basic pacing model for New Reno, DCTCP and TCP Prague in ns-3 by adding methods PacingEnabled and UpdatePacingRate. This allows any congestion control to dynamically update its pacing rate depending on whether it is in Slow Start or Congestion Avoidance.

Week 2 (June 8 - June 14)

  • Aligned ns-3 Prague with Linux by enabling TcpPrague::CongControl.
  • Designed a test suite TcpPacingTest to test TCP packet pacing rate during Slow Start and Congestion Avoidance.
  • Rebased Joakim Misund's work on ns-3 Prague to latest ns-3-dev.
  • Generated an MR to add support for TCP Prague and pacing, along with the above test suite.

Week 3 (June 15 - June 21)

  • Worked on fixing a few issues with the MR generated in Week 2.
  • Went through the code for RTT Independence in Linux Prague, and gathered a few notes in this document (work in progress).
  • Added code to enable different scaling heuristics (similar to Linux).
  typedef enum
  {
    RTT_CONTROL_NONE,      //!< No RTT Independence
    RTT_CONTROL_RATE,      //!< Flows with e2e RTT < target try to achieve same throughput
    RTT_CONTROL_SCALABLE,  //!< At low RTT, trade throughput balance for same marks/RTT
    RTT_CONTROL_ADDITIVE   //!< Behave as a flow operating with extra target RTT
  } RttScalingMode_t;
  • The initial commit can be found here.

Week 4 (June 22 - June 28)

(To be added)