W8 - oran-ntn + FlexRIC bridge¶
Gallery¶
oran-ntn is the ns3-ntn-toolkit module that brings the O-RAN disaggregated RAN control architecture to non-terrestrial networks: a multi-tier RIC (real-time, Near-RT, and on-board Space-RIC), E2AP-style termination with canonical E2SM-KPM and E2SM-RC service models, A1 policy ingest, and a conflict-managed xApp framework, all driven by KPIs measured in-band on a real mmwave NR NTN data plane. It is the toolkit's space-O-RAN testbed: RIC control loops act on per-UE SINR and TBLER measured off an actual SpectrumPhy + MAC + HARQ/AMC + RLC/PDCP + RRC + EPC stack flying SGP4 satellite orbits, not on synthetic KPI generators.
Why it matters. Studying O-RAN over satellite means answering where the RIC should live, how feeder-link latency bounds the control loop, and whether xApps still converge when KPM travels one slant-range delay each way. oran-ntn is an open-source ns-3 testbed that makes RIC placement, payload architecture, and the E2 latency budget first-class measurable variables, with every KPM row tagged by provenance (phy-trace vs geometry-budget) so there are no hidden synthetic KPIs behind a control result.
What it simulates¶
- Multi-tier RIC. A real-time RIC (
OranNtnRtRic) co-located with the O-DU whose control loop is hard-bounded below the O-RAN 10 ms RT limit (a loop period at or above 10 ms refuses to start) and acts on per-UE SINR/TBLER measured from the live stack; the WG3OranNtnNearRtRickernel with xApp lifecycle, E2 termination, anOranNtnSdlshared-data layer, and metrics aggregation; and an on-boardOranNtnSpaceRicthat enters autonomous mode on feeder-link outage. - xApp framework with conflict management. The flagship scenario runs five xApps simultaneously (HO Predict, Beam Hop, Slice Manager, Doppler Comp, TN-NTN Steering), all derived from
OranNtnXappBase, with anOranNtnConflictManagerofferingPRIORITY_BASED,TEMPORAL, andMERGEresolution strategies and aconflict_log.csvaudit trail. Additional advanced xApps (interference management, energy harvest, predictive allocation, multi-connectivity, ISAC, THz beam/RIS/spectrum) ship in the same directory. - RIC placement as an experiment variable.
OranNtnRicPlacementsites the RIC on-board the satellite, on a HAPS, at a ground gateway, or in the ground cloud, and derives the one-way E2 latency from the live slant range plus site terms, binding anOranNtnE2Node's feeder delay to the real SGP4 / TR 38.811 mobility geometry. - E2 interface and KPM telemetry. An E2AP-style subscription/indication path (
OranNtnE2Node/OranNtnE2Termination) with delay-modeled indications and RC actions (one feeder delay on the measurement uplink, one on the control downlink viaReceiveRcAction()), optionally aligned to the Near-RT RIC control-loop tick. Canonical KPM measurement and label IDs emit a stablekpm_canonical.csv; KPM / RC / CCC / ephemeris service models sit behind a plugin ABI (OranNtnServiceModelRegistry), including E2SM-RC Style 3 connected-mode mobility. - A1 policy.
OranNtnA1PolicyManager/OranNtnA1Adapteringest orbit-aware constellation policies from a Non-RT RIC against an OSC-aligned A1 policy schema registry (JSON schemas ina1-policies/). - Cross-domain SMO.
OranNtnNwdafper-slice analytics with an SLA-risk score from measured KPM,OranNtnTpnControllertransport-path ranking and per-slice switching, andOranNtnCrossDomainSmo, one closed loop coordinating RAN quota, transport path, and edge compute. - Payload, fronthaul split, platform, and role switch.
NtnFhSplitModel(Opt 2 / 7.2a / 7.2b / Opt 8 with one-way latency bounds and fronthaul-rate multipliers, plusChooseBestSplit()),NtnPlatformSpec(UAV / HAPS / LEO / MEO / GEO classes with latency bands and enforceable UAV endurance), andOranNtnRoleSwitch(regenerative-payload role elevation RU to RU+DU to full gNB on measured battery, fronthaul-latency, and failure triggers with a real service-interruption window). - AI-native inference.
OranNtnOnnxXapploads.onnxmodels exported from the toolkit gym environments and infers on live measured feature vectors; ONNX Runtime is auto-detected at configure time, with a transparent heuristic fallback so every example still runs. - Disaggregated gNB. CU/DU/RU split with per-entity E2 termination via
OranNtnSplitGnbEntity,OranNtnF1Interface, andOranNtnOfhInterface, built withOranNtnSplitGnbHelper.
Standards & references¶
- O-RAN ALLIANCE. WG3 Near-Real-Time RIC and E2 (E2AP-style subscription/indication, E2SM-KPM, E2SM-RC including Style 3 connected-mode mobility); WG2 Non-RT RIC and A1 policy with an OSC-aligned schema registry; WG4 fronthaul split options (Opt 2 / 7.2a / 7.2b / Opt 8). The ASN.1 Aligned-PER codec for E2AP / E2SM-KPM / E2SM-RC and FlexRIC-compatible field names support external RIC bridging.
- 3GPP. TS 28.552 canonical KPM measurement names (emitted as
kpm_canonical.csvand per-slice KPM via the AI flow monitor); TR 38.801 / O-RAN WG4 fronthaul functional splits; TR 38.811 NTN UE mobility classes and TR 38.821-style NTN link-budget evaluation over live geometry; QoS flows carry S-NSSAI / 5QI slice identity in-band. - Transport realism (read before citing E2 results). E2AP-over-SCTP is not simulated; E2 indications and RC actions are delay-modeled simulator events, the same substitution ns-3 mainline applies to S1-AP / X2-AP. Wire-level E2 (E2AP/ASN.1-PER over real SCTP) via the FlexRIC bridge is gated on the FlexRIC Docker run; the bridge transport stub is not yet connected to the in-sim E2 nodes.
Use cases¶
- RIC placement study. Measure control-loop reaction time across on-board, gateway, and cloud RIC siting, with both legs of the loop riding the E2 latency of the chosen placement derived from live slant range (
oran-ntn-ric-placement-ab). - Closed-loop RIC traffic control. An mMIMO precoder xApp consumes per-second E2-KPM and issues an E2SM-RC
BEAM_SWITCHback throughReceiveRcAction(), recovering measured SINR/TBLER/goodput one feeder delay later (oran-ntn-ric-controlled-traffic). - Payload architecture comparison. Measure one-way delay per satellite payload (transparent / O-RU / O-RU+O-DU / full gNB) and check feeder delay against fronthaul-split feasibility, surfacing why LEO latencies rule out lower-PHY splits (
oran-ntn-payload-options-ab). - Cross-domain slice adaptation. Watch URLLC one-way delay climb as a serving satellite recedes, then snap back when NWDAF + SMO + the TPN controller re-route to a rising satellite (
oran-ntn-cross-domain-slice). - Post-disaster emergency communication. A gateway failure elevates the satellite to a full on-board gNB via role switch while the SMO protects a dedicated emergency slice (SST=5) by throttling eMBB quota (
oran-ntn-emergency-communication). - Platform latency validation. Verify measured user-plane RTT against each platform class's latency band across UAV / HAP / LEO / MEO / GEO (
ntn-platform-latency-validation).
Run it¶
# Real-stack flagship: Near-RT RIC + xApps driven by measured mmwave NR NTN PHY KPM
./ns3 run "oran-ntn-real-stack-scenario --duration=30 --numUes=6"
# Closed RIC control loop: E2SM-RC BEAM_SWITCH recovers measured goodput (compare --xapp=1 vs 0)
./ns3 run "oran-ntn-ric-controlled-traffic --simSeconds=40 --xapp=1"
# RIC placement A/B: control-loop reaction time per placement over live E2 latency
./ns3 run "oran-ntn-ric-placement-ab --simSeconds=40 --placement=cloud"
Test suites: ./test.py -s oran-ntn (core RIC / SM / A1 / Space-RIC), ./test.py -s oran-ntn-multi-tier-ric (RT-RIC bound, placement geometry, cross-domain loop, ONNX fallback), and ./test.py -s oran-ntn-ws4 (payload delay ladder, FH-split feasibility, endurance, role switch).