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, installing netconf libraries and starting netopeer server
7 d. config : contains the configuration files
8 e. yang : contains the YANG modules
10 2. l2/docs/ : contains README and other configuration files for building docs
12 3. l2/src/ : contains layer specific source code
13 a. 5gnrmac : MAC source code
14 b. 5gnrrlc : RLC source code
15 c. cm : common, environment and interface files
16 d. cu_stub : Stub code for CU
17 e. du_app : DU application and F1 code
18 f. mt : wrapper functions over OS
19 g. phy_stub : Stub code for Physical layer
20 h. rlog : logging module
24 B. Pre-requisite for Compilation :
25 ----------------------------------
26 1. Linux 32-bit/64-bit machine
27 2. GCC version 4.6.3 and above
29 a. On Ubuntu : sudo apt-get install -y libsctp-dev
30 b. On CentOS : sudo yum install -y lksctp-tools-devel
32 a. On ubuntu : sudo apt-get install -y libpcap-dev
33 b. On CentOS : sudo yum install -y libpcap-devel
36 C. Pre-requisite for O1 Interface (Required only if run with O1 interface enabled)
37 -----------------------------------------------------------------------------------
38 1. Setup netconf server
40 Create new netconf user (login with root user and run following commands)
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 Install netconf packages.
50 $chmod +x install_lib.sh
53 2. Start Netopeer2-server:
55 $./netopeer-server.sh start
57 3. Install the yang modules
59 $sysrepoctl -i o-ran-sc-odu-alarm-v1.yang
60 $sysrepoctl -i o-ran-sc-odu-interface-v1.yang
62 4. Configure the startup IP and Port configurations for DU, CU and RIC
66 Open the startup_config.xml and edit the desired IP and Port for CU, DU and RIC.
67 Then load the configuration in the sysrepo running datastore using the command below
69 $sysrepocfg --import=startup_config.xml --datastore running --module o-ran-sc-odu-interface-v1
72 D. How to Clean and Build:
73 --------------------------
74 1. Building ODU binary:
77 b. Building ODU binary
78 make odu MACHINE=BIT64 MODE=FDD
79 c. Cleaning ODU binary
80 make clean_odu MACHINE=BIT64 MODE=FDD
82 2. Building CU Stub binary:
85 b. Building CU Stub binary
86 make cu_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
87 c. Cleaning CU Stub binary
88 make clean_cu NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
90 3. Building RIC Stub binary:
93 b. Building RIC Stub binary
94 make ric_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
95 c. Cleaning RIC Stub binary
96 make clean_ric NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
98 4. Cleaning ODU, CU Stub and RIC Stub:
102 E. How to Clean and Build with O1 interface enabled (Requires pre-requisite steps in section C)
103 ------------------------------------------------------------------------------------------------
105 1. Building ODU binary:
108 b. Building ODU binary
109 make odu MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
110 c. Cleaning ODU binary
111 make clean_odu MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
113 2. Building CU Stub binary:
116 b. Building CU Stub binary
117 make cu_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
118 c. Cleaning CU Stub binary
119 make clean_cu NODE=TEST_STUB MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
121 3. Building RIC Stub binary:
124 b. Building RIC Stub binary
125 make ric_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
126 c. Cleaning RIC Stub binary
127 make clean_ric NODE=TEST_STUB MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
129 4. Cleaning ODU, CU Stub and RIC Stub:
135 1. Assign virtual IP addresses as follows:
136 a. ifconfig <interface name>:ODU "192.168.130.81"
137 b. ifconfig <interface name>:CU_STUB "192.168.130.82"
138 c. ifconfig <interface name>:RIC_STUB "192.168.130.80"
140 PS: If O1 interface is enabled, IP should match those configured in step C.4.
143 a. CU execution folder:
145 b. Run CU Stub binary:
149 a. RIC execution folder:
151 b. Run RIC Stub binary:
155 a. DU execution folder:
160 PS: CU stub and RIC stub must be run (in no particular sequence) before ODU
163 G. How to test with Intel L1:
164 -----------------------------
168 a. Create folder l2/src/wls_lib. Copy wls_lib.h from <intel_directory>/phy/wls_lib/ to l2/src/wls_lib.
169 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.
170 rte_branch_prediction.h
175 rte_pci_dev_feature_defs.h
185 make odu PHY=INTEL_L1 PHY_MODE=TIMER MACHINE=BIT64 MODE=FDD
187 2. Build CU Stub and RIC Stub:
188 a. Execute steps in sections D.2 and D.3.
192 a. Setup environment:
193 cd <intel_directory>/phy/
196 cd <intel_directory>/FlexRAN/l1/bin/nr5g/gnb/l1
197 To run in timer mode : ./l1.sh -e
198 L1 is up when console prints follow:
200 Non BBU threads in application
201 ===========================================================================================================
202 nr5g_gnb_phy2mac_api_proc_stats_thread: [PID: 8659] binding on [CPU 0] [PRIO: 0] [POLICY: 1]
203 wls_rx_handler (non-rt): [PID: 8663] binding on [CPU 0]
204 ===========================================================================================================
206 PHY>welcome to application console
208 2. Execute FAPI Translator:
209 a. Setup environment:
210 cd <intel_directory>/phy/
212 b. Run FAPI translator binary:
213 cd <intel_directory>/phy/fapi_5g/bin/
214 ./oran_5g_fapi --cfg=oran_5g_fapi.cfg
216 3. Execute CU Stub and RIC Stub:
217 a. Run steps in sections E.1-E.3
220 a. DU execution folder
222 b. Export WLS library path
223 export LD_LIBRARY_PATH=<intel_directory>/phy/wls_lib/lib:$LD_LIBRARY_PATH
228 H. How to execute the Health Check : get alarm-list
229 ----------------------------------------------------
233 1. Start Netconf netopeer client
235 2. Connect to the server with
240 3. Send a Netconf get request for alarms xpath
242 Here are the steps as executed in the terminal
245 > connect --login netconf
246 Interactive SSH Authentication
249 > get --filter-xpath /o-ran-sc-odu-alarm-v1:odu/alarms
251 <odu xmlns="urn:o-ran:odu:alarm:1.0">
254 <alarm-id>1009</alarm-id>
255 <alarm-text>cell id [1] is up</alarm-text>
256 <severity>2</severity>
257 <status>Active</status>
258 <additional-info>cell UP</additional-info>
263 The XML output is a list of active alarms in the O-DU High system.