O-RAN 7.2 two-machine demo config and setup files

Signed-off-by: Merkebu Girmay <merkebu.girmay@openairinterface.org>
This commit is contained in:
Merkebu Girmay
2026-05-28 00:46:34 -07:00
parent b82dd47d03
commit adbdad7063
5 changed files with 413 additions and 0 deletions

View File

@@ -0,0 +1,130 @@
# O-RAN 7.2 Split Demo
Setup for running RU+UE on Peafowl and DU on Broadbill.
---
## Step 1: Environment and Repository
```bash
cd ~
git clone https://gitlab.eurecom.fr/oai/openairinterface5g.git oru-demo
cd oru-demo
git checkout oru-demo-branch
```
Save as `~/oru-demo/testenv`:
```bash
export TEST_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)
export DPDK_INST=$TEST_DIR/dpdk-stable-20.11.9
export C_INCLUDE_PATH="$DPDK_INST/include"
```
---
## Step 2: Build DPDK
```bash
cd ~
wget http://fast.dpdk.org/rel/dpdk-20.11.9.tar.xz
tar xf dpdk-20.11.9.tar.xz
mv dpdk-stable-20.11.9 ~/oru-demo/dpdk-stable-20.11.9
rm dpdk-20.11.9.tar.xz
cd ~/oru-demo/dpdk-stable-20.11.9
meson setup --prefix=$(pwd) build
sudo ninja -C build install
```
---
## Step 3: Build xRAN
```bash
git clone https://gerrit.o-ran-sc.org/r/o-du/phy.git ~/oru-demo/phy-f-1.0
cd ~/oru-demo/phy-f-1.0
git checkout oran_f_release_v1.0
git apply ~/oru-demo/cmake_targets/tools/oran_fhi_integration_patches/F/oru.patch
git apply ~/oru-demo/cmake_targets/tools/oran_fhi_integration_patches/F/oaioran_F.patch
cd ~/oru-demo/phy-f-1.0/fhi_lib/lib
TARGET=x86 WIRELESS_SDK_TOOLCHAIN=gcc \
RTE_SDK=~/oru-demo/dpdk-stable-20.11.9 \
XRAN_DIR=~/oru-demo/phy-f-1.0/fhi_lib \
make XRAN_LIB_SO=1
```
---
## Step 4: Build OAI
```bash
source ~/oru-demo/testenv
mkdir -p ~/oru-demo/build && cd ~/oru-demo/build
PKG_CONFIG_PATH=$DPDK_INST/lib/x86_64-linux-gnu/pkgconfig/ \
cmake .. -GNinja \
-DOAI_FHI72=ON \
-Dxran_LOCATION=$TEST_DIR/phy-f-1.0/fhi_lib/lib \
-DENABLE_WEBSRV=OFF -DENABLE_NRSCOPE=OFF -DENABLE_ENBSCOPE=OFF \
-DENABLE_UESCOPE=OFF -DENABLE_IMSCOPE=OFF \
-DENABLE_LDPC_CUDA=OFF -DENABLE_LDPC_AAL=OFF -DENABLE_LDPC_XDMA=OFF
PKG_CONFIG_PATH=$DPDK_INST/lib/x86_64-linux-gnu/pkgconfig/ \
cmake --build . --target oran_fhlib_5g
PKG_CONFIG_PATH=$DPDK_INST/lib/x86_64-linux-gnu/pkgconfig/ \
cmake --build . --target params_libconfig
PKG_CONFIG_PATH=$DPDK_INST/lib/x86_64-linux-gnu/pkgconfig/ \
cmake --build . --target vrtsim oairu oran_fhlib_5g nr-softmodem nr-oru nr-uesoftmodem
```
---
## Step 5: SR-IOV Setup
Run after every reboot. Scripts are in this folder.
Peafowl:
```bash
bash sriov-peafowl.sh
```
Broadbill:
```bash
bash sriov-broadbill.sh
```
---
## Step 6: Run
Broadbill (DU):
```bash
source ~/oru-demo/testenv
cd ~/oru-demo/build
sudo taskset -c 6-24 env LD_LIBRARY_PATH=.:$DPDK_INST/lib/x86_64-linux-gnu/ \
./nr-softmodem -O ../../ci-scripts/conf_files/oran-demo/du-demo.conf \
--thread-pool 16,17,18,19,20,21,22,23,24 \
--gNBs.[0].min_rxtxtime 6
```
Peafowl (RU):
```bash
source ~/oru-demo/testenv
cd ~/oru-demo/build
sudo taskset -c 6-24 env LD_LIBRARY_PATH=.:$DPDK_INST/lib/x86_64-linux-gnu/ \
./nr-oru -O ../../ci-scripts/conf_files/oran-demo/ru-demo.conf --vrtsim.role server
```
Peafowl (UE):
```bash
source ~/oru-demo/testenv
cd ~/oru-demo/build
sudo taskset -c 25-31 env LD_LIBRARY_PATH=.:$DPDK_INST/lib/x86_64-linux-gnu/ \
./nr-uesoftmodem -C 4049760000 -r 106 --numerology 1 --band 77 --ssb 516 \
--device.name vrtsim --vrtsim.role client --ue-nb-ant-tx 1 --ue-nb-ant-rx 1
```
Config file for RU: `ci-scripts/conf_files/oran-demo/ru-demo.conf`
Config file for DU: `ci-scripts/conf_files/oran-demo/du-demo.conf`

