NORI (New Open RAN Interface) is a module for the ns-3 simulator that integrates the NR 5G LENA module with a Near-RT RIC (Release I) from the O-RAN architecture via the standardized E2 interface.
This project enables:
- Metric collection via KPM Service Model
- Network control using the RAN Control Service Model
- Integration with custom xApps
- Operation in simulated environments without modifying the ns-3 core
To simplify the setup and experimentation with the NORI module, we provide blueprints with pre-configured environments, including ns-3, the NR 5G LENA module, NORI, and the necessary xApps.
These blueprints are ideal for quick testing, prototyping, and hands-on learning with the RIC stack.
💡 However, if you prefer to test the module in a different environment, just follow the steps below to manually install the required components and run the examples directly on your system.
Recommended OS: Ubuntu 20.04.6 LTS
sudo apt-get install -y build-essential git cmake libsctp-dev autoconf automake libtool bison flex libboost-all-devsudo apt install -y git gcc python3 cmake g++sudo apt install -y libc6-dev sqlite sqlite3 libsqlite3-dev libeigen3-devThis project requires GCC/G++ version 11. To install on Ubuntu 20.04:
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-11 g++-11Set GCC 11 as default:
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 10
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-11 20
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 10
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-11 20git clone https://github.com/lasseufpa/e2sim.git
cd e2sim/e2sim/
mkdir build
./build_e2sim.sh 3
cd ../..git clone https://gitlab.com/nsnam/ns-3-dev.git
cd ns-3-dev
git checkout -b ns-3.42 ns-3.42git clone https://gitlab.com/cttc-lena/nr.gitgit clone https://github.com/lasseufpa/nori.gitFrom the ns-3-dev directory:
./ns3 configure --enable-examples
./ns3 build -j 2Two example scenarios are provided to demonstrate the core functionality of the NORI module:
Simulates one gNB and one UE, with UDP traffic and KPM metrics enabled.
./ns3 run nori-sample -- --IpE2TermRic="YOUR_E2TERM_IP"🔎 You can get the E2Term pod IP with:
kubectl get pods -A -o wideTo view the E2Term logs:
kubectl logs deployment-ricplt-e2term-alpha-XYZ -n ricpltA variation of the sample with MIMO (multiple antennas) support.
./ns3 run nori-mimo-demo -- --IpE2TermRic="YOUR_E2TERM_IP"- Ensure the RIC stack is running before executing ns-3 examples.
- The ns-3 terminal will show E2-SETUP and RIC Indication messages when working correctly.
- Technical contact: [email protected]