F Release Document Upate
[o-du/l2.git] / docs / user-guide.rst
index d297b86..620f396 100644 (file)
 .. http://creativecommons.org/licenses/by/4.0
 
 User Guide
-==========
+***********
 
-This is the user guide for Cherry release of O-DU/l2.
+This is the user guide for F release of O-DU/l2.
+Follow installation-guide to get all the dependencies ready.
 
 .. contents::
    :depth: 3
    :local:
 
-A. Compilation:
----------------
 
-1. Build O-DU High:
-
-   a. Build folder
+A. Execution:
+-------------
 
-      - cd <rsys_directory>/l2/build/odu
+I. Execution - On locally compiling O-DU High Source Code
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-   b. Build O-DU High binary
-   
-      - make odu MACHINE=BIT64 MODE=FDD
+1. Assign virtual IP addresses as follows:
 
-   c. Clean O-DU High binary
+   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"
 
-      - make clean_odu MACHINE=BIT64 MODE=FDD
+PS: If O1 interface is enabled, IPs should match those configured in "startup_config.xml"
+    ( Refer Installation Guide - "Setting up Netconf server" )
 
-2. Build CU Stub :
+2. Execute CU Stub:
 
-   a. Build folder
-   
-      - cd <rsys_directory>/l2/build/odu
+   a. Navigate to CU execution folder
 
-   b. Build CU Stub binary
-   
-      - make cu_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
+      - cd <O-DU High Directory>/l2/bin/cu_stub
 
-   c. Clean CU Stub binary
-   
-      - make clean_cu NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
-
-3. Build RIC Stub :
+   b. Run CU Stub binary
 
-   a. Build folder
-   
-      - cd <rsys_directory>/l2/build/odu
+      - ./cu_stub
 
-   b. Build RIC Stub binary
-   
-      - make ric_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
+3. Execute RIC Stub:
 
-   c. Clean RIC Stub binary
-   
-      - make clean_ric NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
+   a. Navigate to RIC execution folder
 
-4. Clean ODU, CU Stub and RIC Stub together
+      - cd <O-DU High Directory>/l2/bin/ric_stub
 
-   a. make clean_all
+   b. Run RIC Stub binary
 
+      - ./ric_stub
 
-B. Execution:
--------------
+4. Execute O-DU High:
 
-1. Assign virtual IP addresses as follows:
+   a. Navigate to ODU execution folder
 
-   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"
+      - cd <O-DU High Directory>/l2/bin/odu
 
-2. Execute CU Stub:
+   b. Run ODU binary
 
-   a. CU execution folder
+      - ./odu
 
-      - cd <rsys_directory>/l2/bin/cu_stub
+PS: CU stub and RIC stub must be run (in no particular sequence) before ODU. 
+    In case O1 is enabled and SMO is not available follow section E below.
 
-   b. Run CU Stub binary
+II. Execution - Using Docker Images
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-      - ./cu_stub
+The call flow between O-DU High and CU Stub can be achieved by executing docker containers.
 
-3. Execute RIC Stub:
+- Pull the last built docker images:
+    -  docker pull nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2:6.0.1
+    -  docker pull nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2-cu-stub:6.0.1
 
-   a. RIC execution folder
+- Run CU Stub docker:
+    - docker run -it --privileged --net=host --entrypoint bash
+      nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2-cu-stub:6.0.1   
+    - ./cu_stub
 
-      - cd <rsys_directory>/l2/bin/ric_stub
+- Run ODU docker:
+    - docker run -it --privileged --net=host --entrypoint bash
+      nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2:6.0.1   
+    - ./odu
 
-   b. Run RIC Stub binary
 
-      - ./ric_stub
+B. Pairwise testing with Intel O-DU Low:
+-----------------------------------------
 
-4. Execute DU:
+This section describes the changes required in compilation and execution of O-DU High binaries to successfully integrate
+with Intel O-DU Low in timer mode.
 
-   a. DU execution folder
 
-      - cd <rsys_directory>/l2/bin/odu
+I. Pre-requisites
+^^^^^^^^^^^^^^^^^^
 
-   b. Run ODU binary
+   1. Install O-DU High as per installation-guide . 
 
-      - ./odu
+   2. Clone O-DU Low code in <O-DU Low Directory> from
 
-PS: CU stub and RIC stub must be run (in no particular sequence) before ODU
+      a. https://gerrit.o-ran-sc.org/r/admin/repos/o-du/phy and,
 
+      b. https://github.com/intel/FlexRAN
+      
+   3. Install O-DU Low as per https://docs.o-ran-sc.org/projects/o-ran-sc-o-du-phy/en/latest/index.html .
 
-C. Testing with Intel O-DU Low:
--------------------------------
 
-I. Compilation
-^^^^^^^^^^^^^^
+II. Compilation
+^^^^^^^^^^^^^^^^
 
    1. Build ODU :
 
-      a. Create folder <rsys_directory>/l2/src/wls_lib. Copy wls_lib.h from <intel_directory>/phy/wls_lib/ to 
-         <rsys_directory>/l2/src/wls_lib.
+      a. Create folder <O-DU High Directory>/l2/src/wls_lib. Copy wls_lib.h from <O-DU Low Directory>/phy/wls_lib/ to 
+         <O-DU High Directory>/l2/src/wls_lib.
 
-      b. Create folder <rsys_directory>/l2/src/dpdk_lib. Copy following files from
-         <intel_directory>/dpdk-19.11/x86_64-native-linuxapp-gcc/include/ to <rsys_directory>/l2/src/dpdk_lib.
+      b. Create folder <O-DU High Directory>/l2/src/dpdk_lib. Copy following files from
+         <O-DU Low Directory>/dpdk-19.11/x86_64-native-linuxapp-gcc/include/ to <O-DU High Directory>/l2/src/dpdk_lib.
          
          - rte_branch_prediction.h
          - rte_common.h
