OCUDU with OpenAirInterface nrUE (Indoor/Sandbox and Outdoor)

Platform: OCUDU 5G software stack with an OpenAirInterface5g (OAI) nrUE, running over Universal Software Radio Peripherals (USRPs).

Resources used:

  • Indoor/Sandbox — one USRP X310 as the Base Station and one USRP B210 as the UE, located within the X310’s coverage.

  • Outdoor — USRP NI N320 (Base Station), N320 host computer, a USRP B210 UE, B210 host computer, power amplifiers, CommScope SS-65M-R2 Sector BS Antenna, and the UE antenna.

Description: This experiment establishes an over-the-air 5G NR link between a OCUDU and an OpenAirInterface nrUE. The gNB bring-up follows the same workflow as the monolithic deployment in OCUDU Prototyping with O-RAN Compliant nearRT-RIC and xApps, but instead of a COTS Quectel UE the link is terminated by a software OAI UE running on a B210.

OCUDU gNB with OpenAirInterface nrUE architecture

Experiment Architecture: OCUDU gNB (or CU-DU) connects over the air to an OpenAirInterface UE running on a USRP B210. The gNB reaches the Open5GS core (AMF/UPF) over the high-speed backhaul link, and the UPF provides the UE’s path to the Internet.


Note

This experiment uses a software OAI nrUE. If you instead want to drive the OCUDU gNB with a COTS Quectel UE and an O-RAN near-RT-RIC / xApp, see OCUDU Prototyping with O-RAN Compliant nearRT-RIC and xApps.

Note

For OCUDU 5G experiments, an Open5GS core network is deployed at the data center and runs an iperf3 server in the background. Users do not have direct access to the core network, but they can run iperf3 and ping commands against it from the UE.

