Module README · Toolkit · Toolkit install guide · Docs site
The fastest path is the container.
docker pull uzairdocker69/ns3-ntn-toolkit:latestships this module already built alongside the other thirteen and the vendored stacks, so nothing below is needed to simply run the examples. Build from source when you intend to change the module.
ntn-slice is an ns-3.43 contributed module. The recommended way to run it is
inside the ns3-ntn-toolkit
tree (branch ntn-integration-v2), where every dependency below is already
present. It also builds on a vanilla ns-3.43 tree — the library links only the
ns-3 core; the examples additionally need the sibling toolkit modules listed in
section 2.
| Component | Version |
|---|---|
| OS | Linux (Ubuntu 22.04+ / Fedora 39+ recommended) |
| C++ compiler | gcc ≥ 11 or clang ≥ 14 |
| CMake | ≥ 3.24 |
| Python | ≥ 3.10 |
| ns-3 | 3.43 |
The module library (CMakeLists.txt) links only the ns-3 core module.
There are no other module dependencies for the library itself.
All three examples (ntn-three-slice-leo-geo, ntn-slice-isolation-traffic,
ntn-slice-real-stack) run real per-slice traffic over a real mmwave NR cell,
so they link the toolkit's ntn-traffic (NtnRealStackHelper, the
standards traffic applications), ntn-cho, ntn-constellation
(Sgp4MobilityModel), and mmwave (and its bundled lte).
ntn-slice-real-stack additionally links ntn-observability. Inside
ns3-ntn-toolkit these are already in contrib/; on a vanilla tree, clone
ntn-traffic, ntn-cho, ntn-constellation and (if needed)
ntn-observability from the toolkit into contrib/, and clone mmwave:
cd contrib/
git clone https://github.com/nyuwireless-unipd/ns3-mmwave.git mmwave
cd ..The orchestrator's (observation, action) shape matches the SliceEnv
Gymnasium wrapper in ns3-ai; that is only needed for the optional RL path,
not for the C++ allocator. The C++ allocator and all three examples build and
run without ns3-ai.
git clone -b ntn-integration-v2 https://github.com/Muhammaduazir69/ns3-ntn-toolkit.git
# ntn-slice is already in contrib/, alongside its sibling modulesGitLab mirror: https://gitlab.com/ns3-ntn-toolkit/ns3-ntn-toolkit.
Docker: uzairdocker69/ns3-ntn-toolkit:latest.
cd contrib/
git clone -b ntn-slice-v2 https://github.com/Muhammaduazir69/ntn-slice.git
cd ..Then add the sibling example modules from section 2 under contrib/.
./ns3 configure --enable-examples --enable-tests
./ns3 build ntn-slice
./ns3 show profile | grep ntn-slice # expect: ... ntn-slice ...# Three co-existing slices over LEO + GEO; GEO mode-skip + per-slice KPIs.
./ns3 run "ntn-three-slice-leo-geo --simTime=3600 --numUes=30 --csv=/tmp/three-slice.csv"
# Real per-slice traffic with NtnSliceSelector + SliceIsolationMonitor.
./ns3 run "ntn-slice-isolation-traffic --simSeconds=30 --numUes=12"
# Phase-2 RAN recipe: slices share ONE real mmwave cell; per-slice KPIs measured.
./ns3 run "ntn-slice-real-stack --duration=20 --numUes=12"Example target names: ntn-three-slice-leo-geo,
ntn-slice-isolation-traffic, ntn-slice-real-stack. See the README for the
full per-example argument list.
./test.py --suite=ntn-sliceThe suite registers as TestSuite("ntn-slice") and has 7 unit tests (S-NSSAI
pack/unpack round-trip, selector first-match-wins, URLLC min-throughput
preservation under contention, isolation-monitor breach detection, URLLC GEO
mode-skip, three-slice co-existence, RL-shares honoured).
Examples missing after configure — the examples need ntn-traffic,
ntn-cho, ntn-constellation and mmwave in contrib/ (section 2), and
ntn-slice-real-stack also needs ntn-observability; the library builds
without them, the examples do not.
rm -rf contrib/ntn-slice
./ns3 configure --enable-examples
./ns3 build