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. During GSoC 2018, I extended the ECN implementation in ns-3 to support ECN++ and AccECN, test the correctness of implementation and provide examples.
ECN++ is a sender-side change. The feedback behavior at the receiver depends on whether classic ECN feedback or experimental AccECN feedback has been negotiated. ECN++ allows the use of ECN on the following TCP control packets: SYNs, pure ACKs, Window probes, FINs, RSTs, and retransmissions. For each type of control packet or transmission, the detailed changes to the sender's behavior consist of the following two aspects: (a) whether it sets ECT (b) its response to congestion feedback.
AccECN provides more Accurate ECN feedback in the TCP header to provide more than one feedback signal per RTT. AccECN needs to cooperate with other standards which defined the usage of the information such as classic ECN (RFC 3168), ECN+ (RFC 5562) and ECN++. Therefore, how to use AccECN feedback information to optimize the TCP performance is out of scope for AccECN implementation. The AccECN has been designed into two parts: (a) an essential part that re-uses TCP header bits to feedback the number of arriving CE marked packets. (b) the supplementary part using a new AccECN TCP option that provides additional feedback on the number of bytes that arrive marked with each of the three ECN codepoints (not just CE marks).
I have implemened ECN++ and AccECN in ns-3 with necessary examples, tests and documentation. This work is important to the ns-3 and research community, because this is a contemporary research topic and because network simulators are extensively used for performance evaluation. This report presents the details of the work done during GSoC 2018, and provides the necessary information to reproduce this work.
This project was split into three phases, and each phase has been completed with documentation, tests, and example programs, and is ready to be reviewed for merging to the ns-3 mainline. My patches integrate with ns-3-dev as of changeset 13735.
Implemented ECN++ functionality with classic ECN feedback in ns-3 and documented its functionality. A test suite and an example is provided.
Implemented the Accurate ECN functionality in ns-3 without TCP Options and documented its functionality. A test suite is provided.
Implemented the Accurate ECN functionality in ns-3 with TCP Options and documented its functionality. A test suite is provided.
This project can be extended further as suggested below:
More details about this project, source code and final patch are available on the links given below: