Hello all,
I'd like to announce Stratum, a new contributed module for ns-3. It is a QoS substrate: one composer with four pluggable strategy slots, on which DiffServ, L4S, and CAKE are expressed as three clients, each picking one strategy per slot.
The four slots:
- Classify-and-Meter: a meter strategy plus a classifier
- Mark-and-Route: a DSCP tag plus a PHB table
- Per-class slot array: up to eight inner queue discs
- Across-slot service policy: the scheduler or dispatcher
The three clients:
- DiffServ (RFC 2475): sr-TCM and tr-TCM (RFC 2697/2698) and TSW meters; DSCP and PHB marking; RED / RIO / drop-tail inner queue discs; and a choice of priority and fair-queueing schedulers.
- L4S (RFC 9331/9332): a DualPI2 coupled AQM with ECT(1) classification.
- CAKE: DSCP-to-tin mapping over per-tin FqCobalt, tracking the Linux sch_cake qdisc.
External AQMs and schedulers plug in as registry cells without editing the composer core.
The module ships with a handbook (using the substrate, its architecture, and the validation evidence), RFC conformance vectors (2697 / 2698 / 2859 / 9331 / 9332), and cross-stack comparisons of CAKE against the Linux kernel: host-isolation fairness and autorate-ingress capacity estimation (deposited separately; DOI below).
Stratum builds against ns-3.48 and carries a small set of ns-3 mainline patches, bundled and applied before build. Three install paths are documented: into an existing ns-3 tree, a script-managed sibling clone, or Bake.
App Store:
https://apps.nsnam.org/app/stratum/ Source:
https://github.com/digitalities/stratum-ns3 Handbook:
https://github.com/digitalities/stratum-ns3/tree/main/handbook Software:
https://doi.org/10.5281/zenodo.20723772 Dataset:
https://doi.org/10.5281/zenodo.20724063 License: GPLv2
The DiffServ client carries forward a 2001 ns-2 DiffServ module (IEEE ISCC 2002); the L4S and CAKE clients are new.
This is Stratum's first release to the wider ns-3 community. I'd genuinely welcome you trying it on your own topologies, poking at the edge cases, and telling me what works or breaks. Bug reports and patches are very welcome. Please use the GitHub issue tracker, or just reply on the list.
Kind regards,
Sergio Andreozzi
P.S. Stratum began as a personal project to bring my 2001 MSc thesis back to life on modern ns-3. It grew into something wider, and I hope it will be a useful addition to the ns-3 toolset.