Releases: usnistgov/O-RAN-Testbed-Automation
Releases · usnistgov/O-RAN-Testbed-Automation
v1.7.1
Changelog for v1.7.1
- Extended testbed support to Ubuntu 26.04 LTS.
- OpenAirInterface: Added optional UE support for ZeroMQ instead of RF simulator [1], [2].
- Migrated testbed terminal usage from
gnome-terminalto genericx-terminal-emulatorfor broader desktop environment support.- For example, run the handover scenario in new windows with
./OpenAirInterface_Testbed/run_handover_scenario.sh show.
- For example, run the handover scenario in new windows with
- Open5GS: Made the Data Network Name (DNN) configurable at the slice level in
options.yaml. - Open5GS: Updated MongoDB from 4.4 to 7.0 for faster subscriber reading and writing.
- Open5GS (5gdeploy): Bumped Open5GS Docker component image to
v2.7.7. - FlexRIC: Added color coding to distinguish metric names, values, and units while logging in KPM monitoring xApps.
- FlexRIC: Changed default service model install directory from the system path to local
flexric/build, making it configurable.- Included additional script to check when the FlexRIC libraries were last modified.
- FlexRIC: Added option to disable SQLite to prevent unnecessary database write operations during runtime.
- FlexRIC: Added a metrics factory (
metrics_factory.c) to centralize management of E2SM-KPM metrics across xApps. - FlexRIC: Added E2 node IDs matching NR CGI (3GPP 38.423 clause 9.2.3.25) to E2SM-KPM monitoring xApps.
- FlexRIC: Switched to E2AP_V3 and KPM_V3_00 to fix indication message latency (
collectStartTime).- 64-bit encoded per E2SM-KPM clause 8.3.12, and IETF RFC 5905 clause 6.
- FlexRIC: Added build flag to ensure optimized Release binaries are generated instead of Debug binaries.
- OCUDU: Pinned the OCUDU Documentation commit hash to ensure a stable ZeroMQ broker download URL.
- OpenAirInterface and SRS UE: Suppressed UE namespace cleanup before re-initializing namespaces.
- Improved handling of GCC versioning checks to ensure consistent compiler installations.
- Updated software commit hashes to their latest stable versions.
- Revised documentation, diagrams, and source code to reflect the changes listed above.
Full Changelog: v1.7.0...v1.7.1
References
- OpenAirInterface UE Supported Radio Devices. NIST. https://github.com/usnistgov/O-RAN-Testbed-Automation/tree/a7d976fb325d2500cbcd98544803ebfb157fe9bc/OpenAirInterface_Testbed/User_Equipment#supported-radio-devices
- ZeroMQ Documentation. OpenAirInterface. https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/develop/radio/zmq/README.md
- Grafana Dashboard KPM Metrics Monitor Image. NIST. https://github.com/usnistgov/O-RAN-Testbed-Automation/blob/a7d976fb325d2500cbcd98544803ebfb157fe9bc/Images/xApp_Dashboard.png
- KPM Monitor Visualization in Grafana. NIST. https://github.com/usnistgov/O-RAN-Testbed-Automation/tree/a7d976fb325d2500cbcd98544803ebfb157fe9bc/OpenAirInterface_Testbed/RAN_Intelligent_Controllers/Flexible-RIC#kpm-monitor-visualization-in-grafana
v1.7.0
Changelog for v1.7.0: OCUDU Integration
Next Generation Node B
- Switched gNodeB implementation from srsRAN_Project 25.10 to OCUDU 26.04 [1].
- As the continuation of srsRAN_Project, OCUDU offers a high-performance open-source O-CU and O-DU [2], [3].
- Integrated ZeroMQ Broker for concurrent UE connections; default scenario now starts three UEs [4].
- Added support for OCUDU's O1 interface for configuration management and performance monitoring [5].
- Added Grafana dashboard for OCUDU metrics monitoring and visualization [6].
- See the Next_Generation_Node_B documentation for configuration details [7].
User Equipment
- OpenAirInterface: Fixed UE synchronization and handover issues by shifting DU PBCH and SIB1 in the time domain [8].
- Added script
check_rrc_state.shto check the current RRC state from the gNodeB.
- Added script
- SRS UE: Updated network namespace setup to be the same as OpenAirInterface namespaces for concurrent instances.
- SRS UE: Improved build idempotence by checking for existing ZeroMQ installations.
- SRS UE, OpenAirInterface: Fixed fetching of core address for 5gdeploy when simulating traffic to the core.
- OpenAirInterface, OCUDU, SRS UE: Updated DU/UE network namespace IP allocation for clarity and consistency.
- OpenAirInterface, OCUDU, SRS UE: Improved idempotence of network namespace setup and cleanup.
5G Core Network
- 5gdeploy: Fixed race condition by waiting for all subscribers to be added to database before proceeding with other components.
- 5gdeploy: Enabled UE slicing to correctly transmit S-NSSAI (SD=FFFFFF), fixing PDU session failures with free5GC NSSF.
- 5gdeploy: Patched OAI database to allow multiple SDs per UE for custom network slice configurations.
- 5gdeploy: Added option to toggle resetting
orantestbedscenario upon generating configurations. - 5gdeploy: Bumped core component versions to latest releases (e.g., free5GC v4.2.1, oai-fed v2.2.0, gtp5g v0.9.16).
- Open5GS: More efficient Open5GS install/uninstall, and fixed a segfault by using
mesonviapip3instead ofapt. - Open5GS: Enabled Position-Independent Code (PIC) in Open5GS builds for shared library support.
- Open5GS: Enabled
pipefailfor Open5GS WebUI installer and uninstaller scripts.
RAN Intelligence Controllers
- FlexRIC: Migrated xApps to use new NRCellDU-level distribution metric
CARR.PDSCHMCSDist.BinX.BinY.BinZ (PDSCH_RBs)[9]. - FlexRIC: Added script to interact with the InfluxDB database from the KPM monitor xApp.
- FlexRIC: Fixed E2 identification in KPM monitoring xApps for improved RAN controller messaging.
- O-RAN SC: Moved backup J, K, and L release
commit_hashes.jsonfiles to their respective directories. - O-RAN SC Near-RT RIC: To prevent hanging gNodeB, added detection of unhealthy/inaccessible E2 termination.
- O-RAN SC Near-RT RIC: Restored deprecated
pkg_resourcesfromsetuptoolsfor the DMS CLI. - O-RAN SC Non-RT RIC: Fixed ChartMuseum registration to improve Non-RT RIC installation reliability.
General
- Instead of HTTPS, added optional SSH support for
git clone(enable withexport USE_GIT_SSH=true). - Made
IP_ADDRESSfetching consistent and added a toggle for code patching (APPLY_PATCHES=true). - Enhanced error handling and coverage in dependency download scripts (
Additional_Scripts/). - Added optional Node Version Manager (
nvm) support for consistent Node.js versioning. - Improved robustness of Docker and MongoDB installation scripts with better state-checking.
- When stopping an application, used square brackets to prevent self-matching.
- Normalized and cleaned up usage of sudo pre-authentication across scripts.
- Fixed file permissions when
$SUDO_USERis set and differs from$USER. - Fixed exit trap loop behavior to not persist when cancelled by the user.
- Improved cleanup of directories and added dependency removal scripts in
Additional_Scripts/. - Updated software commit hashes to the latest versions; additional tweaks and improvements.
Full Changelog: v1.6.0...v1.7.0
References
- The srsRAN Project journey continues as OCUDU. GitHub. srsran/srsRAN_Project#1470
- Open-Centralized-Unit-Distributed-Unit (OCUDU). OCUDU. https://ocudu.org/
- OCUDU Documentation. GitLab Pages. https://ocudu.gitlab.io/ocudu_docs
- OCUDU Multi-UE Emulation Tutorial. GitLab Pages. https://ocudu.gitlab.io/ocudu_docs/user_manual/tutorials/srsue/#multi-ue-emulation
- OCUDU O1 Adapter https://ocudu.gitlab.io/ocudu_docs/oran_apps/ocudu_o1_adapter/
- OCUDU Grafana Dashboard WebUI. NIST. https://github.com/usnistgov/O-RAN-Testbed-Automation/tree/main/Next_Generation_Node_B#ocudu-grafana-webui
- O-RAN-Testbed-Automation, gNodeB Documentation. NIST. https://github.com/usnistgov/O-RAN-Testbed-Automation/blob/main/Next_Generation_Node_B/README.md
- Handover Tutorial for OAI. OpenAirInterface. https://gitlab.eurecom.fr/oai/openairinterface5g/-/blob/0ba31c0f89dd3162c7d87142da2b0f4e08abeb58/doc/handover-tutorial.md#run-the-setup:~:text=DU0%20and%20DU1%20should%20use%20different%20SSBs
- Flexible-RIC xApp Deployment. NIST. https://github.com/usnistgov/O-RAN-Testbed-Automation/tree/main/OpenAirInterface_Testbed/RAN_Intelligent_Controllers/Flexible-RIC/#running-an-xapp
v1.6.0
Changelog for v1.6.0
OpenAirInterface
- Migrated to latest configuration style and usage instructions (e.g., multiple RF simulator front ends).
- Added support for physical-layer visualization and IQ sample extraction with ImScope
nrscope.- For more information, see OpenAirInterface_Testbed/Next_Generation_Node_B.
- Handover scenario supports arbitrary number of DUs via
--num-dus [N], and optional component toggling. - Revised the UE and DU network namespace allocation scripts for clarity and readability.
- Added option to share gNodeB's dynamically-cloned
flexric/repository with the FlexRIC testbed component. - Added option to disable sharing
openairinterface5g/repository between gNodeB and UE when on same system. - Added option to configure E2 termination port.
- Updated FlexRIC and xApps; fixed InfluxDB installation for the KPM monitoring xApp.
- Added option to configure SST and SD for the FlexRIC KPM RC xApp.
O-RAN SC Near- and Non-RT RICs
- Upgraded software repositories to the latest M-Release.
- Improved installation process of SMO and Non-RT RIC components.
- Added non-systemd installation option for Kubernetes deployments.
- Fixed ability to specify an alternative E2 termination port.
- Removed image caching from xApp uninstaller to enforce pulling clean images.
- Added
commit_hashes_l_release.jsonfor O-RAN SC L-Release backward compatibility.
- Added
5G Core Network
- Network slicing (S-NSSAI) is now a list of slices that are applied to subscribers.
- Added non-systemd option across core components to support background processes in place of
systemctlservices. - Improved robustness of MongoDB and WebUI installation scripts.
General
- Added confirmation dialog before installing the srsRAN-based and OpenAirInterface-based testbeds.
- Improved Docker and Kubernetes installation and uninstallation across environments.
- Added optional non-systemd execution mode for Docker-based deployments.
- Made SCTP management consistent across components.
- File ownership no longer assumes user group; only based on username.
- Stop scripts recover if the terminal gets broken.
- Updated software dependency commit hashes, migrating srsRAN_Project configs to latest format.
- Additional minor improvements to documentation, diagrams, and source code.
Issues Resolved
- Resolved issue #8: Clarification about GPU and CPU support.
- Thanks to @HeeJaeMon123 and @Icelab-2020 for the suggestion.
Full Changelog: v1.5.0...v1.6.0
v1.5.0
Changelog for v1.5.0: 5gdeploy Integration
- Added modular core network support via USNISTGOV/5gdeploy [1].
- Supported cores: Open5GS [2], OAI CN5G [3], free5GC [4], and Open5GCore [5].
- Supported disaggregated UPF implementations: Open5GS UPF [2], free5GC UPF [4], Open5GCore UPF [5], eUPF [6], OAI UPF [7], OAI VPP UPF [8], SD-Core BESS [9], and NDN-DPDK [10].
- For details, see the
Additional_Cores_5GDeploy/directory and the 5gdeploy GitHub repository [1].
- Added ability to run split OpenAirInterface CU-DU deployments with support for an arbitrary number of DUs.
- Added scenario automation for F1 handover of a UE between multiple DUs in the OpenAirInterface testbed.
- Added optional interactive telnet support to the OpenAirInterface gNodeB and CU installation scripts.
- Added automatic configuration generation for the O1 adapter connecting to OpenAirInterface gNodeB.
- Fixed SCTP module loaders to properly handle kernels with built-in
nf_conntrack_sctp(e.g.,lowlatencykernels). - Improved support for UE-to-core and core-to-UE traffic generators when using cores beyond Open5GS.
- FlexRIC KPM: Added E2SM-KPM support for custom slicing (1-octet if SD=0xFFFFFF, otherwise 4-octets, SST+SD) [11].
- KPM with Grafana: Added support for serving and visualizing CSV files beyond
KPI_Metrics.csvfor better organization. - Fixed Open5GS subscriber generation to assign correct static IP and slice SST+SD when using over three RFsim UEs.
- srsRAN gNB: Improved configs to maintain UE sessions for up to two hours of inactivity and synced with latest version.
- Updated all software commit hashes and configuration files to ensure compatibility with the most recent versions.
- Revised documentation, diagrams, and source code to reflect the changes listed above.
Full Changelog: v1.4.5...v1.5.0
References
- Junxiao Shi (2025), 5gdeploy: 5G Core Deployment Helper, National Institute of Standards and Technology. https://github.com/usnistgov/5gdeploy
- Open Source implementation for 5G Core and EPC. Open5GS. https://open5gs.org
- 5G Core Network. OpenAirInterface. https://gitlab.eurecom.fr/oai/cn5g
- Open Source 5G Core Network based on 3GPP R15. Free5GC. https://github.com/free5gc/free5gc
- Open5GCore - 5G Core Network for Research, Testbeds and Trials. Open5GCore. https://www.open5gcore.org
- 5G User Plane Function (UPF) based on eBPF. edgecomllc. https://github.com/edgecomllc/eupf
- An eBPF implementation of the User Plane Function. OpenAirInterface. https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-upf
- OpenAir CN 5G for UPF - Using a VPP implementation. OpenAirInterface. https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-upf-vpp
- Open Source Cloud Native Mobile Core. Aether SD-Core. https://github.com/omec-project/bess
- Shi, J., Pesavento, D. and Benmohamed, L. (2020), NDN-DPDK: NDN Forwarding at 100 Gbps on Commodity Hardware, 7th ACM Conference on Information-Centric Networking (ICN 2020), Montreal, CA, [online], https://doi.org/10.1145/3405656.3418715, https://tsapps.nist.gov/publication/get_pdf.cfm?pub_id=930577
- O-RAN Alliance (2025), O-RAN.WG3.E2SM-KPM-v03.00: E2 Service Model for Key Performance Measurements, Clause 8.3.11, O-RAN Alliance Technical Specification. https://specifications.o-ran.org/download?id=810
v1.4.5
Changelog for v1.4.5
- Updated Open5GS subscriptions to use static UE addressing, e.g., UE 1 consistently receives 10.45.0.101.
- Subnet is configurable by updating
ogstun_ipv4orogstun_ipv6in 5G_Core_Network/options.yaml.
- Subnet is configurable by updating
- Made loading of SCTP modules consistent for N2 (gNB <-> core) and E2 (gNB <-> Near-RT RIC) interfaces.
- Corrected O-RAN SC Non-RT RIC control panel release version to be compatible with Non-RT RIC gateway.
- Fixed Kubernetes installation of O-RAN SC RICs by changing Content Delivery Network from baltocdn to buildkite.
- Upgraded
yqexpression syntax to version v4.47.2, and pinned yq version to avoid incompatibilities. - Revised expressions using
jqto handle input argument URIs safely using--arg. - Improved robustness of
apt-getinstallations across systems by usingenvto pass variables. - Improved handling of script paths including prevention of globbing when echoing script paths.
- To align with latest software versions, updated system requirements for installing every testbed component.
- Improved documentation clarity and consistency across scripts.
Full Changelog: v1.4.4...v1.4.5
v1.4.4
Changelog for v1.4.4
- Improved automation by adding flags to
apt-get installto prevent automatic service restarts and suppress interactive prompts. - Added 5G core option to avoid
systemctland instead use background processes for better containerization support. - Improved lifecycle management of 5G core components and accessibility of mongodb database configurations.
- Updated UE IMSI generation algorithm to avoid collisions when the number of UEs is greater than twelve.
- Fixed configuration of srsRAN_Project for network slicing support when Slice Differentiator is not 0xFFFFFF.
- Improved error handling and robustness of Kubernetes and Helm installations for O-RAN SC Near/Non-RT RICs.
- Added input argument to FlexRIC KPM monitor to CSV xApp for the measurement periodicity (default: 1000 ms).
- Improved debugging capabilities by adding GNU debugger scripts for FlexRIC and the FlexRIC xApps.
- Fixed KPM measurement offset by one indication for the metrics collected in OpenAirInterface gNB.
- Improved patch logic of OpenAirInterface components to ensure backup files remain unpatched.
- Cleaned up redundancy and improved general organization, management, and documentation.
Issues Resolved
- Resolved issue #6: Added checks to ensure that the correct
yqis being used. - Resolved issue #5: Don't reset iptables by default on O-RAN SC RIC installation.
- Thanks to @The1andOnlyZeRo for finding both of these issues.
Full Changelog: v1.4.3...v1.4.4
v1.4.3
Changelog for v1.4.3
- Updated O-RAN SC repositories to L Release, OpenAirInterface repositories to release v2.3.0, srsRAN_Project to release v25.04, and other testbed components' commit hashes to their latest versions.
- Updated Docker, Kubernetes, and Helm versions for O-RAN SC's Near-RT RIC and Non-RT RIC.
- Added support for network slice customization: Single Network Slice Selection Assistance Information (S-NSSAI) consisting of SST and SD (3GPP 23.003 §28.4.2) and each RAN component use a slice (default: SST=1, SD=FFFFFF).
- Revised testbed to use DNN/APN of "nist-dnn" by default (can be changed in
5G_Core_Network/options.yaml).- 5G_Core_Network/options.yaml now supports new parameters:
dnn,sst, andsd.
- 5G_Core_Network/options.yaml now supports new parameters:
- Added script to list the subscribers stored in the core's database:
5G_Core_Network/list_subscribers.sh. - Refactored all UE subscriber information generators into a single script for more straightforward customization:
User_Equipment/ue_credentials_generator.sh. - Added custom channel models to RFSim configurations shared between the OpenAirInterface gNB and UEs.
- Added
run_gdb.shfor OAI UE and gNB. They are functionally equivalent torun.shbut run within GNU Debugger. - Improved verbosity of outputs when generating a UE config file to help with debugging its subscription with the core.
- Added scripts to open a shell inside the UE, generate UE traffic to the core, and generate core traffic to the UE.
- Improved memory safety of xApps and resolved all compiler warnings from OpenAirInterface compilations.
- Split OpenAirInterface ongoing development of E2SM-KPM into a development branch.
- Added scripts for interactive Docker (lazydocker) for easier management of e2sim in O-RAN SC's Near-RT RIC.
- Enabled Istio sidecar injection on O-RAN SC's SMO/Non-RT RIC namespace.
- All scripts that open a web browser now use the system's default browser instead of hardcoded browser support.
- Updated documentation and diagrams, and made minor script revisions to improve organization and performance.
Issues Resolved
- Resolved issue #2: Disabled E2 for srsRAN's CU-CP so that the KPI Monitor stops crashing (still connects to the DU).
- Fixed issue #3: OAI's UE now properly uses its namespace so that uplink/downlink traffic is detected by the xApp.
- Thanks to @jnavarrog for finding both of these issues.
- Fixed issue #4: srsue crashing with incorrect tx/rx ports. Fixed by changing the example srsRAN_Project
gnb.yamland User_Equipmentue1.conffiles that are used (band 3, with frequency division duplexing).- Thanks to @ven457 for finding this issue.
Full Changelog: v1.4.2...v1.4.3
v1.4.2
Changelog for v1.4.2
- Added OpenAirInterface O1 adapter support for SMO/Non-RT RIC metrics logging and RAN control.
- Added sampling resolution option to Grafana dashboard and KPI_Metrics.csv server for improved scalability.
- Added periodicity input argument for xapp_kpm_moni_write_to_csv (default: 1000 ms).
- Detached OpenAirInterface RSRP calculation from gNB 1000 ms printing interval to allow xApp periods < 1000 ms.
- Added metric "Reporting Time Offset (ms)" to show deviations from expected epoch (≠0 if resources are exhausted).
- Added statistical RSRP metrics: RSRP.{Minimum, Quartile1, Median, Mean, Quartile3, Maximum}.
- Renamed KPI metric "N_RSRP_MEAS" to 'RSRP.Count' to match the above metrics.
- Fixed xApp signal handling following Mosaic5G's change to import environment variable "XAPP_DURATION".
- Added option for xApp to omit the first sample to avoid fluctuations in startup-sensitive KPI metrics on initial startup.
- Fixed patching logic to ensure that original files stay up-to-date with OpenAirInterface repositories.
- Updated E2 simulator connectivity with O-RAN SC's Near-RT RIC.
- Fixed permissions: Corrected file ownership-related issues and Docker no longer requires sudo.
- Updated all software dependency commit hashes to the latest versions.
- Additional minor tweaks and improvements.
Full Changelog: v1.4.1...v1.4.2
v1.4.1
Changelog for v1.4.1
- Fixed handling of invalid KPI metrics (e.g., RSRP and RSSI are now logged as empty cells in KPI_Metrics.csv when NaN).
- Changed FlexRIC KPM monitor xApp sample-filtering based on invalid RSRP measurements toggleable (default: disabled).
- Fixed Near/Non-RT RICs from accessing
ric-depif either is already running upon installation. - Improved robustness of O-RAN SC Near-RT RIC's E2 simulator installation and run scripts.
- Updated documentation of both Near-RT RICs to include notes about the supported metrics.
- Improved logging when interacting with testbed components (e.g., UE IDs are identified when echoing status).
- Updated all software dependency commit hashes to the latest versions.
- Updated srsRAN_Project configurations to align with the latest software version.
- Updated FlexRIC KPM monitoring xApp patches to the latest FlexRIC version's syntax and formatting.
- Cleaned up unused patch files in OpenAirInterface_Testbed.
- Adjusted NIST software disclaimers for consistency and correctness.
- Additional minor improvements to documentation, diagrams, and source code.
Full Changelog: v1.4.0...v1.4.1
v1.4.0
Changelog for v1.4.0
OpenAirInterface-based Components
- Scalability improvements: Grafana dashboard panels now request only their own data via optional URI parameters.
from=<start_epoch>: The starting epoch timestamp (ms) of the data being requested.to=<end_epoch>: The ending epoch timestamp (ms) of the data being requested.filter=<metric1,metric2,…>: List of columns (metric names) to include in the output response.
- Added units to the CSV column headers in KPM Monitor-to-CSV xApp.
- Added KPM Monitor-to-InfluxDB xApp that writes to InfluxDB v2 rather than to CSV.
- Fixed OpenAirInterface calculation of RSRP, N_RSRP_MEAS (set in OAI based on RSRP reset), RSSI, and RSRQ.
- Added new radio-layer metrics:
- Block error rates (BLER) uplink/downlink.
- Modulation and coding scheme indexes (MCS) uplink/downlink.
- MAC SDU error rates uplink/downlink (calculated with OAI patch).
- MAC SDU retransmission rates uplink/downlink (calculated with OAI patch).
- Updated Grafana dashboard layout and design to reflect the changes listed above.
- Patched type printing across all Mosaic5G FlexRIC C xApps.
- Added ability to simulate UE traffic with input args:
UE identifier,bandwidth, andflood duration.
O-RAN SC-based Components
- Extended supplemental features from Near-RT RIC to Non-RT RIC (e.g., Cilium, Hubble UI, and Wireshark logging functionalities).
- Added script to install just A1 simulators to simulate Near-RT RIC behavior across six RICs of varying A1 versions.
- Fixed bug where Non-RT RIC tests would fail after uninstalling and reinstalling the Non-RT RIC.
- Improved robustness of RIC installers and updated their documentation.
- Removed the control panel's dependence on the Non-RT RIC for installation modularity.
- Corrected dependencies for backward compatibility with O-RAN SC J-Release.
Additional Changes
- Fixed Open5GS WebUI script so that Grafana and WebUI ports do not collide and can run simultaneously.
- Fixed the permissions of files across the automation tool (755 → 644).
- Updated commit hashes, screenshots, diagrams, and documentation.
Full Changelog: v1.3.0...v1.4.0