View File

@@ -0,0 +1,162 @@
Active_gNBs = ( "gNB-OAI");
Asn1_verbosity = "none";
gNBs =
(
{
gNB_ID = 0xe00;
gNB_name = "gNB-OAI";
tracking_area_code = 1;
plmn_list = ({ mcc = 208; mnc = 99; mnc_length = 2; snssaiList = ( { sst = 1; }); });
nr_cellid = 1;
pdsch_AntennaPorts_XP = 1;
pusch_AntennaPorts = 1;
do_CSIRS = 1;
do_SRS = 0;
sib1_tda = 15;
servingCellConfigCommon = (
{
physCellId = 0;
absoluteFrequencySSB = 669984;
dl_frequencyBand = 77;
dl_absoluteFrequencyPointA = 668712;
dl_offstToCarrier = 0;
dl_subcarrierSpacing = 1;
dl_carrierBandwidth = 106;
initialDLBWPlocationAndBandwidth = 28875;
initialDLBWPsubcarrierSpacing = 1;
initialDLBWPcontrolResourceSetZero = 11;
initialDLBWPsearchSpaceZero = 0;
ul_frequencyBand = 77;
ul_offstToCarrier = 0;
ul_subcarrierSpacing = 1;
ul_carrierBandwidth = 106;
pMax = 23;
initialULBWPlocationAndBandwidth = 28875;
initialULBWPsubcarrierSpacing = 1;
prach_ConfigurationIndex = 159;
prach_msg1_FDM = 0;
prach_msg1_FrequencyStart = 0;
zeroCorrelationZoneConfig = 0;
preambleReceivedTargetPower = -100;
preambleTransMax = 7;
powerRampingStep = 2;
ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR = 4;
ssb_perRACH_OccasionAndCB_PreamblesPerSSB = 15;
ra_ContentionResolutionTimer = 7;
rsrp_ThresholdSSB = 19;
prach_RootSequenceIndex_PR = 2;
prach_RootSequenceIndex = 1;
msg1_SubcarrierSpacing = 1,
restrictedSetConfig = 0,
msg3_DeltaPreamble = 2;
p0_NominalWithGrant = -100;
pucchGroupHopping = 0;
hoppingId = 0;
p0_nominal = -96;
ssb_PositionsInBurst_Bitmap = 0x1;
ssb_periodicityServingCell = 2;
dmrs_TypeA_Position = 0;
subcarrierSpacing = 1;
referenceSubcarrierSpacing = 1;
dl_UL_TransmissionPeriodicity = 5;
nrofDownlinkSlots = 3;
nrofDownlinkSymbols = 6;
nrofUplinkSlots = 1;
nrofUplinkSymbols = 4;
ssPBCH_BlockPower = 0;
}
);
SCTP :
{
SCTP_INSTREAMS = 2;
SCTP_OUTSTREAMS = 2;
};
amf_ip_address = ({ ipv4 = "172.21.6.5"; });
NETWORK_INTERFACES :
{
GNB_IPV4_ADDRESS_FOR_NG_AMF = "172.21.16.200";
GNB_IPV4_ADDRESS_FOR_NGU = "172.21.16.200";
GNB_PORT_FOR_S1U = 2152;
};
}
);
MACRLCs = (
{
num_cc = 1;
tr_s_preference = "local_L1";
tr_n_preference = "local_RRC";
pusch_TargetSNRx10 = 200;
pucch_TargetSNRx10 = 200;
ul_bler_target_upper = .35;
ul_bler_target_lower = .15;
pusch_FailureThres = 100;
}
);
L1s = (
{
num_cc = 1;
tr_n_preference = "local_mac";
prach_dtx_threshold = 110;
pucch0_dtx_threshold = 80;
pusch_dtx_threshold = -100;
tx_amp_backoff_dB = 36;
L1_rx_thread_core = 8;
L1_tx_thread_core = 9;
phase_compensation = 0;
}
);
RUs = (
{
local_rf = "no";
nb_tx = 1;
nb_rx = 1;
att_tx = 0;
att_rx = 0;
bands = [77];
max_pdschReferenceSignalPower = -27;
max_rxgain = 75;
sf_extension = 0;
eNB_instances = [0];
ru_thread_core = 10;
sl_ahead = 6;
tr_preference = "raw_if4p5";
do_precoding = 0;
}
);
security = {
ciphering_algorithms = ( "nea0" );
integrity_algorithms = ( "nia2", "nia0" );
drb_ciphering = "yes";
drb_integrity = "no";
};
log_config :
{
global_log_level = "info";
hw_log_level = "info";
phy_log_level = "info";
mac_log_level = "info";
rlc_log_level = "info";
pdcp_log_level = "info";
rrc_log_level = "info";
ngap_log_level = "info";
f1ap_log_level = "info";
};
fhi_72 = {
dpdk_devices = ("0000:41:11.0", "0000:41:11.1");
system_core = 11;
io_core = 12;
worker_cores = (13);
ru_addr = ("00:11:22:44:64:66", "00:11:22:44:64:67");
mtu = 9600;
fh_config = ({
T1a_cp_dl = (285, 470);
T1a_cp_ul = (285, 429);
T1a_up = (300, 450);
Ta3_up = (50, 350);
Ta4 = (25, 350);
ru_config = {
iq_width = 16;
iq_width_prach = 16;
};
});
};

