1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/by/4.0
7 This is the user guide for e-release of O-DU/l2.
8 Follow installation-guide to get all the dependencies ready.
18 I. Execution - On locally compiling O-DU High Source Code
19 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
21 1. Assign virtual IP addresses as follows:
23 a. ifconfig <interface name>:ODU "192.168.130.81"
24 b. ifconfig <interface name>:CU_STUB "192.168.130.82"
25 c. ifconfig <interface name>:RIC_STUB "192.168.130.80"
27 PS: If O1 interface is enabled, IPs should match those configured in "startup_config.xml"
28 ( Refer Installation Guide - "Setting up Netconf server" )
32 a. Navigate to CU execution folder
34 - cd <O-DU High Directory>/l2/bin/cu_stub
42 a. Navigate to RIC execution folder
44 - cd <O-DU High Directory>/l2/bin/ric_stub
46 b. Run RIC Stub binary
52 a. Navigate to ODU execution folder
54 - cd <O-DU High Directory>/l2/bin/odu
60 PS: CU stub and RIC stub must be run (in no particular sequence) before ODU.
61 In case O1 is enabled and SMO is not available follow section E below.
63 II. Execution - Using Docker Images
64 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
66 The call flow between O-DU High and CU Stub can be achieved by executing docker containers.
68 - Pull the last built docker images:
69 - docker pull nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2:5.0.2
70 - docker pull nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2-cu-stub:5.0.2
73 - docker run -it --privileged --net=host --entrypoint bash
74 nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2-cu-stub:5.0.2
78 - docker run -it --privileged --net=host --entrypoint bash
79 nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2:5.0.2
83 B. Pairwise testing with Intel O-DU Low:
84 -----------------------------------------
86 This section describes the changes required in compilation and execution of O-DU High binaries to successfully integrate
87 with Intel O-DU Low in timer mode.
93 1. Install O-DU High as per installation-guide .
95 2. Clone O-DU Low code in <O-DU Low Directory> from
97 a. https://gerrit.o-ran-sc.org/r/admin/repos/o-du/phy and,
99 b. https://github.com/intel/FlexRAN
101 3. Install O-DU Low as per https://docs.o-ran-sc.org/projects/o-ran-sc-o-du-phy/en/latest/index.html .
109 a. Create folder <O-DU High Directory>/l2/src/wls_lib. Copy wls_lib.h from <O-DU Low Directory>/phy/wls_lib/ to
110 <O-DU High Directory>/l2/src/wls_lib.
112 b. Create folder <O-DU High Directory>/l2/src/dpdk_lib. Copy following files from
113 <O-DU Low Directory>/dpdk-19.11/x86_64-native-linuxapp-gcc/include/ to <O-DU High Directory>/l2/src/dpdk_lib.
115 - rte_branch_prediction.h
120 - rte_pci_dev_feature_defs.h
128 c. Navigate to build folder
130 - cd <O-DU High Directory>/l2/build/odu
134 - make odu PHY=INTEL_L1 MACHINE=BIT64 MODE=FDD
142 a. Setup environment:
144 - cd <O-DU Low Directory>/phy/
145 - source ./setupenv.sh
147 b. Run O-DU Low binary :
149 - cd <O-DU Low Directory>/FlexRAN/l1/bin/nr5g/gnb/l1
150 - To run in radio mode : ./l1.sh -xran
151 - L1 is up when following prints are seen on console:
153 | Non BBU threads in application
154 | \==================================================================
155 | nr5g_gnb_phy2mac_api_proc_stats_thread: [PID: 8659] binding on [CPU 0] [PRIO: 0] [POLICY: 1]
156 | wls_rx_handler (non-rt): [PID: 8663] binding on [CPU 0]
157 | \==================================================================
159 PHY>welcome to application console
161 2. Execute FAPI Translator:
163 a. Setup environment:
165 - cd <O-DU Low Directory>/phy/
166 - source ./setupenv.sh
168 b. Run FAPI translator binary:
170 - cd <O-DU Low Directory>/phy/fapi_5g/bin/
171 - ./oran_5g_fapi --cfg=oran_5g_fapi.cfg
173 3. Execute CU Stub and RIC Stub:
175 a. Run steps in sections A.I.1 through A.I.3 .
179 a. DU execution folder
181 - cd <O-DU High Directory>/l2/bin/odu
183 b. Export WLS library path
185 - export LD_LIBRARY_PATH=<O-DU Low Directory>/phy/wls_lib/lib:$LD_LIBRARY_PATH
195 O-DU High opens WLS interface during bring up. Message exchanges can begin once the interface is ready.
196 Following diagram shows P5 messages exchanged with O-DU Low in timer mode.
198 .. figure:: O-DU_High_Low_Flow.PNG
200 :alt: Figure 7 O-DU High - O-DU Low Message Flow Diagram
202 Figure 7 - O-DU High - O-DU Low Message Flow Diagram
204 Note: UL IQ-Sample request and response are needed by Intel O-DU Low in timer mode(testing mode) only. Code changes for
205 these are guarded under INTEL_TIMER_MODE flag which can be enabled using compilation option "PHY_MODE=TIMER", as
206 mentioned in section B.I.1.d .
209 D. Health Check execution: get alarm-list
210 -------------------------------------------
212 To execute the get alarm-list flow, following steps are required to be executed:
214 1. Start Netconf netopeer client
216 2. Connect to the server with
221 3. Send a Netconf get request for alarms xpath
223 Here are the steps as executed in the terminal
226 | > connect --login netconf
227 | Interactive SSH Authentication
228 | Type your password:
230 | > get --filter-xpath /o-ran-sc-odu-alarm-v1\:odu/alarms
232 | <odu xmlns=\"urn\:o-ran\:odu\:alarm\:1.0\">
235 | <alarm-id>1009</alarm-id>
236 | <alarm-text>cell id [1] is up</alarm-text>
237 | <severity>2</severity>
238 | <status>Active</status>
239 | <additional-info>cell UP</additional-info>
244 The XML output is a list of active alarms in the O-DU High system.
246 E. Push cell and slice configuration over O1 using netopeer-cli
247 ---------------------------------------------------------------
249 When O-DU High is run with O1 enabled it waits for cell configuration to be pushed by SMO. In case the SMO is not available then these configurations can be pushed via netopeer-cli as follows.
251 1. Follow step D.1 and D.2.
252 2. update cellConfig.xml and rrmPolicy.xml.
254 | $cd <O-DU High Directory>/l2/build/config
255 | $edit-config --target candidate --config=cellConfig.xml
256 | $edit-config --target candidate --config=rrmPolicy.xml