Doc changes for F release O1 enhancements
[o-du/l2.git] / docs / README
index ccceee8..8b5056d 100644 (file)
@@ -3,8 +3,9 @@ A. Directory Structure :
 1. l2/build/ : contains files required to compile the code
    a. common : contains individual module's makefile
    b. odu    : contains main makefile to generate an executable binary
-   c. scripts: contains scripts for logging
-   d. o1     : contains main makefile to generate an executable binary
+   c. scripts: contains scripts for logging, installing netconf libraries and starting netopeer server
+   d. config : contains the configuration files
+   e. yang   : contains the YANG modules
 
 2. l2/docs/  : contains README and other configuration files for building docs
        
@@ -17,7 +18,7 @@ A. Directory Structure :
    f. mt       : wrapper functions over OS
    g. phy_stub : Stub code for Physical layer
    h. rlog     : logging module
-   i. o1       : o1 module
+   i. O1       : O1 module
 
 
 B. Pre-requisite for Compilation :
@@ -32,110 +33,154 @@ B. Pre-requisite for Compilation :
    b. On CentOS : sudo yum install -y libpcap-devel
 
 
-C. Pre-requisite for running O1 module:
----------------------------------------
-Install netconf server
-----------------------
+C. Pre-requisite for O1 Interface (Required only if run with O1 interface enabled) 
+-----------------------------------------------------------------------------------
+1. Setup netconf server
 
-1.     Create new netconf user (login with root user and run following command)
-       $adduser --system netconf && \
-        echo "netconf:netconf" | chpasswd
+    a. Add new netconf user (login with root user or use sudo and run following script)
+       $cd l2/build/scripts
+       $sudo ./add_netconf_user.sh
 
-       $mkdir -p /home/netconf/.ssh && \
-       ssh-keygen -A && \
-       ssh-keygen -t dsa -P '' -f /home/netconf/.ssh/id_dsa && \
-        cat /home/netconf/.ssh/id_dsa.pub > /home/netconf/.ssh/authorized_keys
-2.     Install netconf packages. 
-       $cd l2/build/o1/
-       $chmod +x install_lib.sh
-       $ ./install_lib.sh
+    b. Install netconf packages.
+       $chmod +x install_lib_O1.sh
+       $sudo ./install_lib_O1.sh -c
 
-Install the yang module
------------------------
-1. cd l2/build/o1/yang
-   sysrepoctl -i o-ran-sc-odu-alarm-v1.yang
+2. Update the configuration according to your setup.
+
+   $cd l2/build/config
+
+   a. Open the startup_config.xml and edit the desired IP and Port for CU, DU and RIC.
+   b. Open the nacm_config.xml and edit the desired user name to provide the access to that user.
+   c. Open the netconf_server_ipv6.xml and edit the desired netconf server configuration.
+   d. Open the oamVesConfig.json and edit the details of OAM VES collector.
+   e. Open the smoVesConfig.json and edit the details of SMO VES collector.
+   f. Open the netconfConfig.json and edit the details of Netopeer server.
+   g. Install the yang modules and load initial configuration
+
+   $cd l2/build/scripts
+   $sudo ./load_yang.sh
+
+   h. To enable Standard Defined VES format:
+      
+      cd l2/src/o1/ves
+      
+      Enable the Macro "StdDef" in file VesUtils.h
+      
+      #define StdDef
+
+3. Start Netopeer2-server:
+   $cd l2/build/scripts
+   $sudo ./netopeer-server.sh start
 
 
 D. How to Clean and Build:
 --------------------------
-1. Building ODU binary:
+1. Build commands:
+   a. odu       - Builds all components of ODU
+   b. cu_stub   - Builds all CU Stub
+   c. ric_stub  - Builds all RIC_Stub
+   d. clean_odu - clean up ODU
+   e. clean_cu  - clean up CU Stub
+   f. clean_ric - clean up RIC Stub
+   g. clean_all - cleanup everything
+   h. options:
+      i.   MACHINE=BIT64/BIT32 - Specify underlying machine type. Default is BIT32
+      ii.  NODE=TEST_STUB      - Specify if it is a test node. Mandatory for cu_stub/ric_stub. Must not be used for odu
+      iii. MODE=FDD/TDD        - Specify duplex mode. Default is FDD
+      iv.  PHY=INTEL_L1        - Specify type of phy. If not specified, PHY stub is used
+      v.   PHY_MODE=TIMER      - Specify mode of phy. Used only if PHY=INTEL_L1. Default is radio mode
+      vi.  O1_ENABLE=YES       - Specify if O1 interface is enabled. If not specified, it is disabled 
+
+2. Building ODU binary:
    a. Build folder
          cd l2/build/odu
    b. Building ODU binary
