1 A. Directory Structure :
2 ------------------------
3 1. l2/build/ : contains files required to compile the code
4 a. common : contains individual module's makefile
5 b. odu : contains main makefile to generate an executable binary
6 c. scripts: contains scripts for logging
7 d. o1 : contains main makefile to generate an executable binary
9 2. l2/docs/ : contains README and other configuration files for building docs
11 3. l2/src/ : contains layer specific source code
12 a. 5gnrmac : MAC source code
13 b. 5gnrrlc : RLC source code
14 c. cm : common, environment and interface files
15 d. cu_stub : Stub code for CU
16 e. du_app : DU application and F1 code
17 f. mt : wrapper functions over OS
18 g. phy_stub : Stub code for Physical layer
19 h. rlog : logging module
23 B. Pre-requisite for Compilation :
24 ----------------------------------
25 1. Linux 32-bit/64-bit machine
26 2. GCC version 4.6.3 and above
28 a. On Ubuntu : sudo apt-get install -y libsctp-dev
29 b. On CentOS : sudo yum install -y lksctp-tools-devel
31 a. On ubuntu : sudo apt-get install -y libpcap-dev
32 b. On CentOS : sudo yum install -y libpcap-devel
35 C. Pre-requisite for running O1 module:
36 ---------------------------------------
37 Install netconf server
38 ----------------------
40 1. Create new netconf user (login with root user and run following command)
41 $adduser --system netconf && \
42 echo "netconf:netconf" | chpasswd
44 $mkdir -p /home/netconf/.ssh && \
46 ssh-keygen -t dsa -P '' -f /home/netconf/.ssh/id_dsa && \
47 cat /home/netconf/.ssh/id_dsa.pub > /home/netconf/.ssh/authorized_keys
48 2. Install netconf packages.
50 $chmod +x install_lib.sh
53 Install the yang module
54 -----------------------
55 1. cd l2/build/o1/yang
56 sysrepoctl -i o-ran-sc-odu-alarm-v1.yang
59 D. How to Clean and Build:
60 --------------------------
61 1. Building ODU binary:
64 b. Building ODU binary
65 make odu MACHINE=BIT64 MODE=FDD
66 c. Cleaning ODU binary
67 make clean_odu MACHINE=BIT64 MODE=FDD
69 2. Building CU Stub binary:
72 b. Building CU Stub binary
73 make cu_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
74 c. Cleaning CU Stub binary
75 make clean_cu NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
77 3. Building RIC Stub binary:
80 b. Building RIC Stub binary
81 make ric_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
82 c. Cleaning RIC Stub binary
83 make clean_ric NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
85 4. Cleaning ODU, CU Stub and RIC Stub:
88 5. Building ODU binary with O1 interface enabled:
91 b. Building ODU with O1 module enabled:
92 make odu MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
93 c. Cleaning ODU binary
94 make clean_odu MACHINE=BIT64 MODE=FDD
100 f. Cleaning O1 binary
106 1. Assign virtual IP addresses as follows:
107 a. ifconfig <interface name>:ODU "192.168.130.81"
108 b. ifconfig <interface name>:CU_STUB "192.168.130.82"
109 c. ifconfig <interface name>:RIC_STUB "192.168.130.80"
111 2. Execute O1 (only if O-DU is built with O1 interface enabled):
112 a. O1 execution folder:
113 cd l2/build/o1/bin/o1
118 a. CU execution folder:
120 b. Run CU Stub binary:
124 a. RIC execution folder:
126 b. Run RIC Stub binary:
130 a. DU execution folder:
135 PS: CU stub and RIC stub must be run (in no particular sequence) before ODU
136 If O1 module is enabled it must be run before ODU
138 F. How to test with Intel L1:
139 -----------------------------
143 a. Create folder l2/src/wls_lib. Copy wls_lib.h from <intel_directory>/phy/wls_lib/ to l2/src/wls_lib.
144 b. Create folder l2/src/dpdk_lib. Copy following files from <intel_directory>/dpdk-19.11/x86_64-native-linuxapp-gcc/include/ to l2/sr c/dpdk_lib.
145 rte_branch_prediction.h
150 rte_pci_dev_feature_defs.h
160 make odu PHY=INTEL_L1 PHY_MODE=TIMER MACHINE=BIT64 MODE=FDD
162 2. Build CU Stub and RIC Stub:
163 a. Execute steps in sections D.2 and D.3.
167 a. Setup environment:
168 cd <intel_directory>/phy/
171 cd <intel_directory>/FlexRAN/l1/bin/nr5g/gnb/l1
172 To run in timer mode : ./l1.sh -e
173 L1 is up when console prints follow:
175 Non BBU threads in application
176 ===========================================================================================================
177 nr5g_gnb_phy2mac_api_proc_stats_thread: [PID: 8659] binding on [CPU 0] [PRIO: 0] [POLICY: 1]
178 wls_rx_handler (non-rt): [PID: 8663] binding on [CPU 0]
179 ===========================================================================================================
181 PHY>welcome to application console
183 2. Execute FAPI Translator:
184 a. Setup environment:
185 cd <intel_directory>/phy/
187 b. Run FAPI translator binary:
188 cd <intel_directory>/phy/fapi_5g/bin/
189 ./oran_5g_fapi --cfg=oran_5g_fapi.cfg
191 3. Execute CU Stub and RIC Stub:
192 a. Run steps in sections E.1-E.3
195 a. DU execution folder
197 b. Export WLS library path
198 export LD_LIBRARY_PATH=<intel_directory>/phy/wls_lib/lib:$LD_LIBRARY_PATH
203 G. How to execute the Health Check : get alarm-list
204 ----------------------------------------------------
208 1. Start Netconf netopeer client
210 2. Connect to the server with
215 3. Send a Netconf get request for alarms xpath
217 Here are the steps as executed in the terminal
220 > connect --login netconf
221 Interactive SSH Authentication
224 > get --filter-xpath /o-ran-sc-odu-alarm-v1:odu/alarms
226 <odu xmlns="urn:o-ran:odu:alarm:1.0">
229 <alarm-id>1009</alarm-id>
230 <alarm-text>cell id [1] is up</alarm-text>
231 <severity>2</severity>
232 <status>Active</status>
233 <additional-info>cell UP</additional-info>
238 The XML output is a list of active alarms in the O-DU High system.