View File

@@ -0,0 +1,69 @@
Asn1_verbosity = "none";
ORUs = (
{
tx_bw = [106];
rx_bw = [106];
carrier_tx = [4049760];
carrier_rx = [4049760];
prach_config_index = 159;
prach_msg1_start = 0;
tdd_period = 5;
num_dl_slots = 3;
num_dl_symbols = 6;
num_ul_slots = 1;
num_ul_symbols = 4;
numerology = 1;
tp_cores = [-1];
num_tp_cores = 1;
ru_thread_core = 9
});
RUs = (
{
local_rf = "no";
nb_tx = 1;
nb_rx = 1;
att_tx = 0;
att_rx = 0;
bands = [77];
max_pdschReferenceSignalPower = -27;
max_rxgain = 75;
sf_extension = 0;
eNB_instances = [0];
sl_ahead = 6;
tr_preference = "raw_if4p5";
do_precoding = 0;
});
log_config :
{
global_log_level = "info";
hw_log_level = "info";
phy_log_level = "info";
mac_log_level = "info";
rlc_log_level = "info";
pdcp_log_level = "info";
rrc_log_level = "info";
ngap_log_level = "info";
f1ap_log_level = "info";
};
fhi_72 = {
dpdk_devices = ("0000:01:01.0", "0000:01:01.1");
system_core = 6;
io_core = 7;
worker_cores = (8);
du_addr = ("00:11:22:44:54:00", "00:11:22:44:54:01");
mtu = 9600;
file_prefix = "ru";
app_id = "RU";
fh_config = ({
Ta3_up = (50, 350);
T1a_cp_dl = (285, 470);
T1a_cp_ul = (285, 429);
T1a_up = (300, 450);
Ta4 = (400, 440);
T2a_up = (350, 1200);
ru_config = {
iq_width = 16;
iq_width_prach = 16;
};
});
};

