Part 5. Validate the Setup#
In this section, you will validate the ARC-OTA setup using bi-directional UDP.
Step 1: Add the SIM User Profile#
Modify the following files:
oai_db.sqlThere are 3 UEs pre-configured in this file. To find them, search for
001010000000001and add or edit them as needed../targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb-vnf.sa.band78.273prb.aerial.confModify this file on the gNB server if you want to change the MCC and MNC in the gNB config file.
Step 2: Setup the UE and SIM Card#
For reference, use the following: SIM cards – 4G and 5G reference software (open-cells.com)
Program the SIM Card with the Open Cells Project application “uicc-v2.6”, which can be downloaded here.
Use the ADM code specific to the SIM card. If the wrong ADM is used 8 times, the SIM card will be permanently locked.
sudo ./program_uicc --adm 12345678 --imsi 001010000000001 --isdn 00000001 --acc 0001 --key fec86ba6eb707ed08905757b1bb44b8f --opc C42449363BBAD02B66D16BC975D77CC1 -spn "OpenAirInterface" --authenticate
Existing values in USIM
ICCID: 89860061100000000191
WARNING: iccid luhn encoding of last digit not done
USIM IMSI: 208920100001191
USIM MSISDN: 00000191
USIM Service Provider Name: OpenCells191
Setting new values
Reading UICC values after uploading new values
ICCID: 89860061100000000191
WARNING: iccid luhn encoding of last digit not done
USIM IMSI: 001010000000001
USIM MSISDN: 00000001
USIM Service Provider Name: OpenAirInterface
Succeeded to authentify with SQN: 64
set HSS SQN value as: 96
Commercial UE Configuration Setup#
Install the “Magic IPERF” application on the UE:
To test with commercial UE, a test SIM card with Milenage support is required. The following must be provisioned on the SIM card and must match the Core Network settings: mcc, mnc, IMSI, Ki, OPc.
The APN on the commercial UE should be configured according to the Core Network settings.
Start the DNS. Core Network should assign a mobile IP address and DNS. If DNS is not assigned, set the DNS with the other Android app.
Step 3. Running End-to-End OTA#
This section describes how to run end-to-end (E2E) traffic from the UE to the edge Core Network.
Note
The UE can connect as close as 2-3 meters, with a maximum range of 10-15 meters. The connection distance outside of buildings has not been verified.
Start the CN5G Edge Application#
After the CN5G is started, use the oai-ext-dn container to run IPERF.
docker exec -it oai-ext-dn /bin/bash
Start the Aerial cuBB Container and Build the Source Code#
Execute the /cuPHY-CP/container/run_aerial.sh script to set up cuBB. This script downloads the image and starts the container; it will
then mount the local cuBB source code in the container and build it. Changes to the L1 script are stored locally.
# Run on host: start a docker container with the script below
cd ~/aerial-cuda-accelerated-ran
./cuPHY-CP/container/run_aerial.sh
Follow the Aerial cuBB documentation to build and run the cuphycontroller. The following instructions are for building and setting up the environment for running cuphycontroller. The following commands must be run from inside the cuBB container.
aerial@c_aerial_user:/opt/nvidia/cuBB$ ${cuBB_SDK}/testBenches/phase4_test_scripts/build_aerial_sdk.sh --preset 10_02 -- -DSCF_FAPI_10_04_SRS=ON
The Aerial cuPHY configuration files are located in the /opt/nvidia/cuBB/cuPHY-CP/cuphycontroller/config directory.
For ARC-OTA 1.7, the setup has been validated with the following configuration files:
cuphycontroller_P5G_FXN_GH.yamlfor the Supermicro GH200 server.
Before running the cuphycontroller, edit the cuphycontroller_<xyz>.yaml configuration file to point to the
correct MAC address of the O-RU and the correct PCIe address of the FH interface on the gNB. Determine whether
the NIC address is correct.
sed -i "s/ nic:.*/ nic: 0000:b5:00.0/" ${cuBB_SDK}/cuPHY-CP/cuphycontroller/config/cuphycontroller_<xyz>.yaml
sed -i "s/ dst_mac_addr:.*/ dst_mac_addr: 6c:ad:ad:00:02:02/" ${cuBB_SDK}/cuPHY-CP/cuphycontroller/config/cuphycontroller_<xyz>.yaml
sed -i "s/ vlan:.*/ vlan: 2/" ${cuBB_SDK}/cuPHY-CP/cuphycontroller/config/cuphycontroller_<xyz>.yaml
When the build is done and the configuration files are updated, exit the container. All changes will be stored locally so no need to commit the changes to a new docker image.
Creating the NVIPC Source Code Package#
In the latest release, NVIPC is no longer included in the OAI repository. You must copy the source package from
the Aerial cuBB sdk and add it to the OAI build files. Execute the following to create the nvipc_src.<data>.tar.gz
file.
cd ~/aerial-cuda-accelerated-ran
./cuPHY-CP/gt_common_libs/pack_nvipc.sh
cp ./cuPHY-CP/gt_common_libs/nvipc_src.$(date +%Y.%m.%d).tar.gz ~/openairinterface5g
This will create and copy the nvipc_src.<data>.tar.gz archive that is required to build OAI L2+ for Aerial.
Instructions can also be found in the Aerial FAPI.
Build gNB Docker Image#
In ARC-OTA 1.7, the OAI image is built in two steps. Instructions can be found in the Aerial FAPI tutorial.
Note
When building a Docker image, the files are copied from the filesystem into the image. After you build the image, you must make changes to the configuration inside the container.
Build OAI L2 image#
Use the below commands to build the OAI L2 code:
cd ~/openairinterface5g/
docker build . -f docker/Dockerfile.base.ubuntu --tag ran-base:latest
docker build . -f docker/Dockerfile.gNB.aerial.ubuntu --tag oai-gnb-aerial:latest
This will create two images:
ran-base:latestincludes the environment to build the OAI source code. This will be used then building theoai-gnb-aerial:latestimage.oai-gnb-aerial:latestwill be used later in the Docker Compose script to create the OAI L2 container.
Run gNB with Docker Compose#
ARC-OTA 1.7 includes a Docker Compose configuration for running gNB software. Refer to the OAI instructions on how to run with Docker Compose. The Docker Compose configuration for SMC-GH servers is located in the following file path:
~/openairinterface5g/ci-scripts/yaml_files/sa_gnb_aerial/docker-compose.yaml
Docker Compose will start containers running cuBB and OAI L2+. The Docker Compose script includes
an entry-point script for cuBB. The script points at the cuphycontroller_xxx.yaml configuration that you want to run.
The script will determine the server used (currently, only SMC-GH is supported) and use the correct cuphycontroller_xxx.yaml file.
If you want to use a custom configuration, you can also supply that as an argument in the Docker Compose file. This script is located
in the following file path:
~/openairinterface5g/ci-scripts/yaml_files/sa_gnb_aerial/aerial_l1_entrypoint.sh
Before running the Docker Compose script, you need to create a local .env file to set the tag of the local OAI L2 image.
echo 'REGISTRY=""' > .env
echo 'TAG="latest"' >> .env
The tag will set in the following location of the docker-compose.yaml file.
image: ${REGISTRY-oaisoftwarealliance/}${GNB_IMG:-oai-gnb-aerial}:${TAG:-develop}
You can now run ARC-OTA with the below commands.
cd ~/openairinterface5g/ci-scripts/yaml_files/sa_gnb_aerial
docker compose up -d
# console of cuBB
docker logs -f nv-cubb
# console of oai
docker logs -f oai-gnb-aerial
After following the instructions, you should have the following images:
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
oai-gnb-aerial latest 1f382f5c8962 6 days ago 514MB
ran-base latest 5ed95a3c6ad5 6 days ago 2.43GB
nvcr.io/nvidia/aerial/aerial-cuda-accelerated-ran 25-3-cubb dfac27c8c511 12 days ago 27GB
CUE Connecting to 5G Network#
Take the commercial UE out of airplane mode to start attaching the UE to the network. Make sure that the CUE is in airplane mode before starting OAI L2 stack.
Observe 5G Connect Status#
Refer to the Preamble log in the cuphycontroller console output.
Check the Core Network log or commercial UE log to determine whether NAS authentication and PDU session succeeded.
Run E2E Iperf Traffic#
Start ping, iperf, or other network app tests after the PDU session connects successfully.
You can install and run the “Magic IPerf” Android application on the commercial UE for this purpose.
Ping Test#
Ping the UE from the CN:
docker exec -it oai-ext-dn ping 10.0.0.2
Ping from the UE to the CN:
ping -I 10.0.0.2 192.168.70.135
Iperf Downlink Test#
Perform Iperf downlink test on the UE Side:
iperf3 -s
Perform Iperf downlink test on the CN5G Side:
# Test UDP DL
docker exec -it oai-ext-dn iperf3 -u -P 13 -b 80M -t 60 -c 10.0.0.2
#Test UDP bidirectional
docker exec -it oai-ext-dn iperf3 -u --bidir -P 13 -b 80M -t 60 -c 10.0.0.2
# Test TCP DL
docker exec -it oai-ext-dn iperf3 -P 13 -b 80M -t 60 -c 10.0.0.2
#Test TCP bidirectional
docker exec -it oai-ext-dn iperf3 --bidir -P 13 -b 80M -t 60 -c 10.0.0.2
Iperf Uplink Test#
Perform Iperf uplink test on the UE Side:
iperf3 -s
Perform Iperf uplink test on the CN5G Side:
#UDP
docker exec -it oai-ext-dn iperf3 -u -R -b 130M -t 60 -c 10.0.0.2
#TCP
docker exec -it oai-ext-dn iperf3 -R -b 130M -t 60 -c 10.0.0.2
To stop the containers, use the following commands:
docker compose down
Note
ARC-OTA is a P5G cellular network; specific enterprise switching/routing/firewalls/policies might need integration support to enable access to the World Wide Web.