PNF Registration to be sent after odu stack is up
[o-du/l2.git] / docs / user-guide.rst
index afe00cb..3d6a845 100644 (file)
 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
 .. http://creativecommons.org/licenses/by/4.0
-.. (c) <optionally add copywriters name>
-
 
 User Guide
-==========
+***********
 
 This is the user guide for Cherry 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
+   b. Run CU Stub binary
 
-3. Build RIC Stub :
+      - ./cu_stub
 
-   a. Build folder
-   
-      - cd <rsys_directory>/l2/build/odu
+3. Execute RIC Stub:
 
-   b. Build RIC Stub binary
-   
-      - make ric_stub NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
+   a. Navigate to RIC execution folder
 
-   c. Clean RIC Stub binary
-   
-      - make clean_ric NODE=TEST_STUB MACHINE=BIT64 MODE=FDD
+      - cd <O-DU High Directory>/l2/bin/ric_stub
 
-4. Clean ODU, CU Stub and RIC Stub together
+   b. Run RIC Stub binary
 
-   a. make clean_all
+      - ./ric_stub
 
+4. Execute O-DU High:
 
-B. Execution:
--------------
+   a. Navigate to ODU execution folder
 
-1. Assign virtual IP addresses as follows:
+      - cd <O-DU High Directory>/l2/bin/odu
 
-   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"
+   b. Run ODU binary
 
-2. Execute CU Stub:
+      - ./odu
 
-   a. CU execution folder
+PS: CU stub and RIC stub must be run (in no particular sequence) before ODU. 
 
-      - cd <rsys_directory>/l2/bin/cu_stub
+II. Execution - Using Docker Images
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-   b. Run CU Stub binary
+The call flow between O-DU High and CU Stub can be achieved by executing docker containers.
 
-      - ./cu_stub
+- Pull the last built docker images:
+    -  docker pull nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2:3.0.1
+    -  docker pull nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2-cu-stub:3.0.1
 
-3. Execute RIC Stub:
+- 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:3.0.1   
+    - ./cu_stub
 
-   a. RIC execution folder
+- Run ODU docker:
+    - docker run -it --privileged --net=host --entrypoint bash
+      nexus3.o-ran-sc.org:10004/o-ran-sc/o-du-l2:3.0.1   
+    - ./odu
 
-      - cd <rsys_directory>/l2/bin/ric_stub
 
-   b. Run RIC Stub binary
+B. Pairwise testing with Intel O-DU Low:
+-----------------------------------------
 
-      - ./ric_stub
+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.
 
-4. Execute DU:
 
-   a. DU execution folder
+I. Pre-requisites
+^^^^^^^^^^^^^^^^^^
 
-      - cd <rsys_directory>/l2/bin/odu
+   1. Install O-DU High as per installation-guide . 
 
-   b. Run ODU binary
-
-      - ./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
@@ -131,31 +124,28 @@ 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:
-
-      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
+         - cd <O-DU Low Directory>/FlexRAN/l1/bin/nr5g/gnb/l1
          - To run in timer mode : ./l1.sh -e
          - L1 is up when following prints are seen on console:
 
@@ -171,45 +161,85 @@ 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.jpg
   :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.
+
+Note: Integration with SMO/OAM is not yet done so a Netconf CLI client(netopeer2-cli) is used to connect to the Netconf server and send the get request.