User Guide¶
This is the user guide for D release of O-DU/l2. Follow installation-guide to get all the dependencies ready.
A. Execution:¶
I. Execution - On locally compiling O-DU High Source Code¶
Assign virtual IP addresses as follows:
ifconfig <interface name>:ODU “192.168.130.81”
ifconfig <interface name>:CU_STUB “192.168.130.82”
ifconfig <interface name>:RIC_STUB “192.168.130.80”
- PS: If O1 interface is enabled, IPs should match those configured in “startup_config.xml”
( Refer Installation Guide - “Setting up Netconf server” )
Execute CU Stub:
Navigate to CU execution folder
cd <O-DU High Directory>/l2/bin/cu_stub
Run CU Stub binary
./cu_stub
Execute RIC Stub:
Navigate to RIC execution folder
cd <O-DU High Directory>/l2/bin/ric_stub
Run RIC Stub binary
./ric_stub
Execute O-DU High:
Navigate to ODU execution folder
cd <O-DU High Directory>/l2/bin/odu
Run ODU binary
./odu
PS: CU stub and RIC stub must be run (in no particular sequence) before ODU.
II. Execution - Using Docker Images¶
The call flow between O-DU High and CU Stub can be achieved by executing docker containers.
- Pull the last built docker images:
docker pull nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2:4.0.1
docker pull nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2-cu-stub:4.0.1
- Run CU Stub docker:
docker run -it –privileged –net=host –entrypoint bash nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2-cu-stub:4.0.1
./cu_stub
- Run ODU docker:
docker run -it –privileged –net=host –entrypoint bash nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2:4.0.1
./odu
B. Pairwise testing with Intel O-DU Low:¶
This section describes the changes required in compilation and execution of O-DU High binaries to successfully integrate with Intel O-DU Low in timer mode.
I. Pre-requisites¶
Install O-DU High as per installation-guide .
Clone O-DU Low code in <O-DU Low Directory> from
Install O-DU Low as per https://docs.o-ran-sc.org/projects/o-ran-sc-o-du-phy/en/latest/index.html .
II. Compilation¶
Build ODU :
Create folder <O-DU High Directory>/l2/src/wls_lib. Copy wls_lib.h from <O-DU Low Directory>/phy/wls_lib/ to <O-DU High Directory>/l2/src/wls_lib.
Create folder <O-DU High Directory>/l2/src/dpdk_lib. Copy following files from <O-DU Low Directory>/dpdk-19.11/x86_64-native-linuxapp-gcc/include/ to <O-DU High Directory>/l2/src/dpdk_lib.
rte_branch_prediction.h
rte_common.h
rte_config.h
rte_dev.h
rte_log.h
rte_pci_dev_feature_defs.h
rte_bus.h
rte_compat.h
rte_debug.h
rte_eal.h
rte_os.h
rte_per_lcore.h
Navigate to build folder
cd <O-DU High Directory>/l2/build/odu
Build ODU Binary:
make odu PHY=INTEL_L1 MACHINE=BIT64 MODE=FDD
III. Execution¶
Execute O-DU Low:
Setup environment:
cd <O-DU Low Directory>/phy/
source ./setupenv.sh
Run O-DU Low binary :
cd <O-DU Low Directory>/FlexRAN/l1/bin/nr5g/gnb/l1
To run in radio mode : ./l1.sh -xran
L1 is up when following prints are seen on console:
Non BBU threads in application==================================================================nr5g_gnb_phy2mac_api_proc_stats_thread: [PID: 8659] binding on [CPU 0] [PRIO: 0] [POLICY: 1]wls_rx_handler (non-rt): [PID: 8663] binding on [CPU 0]==================================================================PHY>welcome to application console
Execute FAPI Translator:
Setup environment:
cd <O-DU Low Directory>/phy/
source ./setupenv.sh
Run FAPI translator binary:
cd <O-DU Low Directory>/phy/fapi_5g/bin/
./oran_5g_fapi –cfg=oran_5g_fapi.cfg
Execute CU Stub and RIC Stub:
Run steps in sections A.I.1 through A.I.3 .
Execute DU:
DU execution folder
cd <O-DU High Directory>/l2/bin/odu
Export WLS library path
export LD_LIBRARY_PATH=<O-DU Low Directory>/phy/wls_lib/lib:$LD_LIBRARY_PATH
Run ODU binary
./odu
C. Message Flow:¶
O-DU High opens WLS interface during bring up. Message exchanges can begin once the interface is ready. Following diagram shows P5 messages exchanged with O-DU Low in timer mode.
Note: UL IQ-Sample request and response are needed by Intel O-DU Low in timer mode(testing mode) only. Code changes for these are guarded under INTEL_TIMER_MODE flag which can be enabled using compilation option “PHY_MODE=TIMER”, as mentioned in section B.I.1.d .
D. Health Check execution: get alarm-list¶
To execute the get alarm-list flow, following steps are required to be executed:
Start Netconf netopeer client
Connect to the server with
user: netconfpwd: netconf!Send a Netconf get request for alarms xpath
Here are the steps as executed in the terminal
netopeer2-cli> connect –login netconfInteractive SSH AuthenticationType your password:Password:> get –filter-xpath /o-ran-sc-odu-alarm-v1:odu/alarmsDATA<odu xmlns="urn:o-ran:odu:alarm:1.0"><alarms><alarm><alarm-id>1009</alarm-id><alarm-text>cell id [1] is up</alarm-text><severity>2</severity><status>Active</status><additional-info>cell UP</additional-info></alarm></alarms></odu>
The XML output is a list of active alarms in the O-DU High system.