Lab 4: O-RAN Advanced
This experiment is to deploy a 5G Standalone (SA) network using OpenAirInterface (OAI) RF Simulator gNB and OAI minimal 5GC, using the F1 Split architecture. We also deploy FlexRIC as the Near-RT RIC with a monitoring xApp.
apiVersion: athena.trirematics.io/v1
kind: Network
metadata:
name: o-ran
namespace: trirematics
spec:
slices:
- plmn: "00101"
dnn: "internet"
network-mode: "IPv4"
service-type: eMBB
differentiator: 0x000000
ipv4-range: "12.1.1.0/24"
ipv6-range: "2001:db8:1::/64"
access:
- name: oai-cu-du
stack: 5g-sa
model: oai-ran/cu-du
radio:
device: rf-sim
identity:
an-id: 10
tracking-area: 1
cells:
- band: n78
arfcn: 641280
bandwidth: 40MHz
subcarrier-spacing: 30kHz
tdd-config:
period: 5ms
dl-slots: 7
dl-symbols: 6
ul-slots: 2
ul-symbols: 4
core-networks:
- core.o-ran
controller: ric.o-ran
core:
- name: core
stack: 5g-sa
model: oai-cn/minimal
identity:
region: 0
cn-group: 4
cn-id: 5
edge:
- name: ric
stack: 5g-sa
model: mosaic5g/flexric
- name: monitoring
stack: 5g-sa
model: mosaic5g/monitoring-c
profiles:
- mac-sm
- database
- name: sdl
stack: 5g-sa
model: mosaic5g/xapps-sdl
dns:
ipv4:
default: 8.8.8.8
secondary: 8.8.4.4
---
apiVersion: athena.trirematics.io/v1
kind: Terminal
metadata:
name: ue1
namespace: trirematics
spec:
vendor: oai
stack: 5g-sa
model: terminal/nr-rfsim
preferred-access: oai-cu-du.o-ran
target-cores:
- core.o-ran
identity:
imsi: "001010000000001"
pin: "1234"
opc: "0xc42449363bbad02b66d16bc975d77cc1"
key: "0xfec86ba6eb707ed08905757b1bb44b8f"
sqn: "0xff9bb4000001"
slice:
dnn: "internet"
network-mode: "IPv4"
service-type: eMBB
differentiator: 0x000000
radio:
bands:
- n78
readiness-check:
method: ping
target: google-ip
interface-name: oaitun_ue0
---
apiVersion: athena.trirematics.io/v1
kind: Terminal
metadata:
name: ue2
namespace: trirematics
annotations:
extras.trirematics.io/initial-delay: "10"
spec:
vendor: oai
stack: 5g-sa
model: terminal/nr-rfsim
preferred-access: oai-cu-du.o-ran
target-cores:
- core.o-ran
identity:
imsi: "001010000000002"
pin: "1234"
opc: "0xc42449363bbad02b66d16bc975d77cc1"
key: "0xfec86ba6eb707ed08905757b1bb44b8f"
sqn: "0xff9bb4000001"
slice:
dnn: "internet"
network-mode: "IPv4"
service-type: eMBB
differentiator: 0x000000
radio:
bands:
- n78
readiness-check:
method: ping
target: google-ip
interface-name: oaitun_ue0
In this lab, you are going to deal with a CSV file extracted from the xApp. You could use any tool including Excel, LibreOffice Calc, or Python to analyze the CSV file.
Deployment and Testing
Deploy the file using the command brc install network open-ran.yaml.
Check for the status of the deployment using the command brc observe and make sure all the Elements are in
the 1/1 Y state.
CSV Extraction
Use the following command to access to the MySQL shell for the xApps Shared Data Layer (SDL):
brc cic $element run --follow -- sql
The period between the MAC service model indication messages by default is 10 ms, meaning to get records for two UE
for the last 60 seconds, you need the last 12000 records.
The following command would extract the last 12000 records from the MAC service model for the two UEs and save them in
the /etc/t9s/athena/wmi/mysql/private/test1.csv file.
select tstamp, ngran_node, e2node_nb_id, frame, slot, dl_aggr_tbs, dl_aggr_prb, \
rnti, dl_mcs1 from MAC_UE ORDER BY tstamp DESC LIMIT 12000 INTO OUTFILE \
'/etc/t9s/athena/wmi/mysql/private/test1.csv' FIELDS TERMINATED BY ',' LINES \
TERMINATED BY '\n';
Exit the MySQL shell using the exit command.
Then use the following command to copy the file to your local machine:
brc cic {element} shell -- cat /etc/t9s/athena/wmi/mysql/private/test1.csv > test1.csv
Everytime you run this command, you have to give it a different file name, otherwise it would fail.
Run a downlink TCP throughput test for the first UE for the duration of 45 seconds and then extract the CSV file. Extract the output of Iperf command for the throughput test as well and save it along with the CSV file.
💬 Questions
- Explain the meaning of each column in the CSV file based on the SQL query.
- How many slots and frames are there in the CSV file?
- Which UE (based on the RNTI) is the target of the throughput test?
Data Analysis Questions
In the dataset, TBS and PRB are defined as the aggregated values over the whole duration of the test. Hence, to calculate TBS and PRB per frame, you should subtract the value of the previous frame from the value of the current frame. For the PRBs, you have to pay attention to the TDD pattern to understand which symbols are downlink and which are uplink. The PRB utilization is the ratio of the number of PRBs used for the transmission to the total number of PRBs in that frame.