ARA SD-RAN blueprint
This blueprint outlines the deployment of Aether SD-RAN v1.4 with OAI (branch 2022.w51-pronto) and USRP X310 on the ARA Wireless Living Lab. It aims to serve as a guide for readers interested in deploying Aether SD-RAN in their own setup and running it alongside OAI and SDR.
Environment Preparation
Install Operating System
Install Ubuntu 18.04 (preferably with a real-time or low-latency kernel).
Enter the BIOS and apply the following changes:
Disable secure booting option
Disable hyperthreading
Enable virtualization (VT-d, etc)
Disable all power management functions (c-/p-state related)
Enable real-time tuning
Enable Intel Turbo boost
Edit
/etc/default/gruband modify the following line:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_pstate=disable processor.max_cstate=1 intel_idle.max_cstate=0 idle=poll"Update GRUB:
sudo update-grub2Append the following line to
/etc/modprobe.d/blacklist.conf:
blacklist intel_powerclampReboot the computer, install
cpufrequtils:
sudo apt-get install cpufrequtilsCreate or edit
/etc/default/cpufrequtils:
GOVERNOR="performance"Run the following commands:
sudo systemctl disable ondemand.service
sudo /etc/init.d/cpufrequtils restartReboot the system
Install Build Tools (if not already installed)
sudo apt install build-essential
sudo apt install curlInstall RIC (release 1.4)
Download the SDRAN-in-a-Box:
git clone https://github.com/onosproject/sdran-in-a-boxSwitch to the release 1.4
git checkout v1.4.0Download sdran-in-a-box-master-stable.yaml and place it in the
sdran-in-a-boxdirectory.Deploy the RIC:
make OPT=ricVerify deployment:
kubectl get pods --all-namespacesInstall SD-Core
Build SD-Core from
sdran-in-a-box:
make omecVerify deployment:
kubectl get pods --all-namespacesNetwork configuration
Disable TCP Tx/Rx Checksum and GRO:
sudo ethtool -K <eno1> rx off tx on gro off gso on
sudo ethtool -K enb rx off tx on gro off gso on
sudo ethtool -K <calico_router> tx off rx off gro off gso onNote: <eno1> should be replaced by with the interface using ip a, <calico_router> should be replaced with the real calico network interface by using
route -n | grep $(kubectl get po -o wide --no-headers | awk '{print $6}') | awk '{print $NF}'Add
net.ipv4.ip_forward=1to/etc/sysctl.conffile and apply the changes using thesysctl -pcommand.Configure the forward rule in iptables for the
enbinterface:
sudo iptables -A FORWARD -o enb -j ACCEPT
sudo iptables -A FORWARD -i enb -j ACCEPTAdd the routing rules:
sudo route add -host 192.168.251.100 gw 192.168.1.107 dev eno1
sudo route add -host 192.168.251.100 gw 192.168.1.109 dev eno1Change network parameters in internal router:
kubectl exec -it router -- bash
route add -host 192.168.251.100 gw 192.168.251.4 dev enb-rtr
route add -host 192.168.1.107 gw 192.168.251.4 dev enb-rtr
route add -host 192.168.1.109 gw 192.168.251.4 dev enb-rtr
ifconfig core-rtr mtu 1550
ifconfig access-rtr mtu 1550
ifconfig enb-rtr mtu 1550
apt install ethtool
ethtool -K eth0 tx off rx off gro off gso off
ethtool -K enb-rtr tx off rx off gro off gso off
ethtool -K access-rtr tx off rx off gro off gso off
ethtool -K core-rtr tx off rx off gro off gso offChange MTU size in UPF:
kubectl exec -it upf-0 -n riab -- bash
ip l set mtu 1550 dev access
ip l set mtu 1550 dev coreInstall OAI
Install UHD Dependencies:
sudo apt-get install libuhd-dev libuhd003 uhd-hostDownload OAI:
git clone https://github.com/onosproject/openairinterface5g.gitSwitch to the branch 2022.w51-pronto:
git checkout 2022.w51-prontoBuild OAI:
source oaienv
cd cmake_targets/
./build_oai -I --gNB -w USRP --build-ric-agent --build-ran-slicingConfigure Network for OAI:
sudo ip a add 192.168.1.109/24 dev eno1
sudo ethtool -K eno1 tx off rx off gro off gso off
sudo route del -net 192.168.251.0/24 dev eno 1 # ignore error if happened
sudo route add -net 192.168.250.0/24 gw 192.168.1.108 dev eno1
sudo route add -net 192.168.251.0/24 gw 192.168.1.108 dev eno1
sudo route add -net 192.168.252.0/24 gw 192.168.1.108 dev eno1
sudo route add -net 192.168.84.0/24 gw 192.168.1.108 dev eno1Download du.conf and cu.conf configuration files and place them in
cmake_targets/ran_build/buildRun OAI CU and DU in two terminals
sudo ./nr-softmodem --sa -O cu.conf
sudo ./nr-softmodem --sa -O du.confTest
Test your deployment with an OAI UE or COTS UE.
Follow the End-to-End (E2E) verification steps in the SD-RAN documentation:
Installation with CU-CP and OAI nFAPI emulator for KPIMON & RSM — SD-RAN Docs 1.4.3 documentation