Foundry · Infrastructure · swarm-routing/ns3-containers
ns3-containers
ns-3 pre-built and tested, so a contrib module compiles alone in seconds.
Unlocked: v1.0.0 released, 2 epics in progress, 3 planned Computed from its 6 epics · release v1.0.0, as they stood on .
What it does
ns3-containers publishes ghcr.io/swarm-routing/ns3-dev (public, no login): ns-3 configured and built with Ninja at /opt/ns-3. A downstream module is linked into the warm tree by ns3-build-contrib and compiles alone; the smoke gate counts the Ninja steps (8 today, gate 40) to prove the cache was hit.
Automatic pipelines build only the release ns-3 supports (its latest), read from upstream's tags by tools/ns3_matrix.py, never a hand-typed version. Older releases are built on demand and kept as history. Four profiles: default, debug (CI), sanitized (ASan + LSan + UBSan) and optimized (ns-3's release, for campaigns only, never -march=native).
What is tested is what is tagged: each image is built once, every test stage runs on that build by digest (structure, profile, smoke, integration, unit, Trivy security), and the published tags are a carbon copy of that digest, then signed and attested. A published number pins the immutable :<ver>-<profile>-<sha7> tag.
The image pipeline itself is versioned: a release archives the Dockerfile, ns3-build-contrib, the test stages and tools/ at a commit, while an image tag stays the ns-3 release it was built from. Before a latest-* tag moves, the downstream canary builds and tests every org module on the new image.
Diagrams
imagetools create), never a rebuild.default and debug.Package structure
The repository's layout, its licence per directory (LICENSING.md) and what exists today.
| Path | What | Licence | State |
|---|---|---|---|
docker/Dockerfile | BASE_IMAGE x NS3_VERSION x BUILD_PROFILE image | GPL-2.0-only | present |
docker/scripts/build-contrib.sh | /usr/local/bin/ns3-build-contrib: --strict-warnings, --coverage, --quality-modules | MIT OR GPL-2.0-only | present |
tools/ | ns3_matrix.py (supported vs on-demand releases, base digests, tags), pr_tests.py, pass_markers.py, cache_tags.py | MIT OR GPL-2.0-only | present |
tools/release/ | dist.sh: the release asset, the pipeline's source tarball | MIT OR GPL-2.0-only | present |
test/run.sh | every test stage against one image ref (the candidate digest in CI) | MIT OR GPL-2.0-only | present |
test/{structure,profile,smoke,integration,unit}.sh | the image contract, the profile's promise, incremental build, ns-3 simulates, ns-3's own suites | MIT OR GPL-2.0-only | present |
test/downstream.{sh,txt} | the downstream canary: every org module built and tested on the image (gates latest-*) | MIT OR GPL-2.0-only | present |
test/fixtures/ | swarm-hello (C++17..C++23 module), manet-canary, profile-probe | GPL-2.0-only | present |
.github/workflows/ | release.yml (releases through the org workflow); publish-images.yml (resolve, build once, test by digest, promote, sign, attest) | GPL-2.0-only | present |
Where it sits in the colony
Quests
The repository's epics and their sub-issues, as the issues stood on 2026-11-13: 13 of 32 sub-issues closed.
- #19 OS and compiler coverage — the platforms ns-3 supports and researchers use
In progress · 2 / 6 sub-issues closed - #36 image test pipeline — every image built is tested by digest (security, structure, unit, profile, integration, regression, downstream) before any tag moves
In progress · 5 / 9 sub-issues closed - #11 multi-platform ns3-dev images (linux/amd64 + linux/arm64) with docker buildx
Planned · no sub-issues - #12 developer documentation for the ns3-dev images (usage, per-image pages, debugging, CI/CD) kept current by AI review
Planned · 0 / 7 sub-issues closed - #27 security refresh — keep the supported ns-3 release's images patched (scheduled base refresh + scan-triggered rebuilds; older releases on demand)
Planned · 0 / 4 sub-issues closed
Closed: 1 epic
- #3 ns3-dev image matrix — top 10 ns-3 versions, full profiles on the latest 3, Ubuntu/Debian/slim bases
Done, closed 2026-11-02 · 6 / 6 sub-issues closed
Cite this project
Using ns3-containers in a paper? Cite the project as below, and the works it rests on from its references.
Text
Joppi, Daniel Henrique (n.d.). ns3-containers (version 1.0.0) [Computer software]. https://doi.org/10.5281/zenodo.24202109
BibTeX
@software{ns3containers,
author = {Joppi, Daniel Henrique},
title = {ns3-containers},
version = {1.0.0},
doi = {10.5281/zenodo.24202109},
url = {https://github.com/swarm-routing/ns3-containers}
}- Version
- 1.0.0
- Author
- Daniel Henrique Joppi · ORCID
- Licence
- GPL-2.0-only
Read from CITATION.cff at main when this site was built.
References
The 1 work docs/references.bib lists, read at main when this site was built. Each links its DOI; a work with none links its publisher's or institution's page.
Software it builds on
- Riley & Henderson, The ns-3 Network Simulator, Modeling and Tools for Network Simulation, 2010, pp. 15–34. DOI 10.1007/978-3-642-12331-3_2
Sources
The status and the quests come from the repository's issues and releases (2026-11-13); the other
facts on this page are kept by hand from its AGENTS.md (as of 2026-11-08).