This is a summary page for links to various code related to using ns-3 to study L4S. L4S is a proposed framework for deploying low-latency, low-loss, scalable congestion control in the Internet.
This page was last updated on November 19, 2020, in support of the IETF 109 ICCRG meeting.
L4S includes the following protocol components:
1) new ECN support in AQMs; in particular, the Dual Queue. The current RFC 3168 ECN delivers a Congestion Experience (CE) signal that has the same semantics as a packet drop. It can be thought of as a queue 'overload' signal, and endpoints are expected to react similarly to the detection of a packet drop. The new ECN support is intended to deliver more accurate ECN feedback (more granularity). The feedback is based on what is used for DCTCP (the 'ce_threshold' in Linux codel implementation can be used to generate this feedback).
2) a new ECN codepoint to differentiate L4S-aware traffic from flows using RFC 3168 ECN semantics. The IETF tsvwg decided to use the ECT(1) codepoint as an input signal for this purpose.
3) TCP Prague (a prototype congestion controller using the new feedback); the current version is based originally on DCTCP.
Support within current and future ns-3 releases
Some L4S-related code is in the ns-3 mainline, and some in external modules. Some is posted for review and will be incorporated into future releases, as currently planned below:
- ns-3.32 (latest ns-3 release), contains support for the following: DCTCP, CoDel with L4S support, FQ/CoDel with L4S support.
- ns-3.33 is planned for end of November or early December. This release probably will not have additional L4S-related code.
- ns-3.34 is planned for end of January, and we hope to include these components:
ns-3 has a framework for contributed code (extension modules maintained outside of the mainline). The ns-3 App Store is a site for some of these modules.
- QUIC (does not have L4S, but is available for someone to try to add...)