Part 6. Validate the Setup
Modify:
oai_db.sql (with plain text editor)
There are 3 UEs pre-configured here. To find them, search for: 001010000000001 and add or edit them as needed.
On gNB server, if you want to change the change the MCC and MNC in the gNB config file. ./targets/PROJECTS/GENERIC-NR-5GC/CONF/vnf.sa.band78.fr1.273PRB.Aerial.conf
For reference, use the following:
SIM cards – 4G and 5G reference software (open-cells.com)
Program SIM Card with Open Cells Project application “uicc-v2.6” https://open-cells.com/d5138782a8739209ec5760865b1e53b0/uicc-v2.6.tgz
Use the ADM code specific to the SIM card. If the wrong ADM is used 8 times, the SIM card is 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
CUE Configuration Setup
Install the “Magic IPERF” application on the UE:
To test with CUE, a test SIM card with Milenage support is required. The following has to be provisioned on the SIM and it has to match the Core Network settings: mcc, mnc, IMSI, Ki, OPc
The APN on the CUE should be configured according to Core Network settings.
Start the DNS (Core network should assign mobile IP address and DNS. If DNS is not assigned, set DNS with other Android app).
This section describes how to run end-to-end traffic from UE to the edge core network.
UE can connect as close as 2-3 meters with a range of 10-15 meters. Connection distance outside of buildings is unverified.
Start CN5G Core Network
sudo sysctl net.ipv4.conf.all.forwarding=1
sudo iptables -P FORWARD ACCEPT
cd ~/oai-cn5g
docker compose up -d
Start 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 NVIDIA Aerial cuBB on the gNB
# Run on host: start a docker terminal
docker exec -it $AERIAL_CUBB_CONTAINER /bin/bash
Follow the Aerial documentation for building and running the cuphycontroller. The following instructions are for building and setting up the environment for running cuphycontroller. The following commands must be run from inside cuBB container.
cd /opt/nvidia/cuBB
export cuBB_SDK=$(pwd)
mkdir build && cd build
cmake ..
time chrt -r 1 taskset -c 2-20 make -j
insModScript=${cuBB_SDK}/cuPHY-CP/external/gdrcopy/
cd $insModScript && make && ./insmod.sh && cd -
export LD_LIBRARY_PATH=$cuBB_SDK/gpu-dpdk/build/install/lib/x86_64-linux-gnu:$cuBB_SDK/build/cuPHY-CP/cuphydriver/src
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/opt/mellanox/gdrcopy/src
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/opt/mellanox/dpdk/lib/x86_64-linux-gnu:/opt/mellanox/doca/lib/x86_64-linux-gnu
echo $LD_LIBRARY_PATH | sed 's/:/\n/g' | sudo tee /etc/ld.so.conf.d/aerial-dpdk.conf
sudo ldconfig
export GDRCOPY_PATH_L=$cuBB_SDK/cuPHY-CP/external/gdrcopy/src
# Make sure MPS is running
export CUDA_DEVICE_MAX_CONNECTIONS=8
export CUDA_MPS_PIPE_DIRECTORY=/var
export CUDA_MPS_LOG_DIRECTORY=/var
# Stop existing MPS
sudo -E echo quit | sudo -E nvidia-cuda-mps-control
# Start MPS
sudo -E nvidia-cuda-mps-control -d
sudo -E echo start_server -uid 0 | sudo -E nvidia-cuda-mps-control
Configuration files for ARC can be found in the following shared Google drive.
Aerial configuration files are located in /opt/nvidia/cuBB/cuPHY-CP/cuphycontroller/config.
Before running the cuphycontroller, edit the configuration file (cuphycontroller_P5G_SCF_FXN.yaml) to point at the correct MAC address of the ORU and the correct PCIe address of FH interface of the gNB.
sed -i "s/ nic:.*/ nic: 0000:b5:00.0/" ${cuBB_SDK}/cuPHY-CP/cuphycontroller/config/cuphycontroller_P5G_SCF_FXN.yaml
sed -i "s/ dst_mac_addr:.*/ dst_mac_addr: 6c:ad:ad:00:02:02/" ${cuBB_SDK}/cuPHY-CP/cuphycontroller/config/cuphycontroller_P5G_SCF_FXN.yaml
Start the cuphycontroller and wait for L1 to start.
# If you have an old phy.log you can remove or move it before starting. So you get the correct create/birth date.
rm -f /tmp/phy.log
# Start the cuphycontroller with the configuration from cuphycontroller_P5G_SCF_FXN.yaml
$cuBB_SDK/build/cuPHY-CP/cuphycontroller/examples/cuphycontroller_scf P5G_SCF_FXN
# Wait until you see a console log
====> PhyDriver initialized!
16:29:35.913840 C [NVIPC:DEBUG] ipc_debug_open: pcap enabled:
fapi_type=1 fapi_tb_loc=1
16:29:36.141657 C [NVIPC:SHM] shm_ipc_open: forward_enable=0
fw_max_msg_buf_count=0 fw_max_data_buf_count=0
16:29:36.153808 C [CTL.SCF] cuPHYController configured for 1 cells
16:29:36.153816 C [CTL.SCF]
====> cuPHYController initialized, L1 is ready!
Start OAI gNB L2 Stack on the gNB
Start up the OAI container and start the OAI nr-softmodem by entering the container to run the configuration file mounted from the host.
export OAI_GNB_CONTAINER=c_oai_aerial_$USER
export OAI_GNB_IMAGE=i_oai_aerial:latest
docker run --detach --privileged --rm \
--ipc host \
--network host --shm-size=4096m -it \
--name $OAI_GNB_CONTAINER \
-v /lib/modules:/lib/modules \
-v /dev/hugepages:/dev/hugepages \
-v /usr/src:/usr/src \
-v ~/openairinterface5g:/opt/oai/ \
-v ~/share:/opt/nvidia/cuBB/share \
-v /var/log/aerial:/var/log/aerial \
$OAI_GNB_IMAGE
docker exec -it $OAI_GNB_CONTAINER bash
# cd to the openairinterface directory
source oaienv
cd cmake_targets/ran_build/build/
./nr-softmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/vnf.sa.band78.fr1.273PRB.Aerial.conf --nfapi aerial --sa | ts | tee /var/log/aerial/oai.log
CUE Connecting to 5G Network
Take the CUE out of airplane mode to start the UE attaching to the network. Make sure that the CUE is in airplane mode before starting OAI L2 stack.
Observe 5G Connect Status
See Preamble log in cuphycontroller console output.
Check Core Network log or CUE log to see whether NAS authentication and PDU session succeed.
Running 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 CUE for this purpose.
Ping Test
Ping the UE from the CN:
docker exec -it oai-ext-dn ping 12.1.1.2
Ping from the UE to the CN:
ping -I 12.1.1.2 192.168.70.135
IPERF Downlink Test
UE Side:
iperf3 -s
CN5G Side:
# Test UDP DL
docker exec -it oai-ext-dn iperf3 -u -P 4 -b 100M -t 60 -c 12.1.1.2
#Test UDP bidirectional
docker exec -it oai-ext-dn iperf3 -u --bidir -P 4 -b 100M -t 60 -c 12.1.1.2
# Test TCP DL
docker exec -it oai-ext-dn iperf3 -P 4 -b 100M -t 60 -c 12.1.1.2
#Test TCP bidirectional
docker exec -it oai-ext-dn iperf3 --bidir -P 4 -b 100M -t 60 -c 12.1.1.2
IPERF Uplink Test
UE Side:
iperf3 -s
CN5G Side:
#UDP
docker exec -it oai-ext-dn iperf3 -u -R -b 60M -t 60 -c 12.1.1.2
#TCP
docker exec -it oai-ext-dn iperf3 -R -b 60M -t 60 -c 12.1.1.2
To stop the containers follow the following example:
docker stop $OAI_GNB_CONTAINER
docker rm $OAI_GNB_CONTAINER
ARC is a P5G cellular network. Specific enterprise switching/routing/firewalls/policies might need integration support to enable access to World Wide Web.