Experiment with Hardware USRP Radio Units and a bare metal server

Prerequisites

  • You have a Slices account

  • You have successfully followed the previous tutorials

  • You have a basic understanding of kubernetes and containers

  • You have a good understanding of the 5G architecture

  • You have a good understanding of radio units (e.g., USRP).

  • You have a good understanding of OpenAirInterface and how to configure radio

The previous experiment used a simulated radio network. In this tutorial, we will work with a real radio network, utilizing a hardware radio unit and User Equipment (UE). To accomplish this, we will deploy the core network in the central SLICES-RI Kubernetes cluster, while the Radio Access Network (RAN) will operate on bare-metal resources.

For the hardware, we will utilize the R2LAB anechoic chamber, which provides both Radio Units (RUs) and User Equipment (UEs). In this setup, the N320 USRP from R2LAB will function as the radio unit of the gNB, while the N320 USRP will serve as the UE connecting to the 5G network. These devices will be referred to as n320 (for the radio unit) and n300 (for the UE). Additionally, a bare-metal server is required to act as the gNB and another one for the UE, which will be connected to the radio units. Since gNBs linked to real radio units demand high-performance networking and computing resources, the sopnode-w3 server, already connected to R2LAB in this manner, will be used to serve as the deployment node and run the gNB software. In a similar way, the sopnode-w2 server is used.

        graph TD
    subgraph cluster [centralhub k8s cluster]
        5g_core(5G core)
    end

    5g_core <--> gnb
    gnb <--> n320
    ue <--> n300
    n320 <-.->|radio| n300

    subgraph sophia_node [Sophia Node]
        subgraph data_center [Datacenter]
            subgraph sopnode_w2[sopnode-w2]
                ue(UE)
            end
            subgraph sopnode_w3[sopnode-w3]
                gnb(gNB)
            end
        end
        subgraph anechoic_chamber [Anechoic chamber]
            n300[n300]
            n320[n320]
        end
    end
    

As in the previous tutorial, go to the Configure Experiment section of the Post-5G Blueprint Service, as in step 1 configure the NRF Load Balancer IP and the Multus network prefix based on the prefix you receive with the command:

post5g experiment prefix my_experiment

Use the sopnode-w3 node for deployment. We will not use the kubernetes cluster to deploy the RAN and the UE, so deactivate RAN and UE by ensuring that GCN RAN Present and GCN UE Present are set to false in the assistant.

Instead, the RAN will be configured and run as part of your custom experiment. We provide a simple scenario in usrp_baremetal. To use this implementation, set the experiment URL to be https://gitlab.inria.fr/slices-ri/blueprints/post-5g/examples/-/archive/usrp_baremetal/examples-usrp_baremetal.tar.gz.

Once you have configured correctly the experiment with the assistant, make sure you generate the code by clicking on the Generate Experiment Code button (see step 2).

The next step is to reserve the necessary resources. Similar to step 3, book a time slot through the POS Calendar section of the Post-5G Blueprint Service and choose the resources r2lab, sopnode-w3, and sopnode-w3. Be sure to select the r2lab resource, as this ensures access to the radio hardware available in the anechoic chamber.

When your time slot begins, you can execute the experiment. Connect to the pos Webshell section of the Post-5G Blueprint Service and from the webshell retrieve the experiment information, just as you did in step 4.

post5g experiment get my_experiment

Before starting the experiment, ensure that the radio resources in R2LAB are powered on. You can control them from the pos Webshell using the command post5g nodes [start|stop] {<node_name>}, where <node_name> is the name of the resource you want to turn on or off. In this case, we’ll start the Radio Units with the following commands:

post5g nodes start n300
post5g nodes start n320

After that, you can launch the experiment using the usual method from the pos Webshell.

post5g experiment launch my_experiment

This will deploy the 5G core network on the SLICES-RI Kubernetes cluster, set up a bare-metal gNB on the sopnode-w3 server, and connect the N320 USRP to this gNB.

The experiment ends at this point, and if everything ran as expected, the results will be published to the MRS, as described in step 5. A Dataset ID will be provided, e.g., 130.

To access the data, visit the MRS section of the Post-5G Blueprint Service, enter the Dataset ID, and click the Download Data button. In the downloaded dataset, go to the sopnode-w3 folder and open the <date>_xp.sh.stdout file. It contains the compilation details and the output from the gNB console, similar to the following example.

gNB output.

At the end of the logs, you will notice a SIGTERM signal. This is normal. Since the gNB is designed to run continuously, but we wantwe automatically send a SIGTERM signal after 1 minute during the experiment. Feel free to check xp.sh for the implementation details.