Stratum is a QoS substrate for ns-3: a single composer with four pluggable strategy slots, on which DiffServ, L4S, and CAKE are expressed as three clients, each selecting one strategy per slot. Any node — edge or core — can be configured as any of the three, so one ns-3 module covers class-aware queueing (DiffServ), low-latency AQM (L4S), and per-flow isolation (CAKE).
Every node builds its queueing discipline from four slots, populated independently (an edge and a core node need not carry the same strategies, per RFC 2475 §2.4):
Each client selects one strategy per slot:
DiffServ (RFC 2475)
L4S (RFC 9331 / 9332)
CAKE (sch_cake parity)
Each client is a complete implementation in its own right; the substrate is what brings all three together.
External AQMs and schedulers plug in as cells in a registry template — no fork, no edits to the composer core. Downstream consumers (CLI catalogues, plot palettes, documentation tables, smoke tests) auto-derive their coverage from the registry, so adding a cell propagates everywhere without manual fan-out. In-tree today: 13 AQM cells and 9 scheduler cells.
17 test suites cover the three clients and RFC conformance vectors (RFC 2697 /
2698 / 2859 for metering; RFC 9331 / 9332 for L4S). The accompanying paper's
figures reproduce from the source tree via scripts/reproduce-paper.sh.
Stratum's DiffServ client derives from the author's 2001 DiffServ4NS ns-2 module (MSc thesis, University of Pisa; IEEE ISCC 2002; SourceForge 2006). The L4S and CAKE clients are new for this work.
CITATION.cff.Links
License: GPLv2.
Works with ns-3.48
Build History : Stratum v1.3.0Release Notes
Works with ns-3.48
Build History : Stratum v1.2Release Notes
Works with ns-3.48
Build History : Stratum v1.1Release Notes
This ns-3 extension is one or more contributed modules.