Detailed Steps for the Experiment

  1. Login to ARA portal with your credentials.

  2. Reserve the Base Station and User Equipment. Create two reservations using the Project -> Reservations -> Leases tab from the dashboard. Select the tab below for your environment.

    Reserve the X310 host as the gNB and a sandbox host whose B210 lies within the X310’s coverage as the UE. The example below uses the B210 with serial 8001408; confirm it is in Sandbox-Host-026’s coverage using the coverage map in ARA Sandbox Service.

    Resource No.

    Site

    Resource Type

    Device Type

    Device ID

    1 (gNB)

    Sandbox

    AraRAN

    Host

    026

    2 (nrUE)

    Sandbox

    AraRAN

    Host

    025 or any node in BS coverage

    Note

    Each sandbox host (001–025) is connected to two B210s, and hosts 026–028 are each connected to a single X310. For the current location and coverage of the X310s and B210s in the Sandbox, see ARA Sandbox Service.

    Note

    The B210 with serial=8001408 is only one example. Any B210 that falls within the X310 cell on Sandbox-Host-026 can serve as the UE. Check the coverage map in ARA Sandbox Service for the other B210s in the gNB’s cell, and reserve the sandbox host that owns the B210 you choose. If you pick a different B210, use its serial number in the --usrp-args "serial=..." flag of the nrUE command in Step 8.

  3. Create the containers. Launch the containers on the respective nodes using the reservation IDs. The Base Station container ships the complete OCUDU stack (gnb, cu and du binary and the YAML configuration files), and the UE container ships OpenAirInterface5g with the nrUE.

    Component/Reservation

    Container Image

    CPU

    Memory

    Network

    Base Station (gNB)

    arawirelesshub/ocudu:indoor

    8

    8192

    ARA_Shared_Net

    User Equipment (nrUE)

    arawirelesshub/ocudu:oai_nrue

    8

    8192

    ARA_Shared_Net

  4. Once the containers are launched, take note of the floating IP if you want to access the containers from your PC via the ARA jumpbox. The containers can be accessed via the console tab of the respective containers in the Project -> Containers tab from the dashboard, or using SSH via the jumpbox server. Visit ARA Jumpbox for more information on accessing containers via the jumpbox.

  5. Identifying and selecting the SDR. In the Base Station container, run the following command to list the radios (SDRs) connected to the host. In case the command cannot find an SDR, refer to the instructions in FAQ.

    # uhd_find_devices
    

    The Sandbox-Host-026 host drives a single USRP X310. The command lists the X310 together with its addr (IP address). Note this IP address — for this example we assume the X310 is reachable at 192.168.50.2. You will write it into the gNB configuration file in Step 6c.

    ../../_images/uhd-find-dev-x310.png

    On the UE container, run uhd_find_devices as well to confirm the B210 is detected. This serial is used in the nrUE command in Step 8.

  6. Connecting the RAN to the core network. Before starting the gNB, the Base Station container must be able to reach the AMF of the data-center core network over its core-facing interface. The interface name differs by environment: Indoor/Sandbox containers use eth2 (IP in the 10.189.6.x range), while Outdoor containers mostly use eth4.

    6a. Note the core-facing interface IP address. Run ifconfig in the Base Station container and note the IP of the core-facing interface for your environment.

    # ifconfig eth2
    

    For this experiment we assume the IP address of eth2 is 10.189.6.240.

    6b. Add the route to the core network and verify AMF reachability. The Base Station container ships an add_route.sh helper that adds the static route to the core-network subnet. Pass your core-facing interface IP from Step 6a as its only argument.

    # ~/add_route.sh 10.189.6.240
    

    Once the route is added, ping the AMF to confirm reachability:

    # ping -I eth2 10.189.8.8
    

    Important

    The IP addresses shown above are only examples. Replace them with the actual core-facing interface IP you obtained from your own container in Step 6a. The script computes the gateway from the IP you pass, so handing it the wrong IP will install a wrong route.

    A successful ping confirms the gNB can reach the AMF (10.189.8.8). Stop the ping with CTRL+C once a few replies are received.

    6c. Configure the gNB. Open the gNB YAML configuration file and update the N2/AMF bind address (and the SDR address for Outdoor).

    Open the X310 configuration file:

    # nano ~/ocudu/build/apps/gnb/gnb_x310_tdd_n78_40mhz.yaml
    

    Since the X310 is the only SDR connected to the sandbox host, no SDR address entry is needed in device_args. Only set bind_addrs under cu_cp -> amf to the eth2 IP from Step 6a (e.g., 10.189.6.240).

    ../../_images/oai_ocudu_x310_bind_IP.png

    Save (Ctrl+O) and exit (Ctrl+X) the nano editor.

  7. Start the monolithic gNB. In a new terminal of the Base Station container, start the gNB with the configuration file for your environment.

    # cd ~/ocudu/build/apps/gnb
    # ./gnb -c gnb_x310_tdd_n78_40mhz.yaml
    

    The gNB brings up the radio and connects to the AMF over the N2 interface. When you see ==== gNB started ====, the gNB is ready.

    ../../_images/x310_ocudu_gnb_start.png

  8. Bring up the OAI nrUE. In the UE container, start the OAI nr-uesoftmodem UE using the command for your environment.

    The B210 UE is selected by its serial number (serial=8001408).

    # cd ~/openairinterface5g
    # source oaienv
    # cd cmake_targets/ran_build/build
    # ./nr-uesoftmodem -O ../../../targets/PROJECTS/GENERIC-NR-5GC/CONF/ue.conf -r 106 --numerology 1 --band 78 -C 3489420000 --ue-fo-compensation -E --ssb 42 --usrp-args "serial=8001408" --uicc0.imsi 001010000000003
    

    Console Traces

    On establishing a successful connection, the gNB and nrUE provide the following output.

    ../../_images/UE_terminal_ocudu_oai.png

    Note

    When the connection is established, a new interface oaitun_ue1 appears at the nrUE container with an IP address assigned by the SMF of the core network. To find the IP address, open (or SSH into) another terminal for the nrUE container and run ifconfig oaitun_ue1. The interface name oaitun_ue1 is used in the commands below.

    ../../_images/oaitun_ue1.png

    Important

    It may happen that the UE does not connect on the first attempt due to factors such as interference and line-of-sight (LoS) blockage. In such cases, stopping and running the nrUE command again provides a higher chance of getting the UE connected.

  9. Ping test to the Core Network. On the nrUE container, run the following command to ping through the core network and confirm a stable connection. The same command is used for both environments.

    # ping -I oaitun_ue1 8.8.8.8
    

    For recording the ping output to a text file (say ping_output.txt), use:

    # ping -I oaitun_ue1 8.8.8.8 | tee ping_output.txt
    

    A successful ping output looks like the following.

    ../../_images/ping_oai_ue.png

    On the gNB terminal, press t followed by Enter to activate the traffic trace. While the ping is running, the stats table shows live DL and UL traffic from the ICMP packets.

    ../../_images/ocudu_trace_with_ping.png

    The file can be further copied to your local machine using the instructions provided in Experiment Data Collection.

Throughput Test

  1. Measure throughput with iperf3. With the UE connected, run an iperf3 test from the nrUE container against the core-network iperf3 server. Use a bandwidth of 2M and bind to your oaitun_ue1 IP address (from Step 8). The same bandwidth is used for both indoor and outdoor.

    Uplink (UE -> core):

    # iperf3 -c 10.45.0.1 -p 5203 -b 2M -B <oaitun_ue1 IP>
    

    Downlink (core -> UE): add the -R (reverse) flag.

    # iperf3 -c 10.45.0.1 -p 5203 -b 2M -B <oaitun_ue1 IP> -R
    

    Note

    Replace <oaitun_ue1 IP> with your UE’s assigned IP address from Step 8.

    The iperf3 output shows the achieved throughput.

    ../../_images/iperf_oai_ue_2M.png

Troubleshooting

  • gNB cannot reach the AMF: Confirm you ran add_route.sh with your own eth4 IP from Step 6a, and that the ping -I eth4 10.189.8.8 succeeds before starting the gNB. The route must be in place for the N2/AMF connection to come up.

  • UE fails to connect to the gNB: Stop and re-run the nrUE command. Confirm the B210 serial (indoor) and the center frequency / SSB match the gNB configuration. Refer to FAQ.

  • SDR not found: If uhd_find_devices cannot find the SDR, refer to FAQ.

Tip

If you want to perform weather measurements along with the RAN experiment, refer to ARA Weather APIs.