Difference between revisions of "GSOC2018AccECN ECN++"

From Nsnam
Jump to: navigation, search
(Week - 3 (May 28 - June 3))
(Week - 4 (June 4 - June 10))
Line 64: Line 64:
  
 
=== '''Week - 4 (June 4 - June 10)''' ===
 
=== '''Week - 4 (June 4 - June 10)''' ===
* Prepare a patch for DCTCP implementation in ns-3 and send it for review
+
* test basic ECN++ workflow in classicECN feedbackmode
 
* Prepare for first mid term review
 
* Prepare for first mid term review
  

Revision as of 15:36, 9 May 2018

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

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

Return to GSoC 2018 Accepted Projects page.

Project overview

  • Project name: Implementation of AccECN and ECN++ in ns-3
  • Abstract: Reducing Internet Transport Latency is an interesting research topic and has gained significant attention in the recent past. Some of the promising new solutions rely on Explicit Congestion Notification (ECN) (RFC 3168) to notify TCP endpoints of congestion that may be developing in a bottleneck queue, without resorting to packet drops. As a result, there have been attempts at Internet Engineering Task Force (IETF) to extend the functionality of ECN and provide rich feedback to TCP endpoints. In this regard, Accurate ECN feedback (AccECN) and ECN++ are two active topics of discussion at IETF. This project proposal is to: extend the ECN implementation in ns-3 to support AccECN and ECN++, test the correctness of implementation and provide examples.
  • Code: TBD
  • About me: I am a first-year postgraduate student in Tsinghua University. My major is computer science focusing on the research about computer network architecture mainly in routing layer and transport layer. I have attended 2017 IETF in Singapore, so I am pretty interested in implementing an IETF RFC or draft hands-on.

Technical Approach

Milestones and Deliverables

The entire GSoC period is divided into 3 phases. The deliverable at the end of each phase is as mentioned below :

Phase 1: Implement ECN++ with classic ECN feedback

  • state and related variable extension about implementing ECN++
  • extend packet send method to support ECN++ with classic ECN feedback, including SYN/ACK, pure ACK, Window prob, retransmission packet
  • implement congestionDetectionClassicECN method to detect whether encounter congestion when receiving packet with classic ECN feedback
  • implement congestion response to different packet types invoke congestionDetectionClassicECN

Phase 2: Implement basic workflow about AccECN

  • state and member variable extension to support AccECN implementation
  • tcp-header extension to support AccECN
  • define four AccECN counters(m_rcep, m_rceb, m_re0b, m_e1b) to support AccECN feedback which is used in packet header and option field setting
  • packet header setting and response before AccECN negotiation finished(packet do not contain the option field)
  • packet header setting and response after AccECN negotiation finished(packet do not contain the option field)
  • define a new tcp header option for AccECN
  • packet header setting and response before AccECN negotiation finished(packet contains the option field)
  • packet header setting and response after AccECN negotiation finished(packet contains the option field)

Phase 3: Implement ECN++ with AccECN feedback

  • extend SYN packet send method to support ECN++ with AccECN feedback
  • implement congestionDetectionAccECN method to detect whether encounter congestion when receiving packet with AccECN feedback
  • apply congestionDetectionAccECN method to trigger congestion response to different packet type

Weekly plan

Community bonding period (April 23 - May 14)

  • 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 14 - May 20)

  • state and related variable extension about implementing ECN++
  • test the basic workflow for ECN++ in noECN feedback mode

Week - 2 (May 21 - May 27)

  • extend packet send method to support ECN++ with classic ECN feedback, including SYN/ACK, pure ACK, Window prob, retransmission packet

Week - 3 (May 28 - June 3)

  • implement congestionDetectionClassicECN method to detect whether encounter congestion when receiving packet with classic ECN feedback
  • implement congestion response to different packet types invoke congestionDetectionClassicECN

Week - 4 (June 4 - June 10)

  • test basic ECN++ workflow in classicECN feedbackmode
  • Prepare for first mid term review

Week - 5 (June 11 - June 17)

  • Implementation of Fat tree topology helper
  • Implementation of BCube topology helper

Week - 6 (June 18 - June 24)

  • Implementation of necessary trace sources
  • Provide NetAnim examples for topology helpers

Week - 7 (June 25 - July 1)

  • Complete the documentation of topology helpers
  • Address comments of first review

Week - 8 (July 2 - July 8)

  • Prepare a patch for topology helpers implemented in ns-3 and send it for review
  • Prepare for second mid term review

Week - 9 (July 9 - July 15)

  • Review the existing implementation of PI2
  • Extend PI2 implementation with necessary classification features

Week - 10 (July16 - July22)

  • Test the extended PI2 implementation and complete the documentation
  • Prepare a patch for extended PI2 implementation and send it for review
  • Address comments of second review

Week - 11 (July23 - July29)

  • Implement the Modified ECN in ns-3
  • Test the Modified ECN implementation and complete the documentation
  • Prepare a patch for Modified ECN implementation and send it for review

Week - 12 (July30 - August5)

  • Integration of TCP models and extended PI2 AQM with Modified ECN
  • Provide examples to simulate TCP Prague
  • Bug fixes, final documentation and prepare the code to merge

Week - 13 (August6 - August14)

Weekly Progress