@@ -129,32 +125,29 @@ I. Compilation
          - rte_os.h
          - rte_per_lcore.h
 
-      c. Build folder
+      c. Navigate to build folder
 
-         - cd <rsys_directory>/l2/build/odu
+         - cd <O-DU High Directory>/l2/build/odu
 
       d. Build ODU Binary:
            
-         - make odu PHY=INTEL_L1 PHY_MODE=TIMER MACHINE=BIT64 MODE=FDD
-
-   2. Build CU Stub and RIC Stub:
+         - make odu PHY=INTEL_L1 MACHINE=BIT64 MODE=FDD
 
-      a. Execute steps in sections A.2 and A.3.        
 
-II. Execution
-^^^^^^^^^^^^^
+III. Execution
+^^^^^^^^^^^^^^^
 
    1. Execute O-DU Low:
 
       a. Setup environment:
       
-         - cd <intel_directory>/phy/
+         - cd <O-DU Low Directory>/phy/
          - source ./setupenv.sh
 
       b. Run O-DU Low binary :
       
-         - cd <intel_directory>/FlexRAN/l1/bin/nr5g/gnb/l1
-         - To run in timer mode : ./l1.sh -e
+         - cd <O-DU Low Directory>/FlexRAN/l1/bin/nr5g/gnb/l1
+         - To run in radio mode : ./l1.sh -xran
          - L1 is up when following prints are seen on console:
 
                | Non BBU threads in application
@@ -169,45 +162,95 @@ II. Execution
 
       a. Setup environment:
    
-         - cd <intel_directory>/phy/
+         - cd <O-DU Low Directory>/phy/
          - source ./setupenv.sh
 
       b. Run FAPI translator binary:
 
-         - cd <intel_directory>/phy/fapi_5g/bin/
+         - cd <O-DU Low Directory>/phy/fapi_5g/bin/
          - ./oran_5g_fapi --cfg=oran_5g_fapi.cfg
 
    3. Execute CU Stub and RIC Stub:
 
-      a. Run steps in sections B.1-B.3.
+      a. Run steps in sections A.I.1 through A.I.3 .
 
    4. Execute DU:
    
       a. DU execution folder
      
-         - cd <rsys_directory>/l2/bin/odu
+         - cd <O-DU High Directory>/l2/bin/odu
       
       b. Export WLS library path
 
-         - export LD_LIBRARY_PATH=<intel_directory>/phy/wls_lib/lib:$LD_LIBRARY_PATH
+         - export LD_LIBRARY_PATH=<O-DU Low Directory>/phy/wls_lib/lib:$LD_LIBRARY_PATH
       
       c. Run ODU binary
 
          - ./odu
 
 
-D. Message Flow:
+C. Message Flow:
 ----------------
 
 O-DU High opens WLS interface during bring up. Message exchanges can begin once the interface is ready.
-Following diagram shows P5 messages exchange with O-DU Low in timer mode.
+Following diagram shows P5 messages exchanged with O-DU Low in timer mode.
 
-.. figure:: L1-L2_Message_Flow.jpg
+.. figure:: O-DU_High_Low_Flow.PNG
   :width: 600
-  :alt: Figure 1 O-DU High - O-DU Low Message Flow Diagram
+  :alt: Figure 7 O-DU High - O-DU Low Message Flow Diagram
 
-  Figure 1 - O-DU High - O-DU Low Message Flow Diagram
+  Figure 7 - O-DU High - O-DU Low Message Flow Diagram
 
 Note: UL IQ-Sample request and response are needed by Intel O-DU Low in timer mode(testing mode) only. Code changes for
-these are guarded under INTEL_TIMER_MODE flag which can be enabled using compilation option "PHY_MODE=TIMER", as mention
-in section C.I.1.d .
+these are guarded under INTEL_TIMER_MODE flag which can be enabled using compilation option "PHY_MODE=TIMER", as
+mentioned in section B.I.1.d .
+
+
+D. Health Check execution: get alarm-list
+-------------------------------------------
+
+To execute the get alarm-list flow, following steps are required to be executed:
+
+   1.  Start Netconf netopeer client 
+   
+   2. Connect to the server with 
+
+      | user: netconf
+      | pwd:  netconf!
+
+   3. Send a Netconf get request for alarms xpath
+
+Here are the steps as executed in the terminal 
+
+     |  netopeer2-cli
+     |  > connect --login netconf
+     |  Interactive SSH Authentication
+     |  Type your password:
+     |  Password:
+     |  > get --filter-xpath /o-ran-sc-odu-alarm-v1\:odu/alarms
+     |  DATA
+     |  <odu xmlns=\"urn\:o-ran\:odu\:alarm\:1.0\">
+     |    <alarms>
+     |      <alarm>
+     |        <alarm-id>1009</alarm-id>
+     |        <alarm-text>cell id  [1] is up</alarm-text>
+     |        <severity>2</severity>
+     |        <status>Active</status>
+     |        <additional-info>cell UP</additional-info>
+     |      </alarm>
+     |    </alarms>
+     |  </odu>
+
+The XML output is a list of active alarms in the O-DU High system.
+
+E. 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 D.1 and D.2.
+   2. update cellConfig.xml and rrmPolicy.xml.
+
+      | $cd <O-DU High Directory>/l2/build/config
+      | $edit-config --target candidate --config=cellConfig.xml
+      | $edit-config --target candidate --config=rrmPolicy.xml