View File

@@ -0,0 +1,26 @@
#!/usr/bin/env bash
# SR-IOV setup for Broadbill (O-DU machine)
# NIC: ens2f1np1 (Intel E810, PCI 0000:41:00.1)
# VF0: 0000:41:11.0 MAC=00:11:22:44:54:00
# VF1: 0000:41:11.1 MAC=00:11:22:44:54:01
# Run after every reboot before starting nr-softmodem
set -e
echo 0 | sudo tee /sys/bus/pci/devices/0000:41:00.1/sriov_numvfs
echo 2 | sudo tee /sys/bus/pci/devices/0000:41:00.1/sriov_numvfs
sudo ip link set ens2f1np1 vf 0 mac 00:11:22:44:54:00 vlan 3
sudo ip link set ens2f1np1 vf 1 mac 00:11:22:44:54:01 vlan 3
sudo modprobe vfio-pci
echo vfio-pci | sudo tee /sys/bus/pci/devices/0000:41:11.0/driver_override
echo 0000:41:11.0 | sudo tee /sys/bus/pci/drivers/iavf/unbind 2>/dev/null || true
echo 0000:41:11.0 | sudo tee /sys/bus/pci/drivers/vfio-pci/bind 2>/dev/null || true
echo vfio-pci | sudo tee /sys/bus/pci/devices/0000:41:11.1/driver_override
echo 0000:41:11.1 | sudo tee /sys/bus/pci/drivers/iavf/unbind 2>/dev/null || true
echo 0000:41:11.1 | sudo tee /sys/bus/pci/drivers/vfio-pci/bind 2>/dev/null || true
echo "SR-IOV setup complete on Broadbill"

View File

@@ -0,0 +1,26 @@
#!/usr/bin/env bash
# SR-IOV setup for Peafowl (O-RU machine)
# NIC: enp1s0f0 (Intel E810, PCI 0000:01:00.0)
# VF0: 0000:01:01.0 MAC=00:11:22:44:64:66
# VF1: 0000:01:01.1 MAC=00:11:22:44:64:67
# Run after every reboot before starting nr-oru
set -e
echo 0 | sudo tee /sys/bus/pci/devices/0000:01:00.0/sriov_numvfs
echo 2 | sudo tee /sys/bus/pci/devices/0000:01:00.0/sriov_numvfs
sudo ip link set enp1s0f0 vf 0 mac 00:11:22:44:64:66 vlan 3
sudo ip link set enp1s0f0 vf 1 mac 00:11:22:44:64:67 vlan 3
sudo modprobe vfio-pci
echo vfio-pci | sudo tee /sys/bus/pci/devices/0000:01:01.0/driver_override
echo 0000:01:01.0 | sudo tee /sys/bus/pci/drivers/iavf/unbind 2>/dev/null || true
echo 0000:01:01.0 | sudo tee /sys/bus/pci/drivers/vfio-pci/bind 2>/dev/null || true
echo vfio-pci | sudo tee /sys/bus/pci/devices/0000:01:01.1/driver_override
echo 0000:01:01.1 | sudo tee /sys/bus/pci/drivers/iavf/unbind 2>/dev/null || true
echo 0000:01:01.1 | sudo tee /sys/bus/pci/drivers/vfio-pci/bind 2>/dev/null || true
echo "SR-IOV setup complete on Peafowl"