ARC-OTA Configuration App Note (Step-by-Step Debug Commands)#

Setup Aerial CUDA-Accelerated RAN#

In the installation guide for cuBB, find the Aerial CUDA-Accelerated RAN section and follow the instructions.

Running the cuBB Docker Container#

export GPU_FLAG="--gpus all"
export cuBB_SDK=/opt/nvidia/cuBB
#Name of your docker container
export AERIAL_CUBB_CONTAINER=cuBB_$USER
#Docker image downloaded from NGC (if you installed with SDKM run docker image ls to find the image name)
export AERIAL_CUBB_IMAGE=nvcr.io/nvidia/aerial/aerial-cuda-accelerated-ran:25-2-cubb

sudo usermod -aG docker $USER

docker run --restart unless-stopped -dP \
   $GPU_FLAG \
   --network host \
   --shm-size=4096m \
   --privileged \
   -it \
   --device=/dev/gdrdrv:/dev/gdrdrv \
   -v /lib/modules:/lib/modules \
   -v /dev/hugepages:/dev/hugepages \
   -v /usr/src:/usr/src \
   -v ~/share:/opt/cuBB/share \
   --userns=host \
   --ipc=host \
   -v /var/log/aerial:/var/log/aerial \
   --name $AERIAL_CUBB_CONTAINER \
   $AERIAL_CUBB_IMAGE

docker exec -it $AERIAL_CUBB_CONTAINER bash

Since the cuBB 23-4 release, the necessary testvectors for running OTA are already included. For running the Aerial E2E test with ru-emulator and test mac, follow the Aerial CUDA-Accelerated RAN documentation for generating the required testvectors.

Setup OAI gNB#

Clone the gNB Source Code#

Clone the OpenAirInterface5G repository.

git clone --branch ARC1.6_integration https://gitlab.eurecom.fr/oai/openairinterface5g.git ~/openairinterface5g

cd openairinterface5g

gNB Configuration File#

OAI L2 configuration used in the dafault setup is located here.

The L1 configuration to use is included in the latest Aerial release image at cuPHY-CP/cuphycontroller/config/cuphycontroller_P5G_FXN_GH.yaml.

Setup OAI CN5G#

Do the iptables setup below after every system reboot, or make this setup permanent in your Ubuntu system configuration.

On CN5G server, configure it to allow the traffic coming in by
adding this rule to iptables:

# On CN5G, upon startup:

sudo sysctl net.ipv4.conf.all.forwarding=1
sudo iptables -P FORWARD ACCEPT

Compile CN5G for the SMC-GH server:

# Clone the CN5G Repo
git clone --branch develop https://gitlab.eurecom.fr/oai/cn5g/oai-cn5g-fed.git
cd oai-cn5g-fed
./scripts/syncComponents.sh --amf-branch develop \
                    --ausf-branch develop \
                    --nef-branch develop \
                    --nrf-branch develop \
                    --smf-branch develop \
                    --udm-branch develop \
                    --udr-branch develop \
                    --upf-branch develop

mkdir component/oai-upf/build/ext && pushd $_
wget https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.15.tar.gz
popd
cp  ./ci-scripts/trfgen_entrypoint.sh .
docker build --target oai-amf      --tag oai-amf:develop --file component/oai-amf/docker/Dockerfile.amf.ubuntu component/oai-amf
docker build --target oai-smf      --tag oai-smf:develop --file component/oai-smf/docker/Dockerfile.smf.ubuntu component/oai-smf
docker build --target oai-nrf      --tag oai-nrf:develop --file component/oai-nrf/docker/Dockerfile.nrf.ubuntu component/oai-nrf
docker build --target oai-ausf      --tag oai-ausf:develop --file component/oai-ausf/docker/Dockerfile.ausf.ubuntu component/oai-ausf
docker build --target oai-udm      --tag oai-udm:develop --file component/oai-udm/docker/Dockerfile.udm.ubuntu component/oai-udm
docker build --target oai-upf      --tag oai-upf:develop --file component/oai-upf/docker/Dockerfile.upf.ubuntu component/oai-upf
docker build --target oai-udr      --tag oai-udr:develop --file component/oai-udr/docker/Dockerfile.udr.ubuntu component/oai-udr
docker build --target trf-gen-cn5g --tag trf-gen-cn5g:latest --file ci-scripts/Dockerfile.traffic.generator.ubuntu .

The user-configurable configuration files are located in the following paths:

  • ~/openairinterface5g/ci-scripts/yaml_files/sa_gh_gnb/database/oai_db.sql

  • ~/openairinterface5g/ci-scripts/yaml_files/sa_gh_gnb/conf/users.conf

Configuring OAI gNB and CN5G#

For the purpose of understanding which address is what in the example configuration setting and commands below, we will assume the gNB and CN5G servers have these interface names and IP addresses.

CN5G Server

eno1: 10.31.66.x            = SSH management port for terminal
eno2: 169.254.200.6         = BH connection on SFP switch for gNB-CN5G traffic

gNB Server

eno1:     10.31.66.x        = SSH management port for terminal
ens6f0:   b8:ce:f6:4e:75:40 = FH MAC address
ens6f0.2: 169.254.1.105     = FH IP address
ens6f1:   169.254.200.5     = BH connection SFP switch for gNB-CN5G traffic

gNB to set static route

On the gNB server, add this static route for a path to the CN5G server. Apply this route after each server power-on.

Syntax:
sudo ip route add 192.168.70.128/26 via <CN5G IP> dev <gNB interface for CN5G>

