Experiment with Hardware O-RAN Remote Units (O-RUs) 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, O-RUs).
You have a good understanding of OpenAirInterface and how to configure radio
The previous experiments used a simulated radio network or a real network that is realized with a USRP platform. In this tutorial, we will work with an off-the-shelf (COTS) O-RU device that installed in the UTH premises, than can create networks using the OAI platform. COTS UEs can attach to this network for performing ypur experiment. The default configuration of the network and the RU are using predefined channel parameters (100MHz bandwidth, 4T4R MIMO). The tutorial is enabling the device and starts the gNB that interfaces it, while connecting to the SLICES-RI network and Core Network cluster. If this is not wanted (e.g. user wants to use a local cluster), deploying the local network on the bare metal server that is very close to the RU is also possible.
As mismatching configs on the gNB and the RU can break the network operation, they are not exposed directly. Instead, using the bare metal server you can interface with HTTP commands with the gNB.
We will use the LITEON FlexFI O-RU platform for FR1 transmissions, interfacing the server that runs the gNB platform. Both devices are synced using a PTP grandmaster clock connected to the network.
In order to interface the platform, reserve and get access to the ran1-bm-uth-slices-gr
node.
This experiment connects:
The gNB to the O-RU, and is linked to the 5G core deployed in the central hub’s Kubernetes cluster.
A UE that is located in the same room to the network, and starts sending traffic for approx. 2 minutes over the network. The UE is also interfaced through an HTTP traffic to connect/disconnect from the network.
We use ran1-bm-uth-slices-gr
as a deployement node.
graph TD centralhub <--> gnb gnb <-.PTP Sync.-> grandmaster gnb <--10Gbps--> liteon-o-ru grandmaster <-.PTP Sync.-> liteon-o-ru ue <--RF--> liteon deploy -.-|HTTP API| gnb-server deploy -.-|HTTP API| ue-node subgraph SLICES resources subgraph Deployment node deploy[ran1-bm-uth-slices-gr] end subgraph "centralhub k8s cluster" centralhub(5G core) end subgraph "UTH Node" subgraph "Datacenter" subgraph "gnb-server" gnb(gnb) end subgraph "ue-node" ue(UE Quectel RM500Q) end end subgraph "PTP switch" grandmaster(grandmaster Clock) end subgraph "liteon-o-ru" liteon(LITEON O-RU) end end end
The UE is configured as follows, which is one of the default UE installed in OAI database; if you don’t use the core we provide by default, make sure to configure yours accordingly:
imsi: 001010000000100
key: fec86ba6eb707ed08905757b1bb44b8f
opc: C42449363BBAD02B66D16BC975D77CC1
dnn: oai
nssai_sst: 1
nssai_sd: 16777215
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
Specify ran1-bm-uth-slices-gr
as the deployment node. No need to add any other nodes to your experiment.
As the RAN will be configured and run as part of your custom experiment, we provide a simple scenario in oru-uth. To use this implementation, set the experiment URL to be https://post-5g-web.slices-ri.eu/uploads/nimakris/a308b1d63e3d437fa6371851fe3afe6a_5g_uth_oru.tar.gz, or download the file and upload it to the dashboard in the upload-experiment form.
We do not use the kubernetes cluster to deploy the RAN and the UE, so deactivate RAN and UE by ensuring that GCN RAN Present, GCN UE Present and GCN FlexRIC Present are set to false in the assistant.
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 ran1-bm-uth-slices-gr
.
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
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 node to interface the gNB on the ran1-bm-uth-slices-gr
server, connect the gNB to the O-RU, and connect the UE to the network.
When the UE is connected to the RAN, then the experiment will generate some traffic over the network.
After the automated experiment ends, you can interface the gNB and the UE as follows. First do an ssh connection to the ran1-bm-uth-slices-gr
node, and afterwards you can use the HTTP API.
ssh ran1-bm-uth-slices-gr
curl -X POST ORU.local:5000/start # To start the gNB
curl -X POST ORU.local:5000/stop # To stop the gNB
From a separate terminal, do the following to interface the UE
curl -X POST UE.local:5000/radio/off # To turn off the radio on the Quectel modem
curl -X POST UE.local:5000/cm/stop # To stop the quectel-CM utility
curl -X POST UE.local:5000/cm/start # To start the quectel-CM utility required to setup a data connection
curl -X POST UE.local:5000/radio/on # To turn on the radio on the modem
# From this point, the UE should connect to the network, if the network is transmitting
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 ran1-bm-uth-slices-gr
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.
Feel free to check xp.sh for the implementation details.