-         make odu MACHINE=BIT64 MODE=FDD
+         make odu MACHINE=<refer section D.1.h>  MODE=<refer section D.1.h>
    c. Cleaning ODU binary
-         make clean_odu MACHINE=BIT64 MODE=FDD
+         make clean_odu MACHINE=<refer section D.1.h> MODE=<refer section D.1.h>
 
-2. Building CU Stub binary:
+3. Building CU Stub binary:
    a. Build folder
          cd l2/build/odu
    b. Building CU Stub binary
-         make cu_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
+         make cu_stub NODE=<refer section D.1.h> MACHINE=<refer section D.1.h> MODE=<refer section D.1.h>
    c. Cleaning CU Stub binary
-         make clean_cu NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
+         make clean_cu NODE=<refer section D.1.h> MACHINE=<refer section D.1.h> MODE=<refer section D.1.h>
 
-3. Building RIC Stub binary:
+4. Building RIC Stub binary:
    a. Build folder
          cd l2/build/odu
    b. Building RIC Stub binary
-         make ric_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
+         make ric_stub NODE=<refer section D.1.h> MACHINE=<refer section D.1.h> MODE=<refer section D.1.h>
    c. Cleaning RIC Stub binary
-         make clean_ric NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
+         make clean_ric NODE=<refer section D.1.h> MACHINE=<refer section D.1.h> MODE=<refer section D.1.h>
 
-4. Cleaning ODU, CU Stub and RIC Stub:
+5. Cleaning ODU, CU Stub and RIC Stub:
       make clean_all
 
-5. Building ODU binary with O1 interface enabled:
+
+E. How to Clean and Build with O1 interface enabled (Requires pre-requisite steps in section C)
+------------------------------------------------------------------------------------------------
+
+1. Building ODU binary:
    a. Build folder
          cd l2/build/odu
-   b. Building ODU with O1 module enabled:
-         make odu MACHINE=BIT64 MODE=FDD O1_ENABLE=YES
+   b. Building ODU binary
+         make odu MACHINE=<refer section D.1.h> MODE=<refer section D.1.h> O1_ENABLE=<refer section D.1.h>
    c. Cleaning ODU binary
-         make clean_odu MACHINE=BIT64 MODE=FDD
+         make clean_odu MACHINE=<refer section D.1.h> MODE=<refer section D.1.h> O1_ENABLE=<refer section D.1.h>
+
+2. Building CU Stub binary:
+   a. Build folder
+         cd l2/build/odu
+   b. Building CU Stub binary
+         make cu_stub NODE=<refer section D.1.h> MACHINE=<refer section D.1.h> MODE=<refer section D.1.h> O1_ENABLE=<refer section D.1.h>
+   c. Cleaning CU Stub binary
+         make clean_cu NODE=<refer section D.1.h> MACHINE=<refer section D.1.h> MODE=<refer section D.1.h> O1_ENABLE=<refer section D.1.h>
+
+3. Building RIC Stub binary:
+   a. Build folder
+         cd l2/build/odu
+   b. Building RIC Stub binary
+         make ric_stub NODE=<refer section D.1.h> MACHINE=<refer section D.1.h> MODE=<refer section D.1.h> O1_ENABLE=<refer section D.1.h>
+   c. Cleaning RIC Stub binary
+         make clean_ric NODE=<refer section D.1.h> MACHINE=<refer section D.1.h> MODE=<refer section D.1.h> O1_ENABLE=<refer section D.1.h>
 
-   d. Build folder
-         cd l2/build/o1
-   e. Building O1 binary
-         make o1 MACHINE=BIT64
-   f. Cleaning O1 binary
-         make clean_o1 
+4. Cleaning ODU, CU Stub and RIC Stub:
+      make clean_all
 
 
-E. How to execute:
+F. How to execute:
 ------------------
 1. Assign virtual IP addresses as follows:
    a. ifconfig <interface name>:ODU "192.168.130.81"
    b. ifconfig <interface name>:CU_STUB "192.168.130.82"
    c. ifconfig <interface name>:RIC_STUB "192.168.130.80"
 
-2. Execute O1 (only if O-DU is built with O1 interface enabled):
-   a. O1 execution folder:
-       cd l2/build/o1/bin/o1
-   b. Run O1 binary:
-       ./o1
+PS: If O1 interface is enabled, IP should match those configured in step C.2.a.
 