Example:
sudo ip route add 192.168.70.128/26 via 169.254.200.6 dev ens6f1

gNB to set the CN5G server to uses for AMF

Edit the used gNB configuration file. The configuration file for Aerial can be found here:

~/openairinterface5g/targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-vnf.sa.band78.273prb.aerial.conf

Update the Docker compose file to mount the updated file.

Below is an example with lab-specific network parameters. Your IP address and interface names may differ.

////////// AMF parameters:
amf_ip_address      = ({ ipv4       = "192.168.70.132"; });     #OAI internal AMF IP if the ip route is set as above
NETWORK_INTERFACES :
{
    GNB_IPV4_ADDRESS_FOR_NG_AMF              = "169.254.200.5"; #gNB side IP address
    GNB_IPV4_ADDRESS_FOR_NGU                 = "169.254.200.5"; #gNB side IP address
    GNB_PORT_FOR_S1U                         = 2152; # Spec 2152
};

Running CN5G#

Start the CN5G Container#

cd ~/openairinterface5g/ci-scripts/yaml_files/sa_gh_gnb
docker compose -f docker-compose-cn-gh.yaml up -d

Stop the CN5G Container#

cd ~/openairinterface5g/ci-scripts/yaml_files/sa_gh_gnb
docker compose -f docker-compose-cn-gh.yaml down

Monitor the CN5G Logs#

docker logs oai-amf -f

Capture PCAPs#

docker exec -it oai-amf /bin/bash
apt update && apt install tcpdump -y
tcpdump -i any -w /tmp/amf.pcap

Then copy the .pcap file out from the container.

docker cp oai-amf:/tmp/amf.pcap .

Example Screenshot of Starting CN5G#

aerial@e200-smc-11:~/openairinterface5g/ci-scripts/yaml_files/sa_gh_gnb$ docker compose -f docker-compose-cn-gh.yaml up -d
[+] Running 11/11
✔ Network oai-cn5g-public-net  Created                                                                                                                                                                      0.1s
✔ Container oai-ext-dn         Started                                                                                                                                                                      0.6s
✔ Container mysql              Started                                                                                                                                                                      0.4s
✔ Container oai-nrf            Started                                                                                                                                                                      0.5s
✔ Container asterisk-ims       Started                                                                                                                                                                      0.5s
✔ Container oai-udr            Started                                                                                                                                                                      0.7s
✔ Container oai-udm            Started                                                                                                                                                                      0.9s
✔ Container oai-ausf           Started                                                                                                                                                                      1.1s
✔ Container oai-amf            Started                                                                                                                                                                      1.3s
✔ Container oai-smf            Started                                                                                                                                                                      1.4s
✔ Container oai-upf            Started                                                                                                                                                                      1.6s
aerial@e200-smc-11:~/openairinterface5g/ci-scripts/yaml_files/sa_gh_gnb$ docker ps
CONTAINER ID   IMAGE                                                         COMMAND                  CREATED          STATUS                    PORTS                                                   NAMES
bb400b0f141a   oaisoftwarealliance/oai-upf:develop-arm-v2                    "/openair-upf/bin/oa…"   11 minutes ago   Up 11 minutes (healthy)   2152/udp, 8805/udp, 5342-5344/tcp                       oai-upf
decb46e8d8cc   oaisoftwarealliance/oai-smf:develop-arm-v2                    "/openair-smf/bin/oa…"   11 minutes ago   Up 11 minutes (healthy)   80/tcp, 5342-5344/tcp, 8080/tcp, 9090/tcp, 8805/udp     oai-smf
cc60c041a176   oaisoftwarealliance/oai-amf:develop-arm-v2                    "/openair-amf/bin/oa…"   11 minutes ago   Up 11 minutes (healthy)   80/tcp, 5342-5344/tcp, 8080/tcp, 9090/tcp, 38412/sctp   oai-amf
21b3e952aa1a   oaisoftwarealliance/oai-ausf:develop-arm-v2                   "/openair-ausf/bin/o…"   11 minutes ago   Up 11 minutes (healthy)   80/tcp, 5342-5344/tcp, 8080/tcp                         oai-ausf
10a0692aef9b   oaisoftwarealliance/oai-udm:develop-arm-v2                    "/openair-udm/bin/oa…"   11 minutes ago   Up 11 minutes (healthy)   80/tcp, 5342-5344/tcp, 8080/tcp                         oai-udm
30af70a06636   oaisoftwarealliance/oai-udr:develop-arm-v2                    "/openair-udr/bin/oa…"   11 minutes ago   Up 11 minutes (healthy)   80/tcp, 8080/tcp                                        oai-udr
7384932008cc   mysql:8.0                                                     "docker-entrypoint.s…"   11 minutes ago   Up 11 minutes (healthy)   3306/tcp, 33060/tcp                                     mysql
012a61c25ddc   oaisoftwarealliance/ims:latest-arm-v2                         "asterisk -fp"           11 minutes ago   Up 11 minutes (healthy)                                                           asterisk-ims
db35c87b14fc   oaisoftwarealliance/trf-gen-cn5g:latest-arm-v2                "/bin/bash -c ' ip r…"   11 minutes ago   Up 11 minutes (healthy)                                                           oai-ext-dn
c5a39c923c54   oaisoftwarealliance/oai-nrf:develop-arm-v2                    "/openair-nrf/bin/oa…"   11 minutes ago   Up 11 minutes (healthy)   80/tcp, 5342-5344/tcp, 8080/tcp                         oai-nrf