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
61 $sysrepoctl -i o-ran-sc-du-hello-world.yang
63 4. Configure the startup IP and Port configurations for DU, CU and RIC
67 Open the startup_config.xml and edit the desired IP and Port for CU, DU and RIC.
68 Then load the configuration in the sysrepo running datastore using the command below
70 $sysrepocfg --import=startup_config.xml --datastore running --module o-ran-sc-odu-interface-v1
72 5. Configure the netconf server details for VES PNF Event
76 Open the netconfConfig.json and edit the desired MAC address, IP, Port, Username and Password for VES PNF Registration.
78 6. Configure the VES server details to send VES Events
82 Open the vesConfig.json and edit the desired IP, Port, Username and Password to send VES Event.
84 7. Configure the nacm module to provide access to new user
88 Open the nacm_config.xml and edit the desired user-name to provide the access to that user.
90 $sysrepocfg --import=nacm_config.xml --datastore running --module ietf-netconf-acm
94 D. How to Clean and Build:
95 --------------------------
96 1. Building ODU binary:
99 b. Building ODU binary
100 make odu MACHINE=BIT64 MODE=FDD
101 c. Cleaning ODU binary
102 make clean_odu MACHINE=BIT64 MODE=FDD
104 2. Building CU Stub binary:
107 b. Building CU Stub binary
108 make cu_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
109 c. Cleaning CU Stub binary
110 make clean_cu NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
112 3. Building RIC Stub binary:
115 b. Building RIC Stub binary
116 make ric_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
117 c. Cleaning RIC Stub binary
118 make clean_ric NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
120 4. Cleaning ODU, CU Stub and RIC Stub:
124 E. How to Clean and Build with O1 interface enabled (Requires pre-requisite steps in section C)
125 ------------------------------------------------------------------------------------------------
127 1. Building ODU binary:
130 b. Building ODU binary
131 make odu MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
132 c. Cleaning ODU binary
133 make clean_odu MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
135 2. Building CU Stub binary:
138 b. Building CU Stub binary
139 make cu_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
140 c. Cleaning CU Stub binary
141 make clean_cu NODE=TEST_STUB MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
143 3. Building RIC Stub binary:
146 b. Building RIC Stub binary
147 make ric_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
148 c. Cleaning RIC Stub binary
149 make clean_ric NODE=TEST_STUB MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
151 4. Cleaning ODU, CU Stub and RIC Stub:
157 1. Assign virtual IP addresses as follows:
158 a. ifconfig <interface name>:ODU "192.168.130.81"
159 b. ifconfig <interface name>:CU_STUB "192.168.130.82"
160 c. ifconfig <interface name>:RIC_STUB "192.168.130.80"
162 PS: If O1 interface is enabled, IP should match those configured in step C.4.
165 a. CU execution folder:
167 b. Run CU Stub binary:
171 a. RIC execution folder:
173 b. Run RIC Stub binary:
177 a. DU execution folder:
182 PS: CU stub and RIC stub must be run (in no particular sequence) before ODU
185 G. How to test with Intel L1:
186 -----------------------------
190 a. Create folder l2/src/wls_lib. Copy wls_lib.h from <intel_directory>/phy/wls_lib/ to l2/src/wls_lib.
191 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.
192 rte_branch_prediction.h
197 rte_pci_dev_feature_defs.h
207 make odu PHY=INTEL_L1 PHY_MODE=TIMER MACHINE=BIT64 MODE=FDD
209 2. Build CU Stub and RIC Stub:
210 a. Execute steps in sections D.2 and D.3.
214 a. Setup environment:
215 cd <intel_directory>/phy/
218 cd <intel_directory>/FlexRAN/l1/bin/nr5g/gnb/l1
219 To run in timer mode : ./l1.sh -e
220 L1 is up when console prints follow:
222 Non BBU threads in application
223 ===========================================================================================================
224 nr5g_gnb_phy2mac_api_proc_stats_thread: [PID: 8659] binding on [CPU 0] [PRIO: 0] [POLICY: 1]
225 wls_rx_handler (non-rt): [PID: 8663] binding on [CPU 0]
226 ===========================================================================================================
228 PHY>welcome to application console
230 2. Execute FAPI Translator:
231 a. Setup environment:
232 cd <intel_directory>/phy/
234 b. Run FAPI translator binary:
235 cd <intel_directory>/phy/fapi_5g/bin/
236 ./oran_5g_fapi --cfg=oran_5g_fapi.cfg
238 3. Execute CU Stub and RIC Stub:
239 a. Run steps in sections E.1-E.3
242 a. DU execution folder
244 b. Export WLS library path
245 export LD_LIBRARY_PATH=<intel_directory>/phy/wls_lib/lib:$LD_LIBRARY_PATH
250 H. How to execute the Health Check : get alarm-list
251 ----------------------------------------------------
255 1. Start Netconf netopeer client
257 2. Connect to the server with
262 3. Send a Netconf get request for alarms xpath
264 Here are the steps as executed in the terminal
267 > connect --login netconf
268 Interactive SSH Authentication
271 > get --filter-xpath /o-ran-sc-odu-alarm-v1:odu/alarms
273 <odu xmlns="urn:o-ran:odu:alarm:1.0">
276 <alarm-id>1009</alarm-id>
277 <alarm-text>cell id [1] is up</alarm-text>
278 <severity>2</severity>
279 <status>Active</status>
280 <additional-info>cell UP</additional-info>
285 The XML output is a list of active alarms in the O-DU High system.