-3. Execute CU Stub:
+2. Execute CU Stub:
    a. CU execution folder:
        cd l2/bin/cu_stub
    b. Run CU Stub binary:
        ./cu_stub
 
-4. Execute RIC Stub:
+3. Execute RIC Stub:
    a. RIC execution folder:
        cd l2/bin/ric_stub
    b. Run RIC Stub binary:
        ./ric_stub
 
-5. Execute DU:
+4. Execute DU:
    a. DU execution folder:
        cd l2/bin/odu
    b. Run ODU binary:
        ./odu
 
 PS: CU stub and RIC stub must be run (in no particular sequence) before ODU
-    If O1 module is enabled it must be run before ODU
 
-F. How to test with Intel L1:
+
+G. How to test with Intel L1:
 -----------------------------
 
 I. Compilation
@@ -157,19 +202,24 @@ I. Compilation
       c. Build folder
                 cd l2/build/odu
       d. Build ODU Binary:
-                make odu PHY=INTEL_L1 PHY_MODE=TIMER MACHINE=BIT64 MODE=FDD
+                         make odu PHY=<refer section D.1.h> PHY_MODE=<refer section D.1.h> MACHINE=<refer section D.1.h> MODE=<refer section D.1.h>
 
    2. Build CU Stub and RIC Stub:
-      a. Execute steps in sections D.2 and D.3.
+      a. Execute steps in sections D.3 and D.4
 
 II. Execution
-    1. Execute L1:
+    1. Refer to below link for assumptions, dependencies, pre-requisites etc for ODU-Low execution
+       https://docs.o-ran-sc.org/projects/o-ran-sc-o-du-phy/en/latest/
+
+    2. Execute L1:
        a. Setup environment:
                 cd <intel_directory>/phy/
                 source ./setupenv.sh
        b. Run L1 binary :
                 cd <intel_directory>/FlexRAN/l1/bin/nr5g/gnb/l1
-                To run in timer mode : ./l1.sh -e
+                To run 
+                       i.  In timer mode : ./l1.sh -e
+                       ii. In radio mode : ./l1.sh -xran
                 L1 is up when console prints follow:
 
                    Non BBU threads in application
@@ -180,7 +230,7 @@ II. Execution
                  
                    PHY>welcome to application console
 
-    2. Execute FAPI Translator:
+    3. Execute FAPI Translator:
        a. Setup environment:
                 cd <intel_directory>/phy/
                 source ./setupenv.sh
@@ -188,10 +238,10 @@ II. Execution
                 cd <intel_directory>/phy/fapi_5g/bin/
                 ./oran_5g_fapi --cfg=oran_5g_fapi.cfg
 
-    3. Execute CU Stub and RIC Stub:
+    4. Execute CU Stub and RIC Stub:
        a. Run steps in sections E.1-E.3
 
-    4. Execute DU:
+    5. Execute DU:
        a. DU execution folder
                cd l2/bin/odu
        b. Export WLS library path
@@ -200,7 +250,7 @@ II. Execution
                ./odu
 
 
-G. How to execute the Health Check : get alarm-list
+H. How to execute the Health Check : get alarm-list
 ----------------------------------------------------
    
    Steps:
@@ -210,13 +260,13 @@ G. How to execute the Health Check : get alarm-list
    2. Connect to the server with 
 
         user: netconf
-        pwd:  netconf
+        pwd:  netconf!
 
    3. Send a Netconf get request for alarms xpath
 
    Here are the steps as executed in the terminal 
 
-       netopeer2-cli
+      $netopeer2-cli
        > connect --login netconf
        Interactive SSH Authentication
        Type your password:
@@ -237,3 +287,20 @@ G. How to execute the Health Check : get alarm-list
 
    The XML output is a list of active alarms in the O-DU High system.
 
+I. Push cell and slice configuration over O1 using netopeer-cli
+---------------------------------------------------------------
+   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.
+   1. Follow step H.1 and H.2.
+   2. update cellConfig.xml and rrmPolicy.xml.
+      $cd l2/build/config
+      $edit-config --target candidate --config=cellConfig.xml
+      $edit-config --target candidate --config=rrmPolicy.xml
+
+
+J. Troubleshooting Netconf server issues
+----------------------------------------
+   In case the Netconf server and sysrepo breaks down, run the following steps:
+
+   $cd l2/build/scripts
+   $sudo ./troubleshoot_netconf.sh cleanup
+   execute section C.2.f, C.3 again