Edit-conf changes for CLA use case.
[o-du/l2.git] / docs / README
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
9
10 2. l2/docs/  : contains README and other configuration files for building docs
11         
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
21    i. o1       : o1 module
22
23
24 B. Pre-requisite for Compilation :
25 ----------------------------------
26 1. Linux 32-bit/64-bit machine
27 2. GCC version 4.6.3 and above
28 3. Install LKSCTP
29    a. On Ubuntu : sudo apt-get install -y libsctp-dev
30    b. On CentOS : sudo yum install -y lksctp-tools-devel
31 4. Install PCAP:
32    a. On ubuntu : sudo apt-get install -y libpcap-dev
33    b. On CentOS : sudo yum install -y libpcap-devel
34
35
36 C. Pre-requisite for O1 Interface (Required only if run with O1 interface enabled) 
37 -----------------------------------------------------------------------------------
38 1. Setup netconf server
39
40         Create new netconf user (login with root user and run following commands)
41         $adduser --system netconf && \
42         echo "netconf:netconf!" | chpasswd
43
44         $mkdir -p /home/netconf/.ssh && \
45         ssh-keygen -A && \
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. 
49         $cd l2/build/scripts
50         $chmod +x install_lib.sh
51         $ ./install_lib.sh -c
52
53 2. Start Netopeer2-server:
54    $cd l2/build/scripts
55    $./netopeer-server.sh start
56
57 3. Install the yang modules
58    $cd l2/build/yang
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
62
63 4. Configure the startup IP and Port configurations for DU, CU and RIC
64
65    $cd l2/build/config
66
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
69
70    $sysrepocfg --import=startup_config.xml --datastore running --module  o-ran-sc-odu-interface-v1 
71
72 5. Configure the netconf server details for VES PNF Event
73
74    $cd l2/build/config
75
76    Open the netconfConfig.json and edit the desired MAC address, IP, Port, Username and Password for VES PNF Registration.
77
78 6. Configure the VES server details to send VES Events
79
80    $cd l2/build/config
81
82    Open the vesConfig.json and edit the desired IP, Port, Username and Password to send VES Event.
83
84 7. Configure the nacm module to provide access to new user
85
86    $cd l2/build/config
87
88    Open the nacm_config.xml and edit the desired user-name to provide the access to that user.
89
90    $sysrepocfg --import=nacm_config.xml --datastore running --module  ietf-netconf-acm
91
92
93
94 D. How to Clean and Build:
95 --------------------------
96 1. Building ODU binary:
97    a. Build folder
98          cd l2/build/odu
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
103
104 2. Building CU Stub binary:
105    a. Build folder
106          cd l2/build/odu
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
111
112 3. Building RIC Stub binary:
113    a. Build folder
114          cd l2/build/odu
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
119
120 4. Cleaning ODU, CU Stub and RIC Stub:
121       make clean_all
122
123
124 E. How to Clean and Build with O1 interface enabled (Requires pre-requisite steps in section C)
125 ------------------------------------------------------------------------------------------------
126
127 1. Building ODU binary:
128    a. Build folder
129          cd l2/build/odu
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
134
135 2. Building CU Stub binary:
136    a. Build folder
137          cd l2/build/odu
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
142
143 3. Building RIC Stub binary:
144    a. Build folder
145          cd l2/build/odu
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
150
151 4. Cleaning ODU, CU Stub and RIC Stub:
152       make clean_all
153
154
155 F. How to execute:
156 ------------------
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"
161
162 PS: If O1 interface is enabled, IP should match those configured in step C.4.
163
164 2. Execute CU Stub:
165    a. CU execution folder:
166         cd l2/bin/cu_stub
167    b. Run CU Stub binary:
168         ./cu_stub
169
170 3. Execute RIC Stub:
171    a. RIC execution folder:
172         cd l2/bin/ric_stub
173    b. Run RIC Stub binary:
174         ./ric_stub
175
176 4. Execute DU:
177    a. DU execution folder:
178         cd l2/bin/odu
179    b. Run ODU binary:
180         ./odu
181
182 PS: CU stub and RIC stub must be run (in no particular sequence) before ODU
183
184
185 G. How to test with Intel L1:
186 -----------------------------
187
188 I. Compilation
189    1. Build ODU :
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
193                 rte_common.h
194                 rte_config.h
195                 rte_dev.h
196                 rte_log.h
197                 rte_pci_dev_feature_defs.h
198                 rte_bus.h
199                 rte_compat.h
200                 rte_debug.h
201                 rte_eal.h
202                 rte_os.h
203                 rte_per_lcore.h
204       c. Build folder
205                 cd l2/build/odu
206       d. Build ODU Binary:
207                 make odu PHY=INTEL_L1 PHY_MODE=TIMER MACHINE=BIT64 MODE=FDD
208
209    2. Build CU Stub and RIC Stub:
210       a. Execute steps in sections D.2 and D.3.
211
212 II. Execution
213     1. Execute L1:
214        a. Setup environment:
215                 cd <intel_directory>/phy/
216                 source ./setupenv.sh
217        b. Run L1 binary :
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:
221
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                    ===========================================================================================================
227                  
228                    PHY>welcome to application console
229
230     2. Execute FAPI Translator:
231        a. Setup environment:
232                 cd <intel_directory>/phy/
233                 source ./setupenv.sh
234        b. Run FAPI translator binary:
235                 cd <intel_directory>/phy/fapi_5g/bin/
236                 ./oran_5g_fapi --cfg=oran_5g_fapi.cfg
237
238     3. Execute CU Stub and RIC Stub:
239        a. Run steps in sections E.1-E.3
240
241     4. Execute DU:
242        a. DU execution folder
243                 cd l2/bin/odu
244        b. Export WLS library path
245                 export LD_LIBRARY_PATH=<intel_directory>/phy/wls_lib/lib:$LD_LIBRARY_PATH
246        c. Run ODU binary
247                 ./odu
248
249
250 H. How to execute the Health Check : get alarm-list
251 ----------------------------------------------------
252    
253    Steps:
254
255    1. Start Netconf netopeer client 
256    
257    2. Connect to the server with 
258
259         user: netconf
260         pwd:  netconf!
261
262    3. Send a Netconf get request for alarms xpath
263
264    Here are the steps as executed in the terminal 
265
266       $netopeer2-cli
267        > connect --login netconf
268        Interactive SSH Authentication
269        Type your password:
270        Password:
271        > get --filter-xpath /o-ran-sc-odu-alarm-v1:odu/alarms
272        DATA
273        <odu xmlns="urn:o-ran:odu:alarm:1.0">
274          <alarms>
275            <alarm>
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>
281            </alarm>
282          </alarms>
283        </odu>
284
285    The XML output is a list of active alarms in the O-DU High system.
286