ARA SD-RAN blueprint

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

  1. Install Operating System

    • Install Ubuntu 18.04 (preferably with a real-time or low-latency kernel).

  2. 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

  3. Edit /etc/default/grub and modify the following line:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_pstate=disable processor.max_cstate=1 intel_idle.max_cstate=0 idle=poll"
  1. Update GRUB:

sudo update-grub2
  1. Append the following line to /etc/modprobe.d/blacklist.conf:

blacklist intel_powerclamp
  1. Reboot the computer, install cpufrequtils:

sudo apt-get install cpufrequtils
  1. Create or edit /etc/default/cpufrequtils:

GOVERNOR="performance"
  1. Run the following commands:

sudo systemctl disable ondemand.service sudo /etc/init.d/cpufrequtils restart
  1. Reboot the system

  2. Install Build Tools (if not already installed)

sudo apt install build-essential sudo apt install curl

Install RIC (release 1.4)

  1. Download the SDRAN-in-a-Box:

git clone https://github.com/onosproject/sdran-in-a-box
  1. Switch to the release 1.4

git checkout v1.4.0
  1. Download sdran-in-a-box-master-stable.yaml and place it in the sdran-in-a-box directory.

  2. Deploy the RIC:

make OPT=ric

Verify deployment:

kubectl get pods --all-namespaces

Install SD-Core

  1. Build SD-Core from sdran-in-a-box:

make omec

Verify deployment:

kubectl get pods --all-namespaces

Network configuration

  1. 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 on

Note: <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}'
  1. Add net.ipv4.ip_forward=1 to /etc/sysctl.conf file and apply the changes using the sysctl -p command.

  2. Configure the forward rule in iptables for the enb interface:

sudo iptables -A FORWARD -o enb -j ACCEPT sudo iptables -A FORWARD -i enb -j ACCEPT
  1. Add 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 eno1
  1. Change 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 off
  1. Change 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 core

Install OAI

  1. Install UHD Dependencies:

sudo apt-get install libuhd-dev libuhd003 uhd-host
  1. Download OAI:

git clone https://github.com/onosproject/openairinterface5g.git
  1. Switch to the branch 2022.w51-pronto:

git checkout 2022.w51-pronto
  1. Build OAI:

source oaienv cd cmake_targets/ ./build_oai -I --gNB -w USRP --build-ric-agent --build-ran-slicing
  1. Configure 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 eno1
  1. Download du.conf and cu.conf configuration files and place them in cmake_targets/ran_build/build

  2. Run OAI CU and DU in two terminals

sudo ./nr-softmodem --sa -O cu.conf sudo ./nr-softmodem --sa -O du.conf

Test

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