X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=docs%2FREADME;h=9eb9fe7b431be680af08cdc0f437559bc055ad6f;hb=8748e788a43465b180c15d31908c276504dad6d4;hp=3a0bf8a2c0adacb8add08ff6da5e69610430ec07;hpb=088bb8763eaf91c139ede025faf2fac7e57d25ed;p=o-du%2Fl2.git diff --git a/docs/README b/docs/README index 3a0bf8a2c..9eb9fe7b4 100644 --- a/docs/README +++ b/docs/README @@ -1,13 +1,15 @@ -Directory Structure : ---------------------- +A. Directory Structure : +------------------------ 1. l2/build/ : contains files required to compile the code a. common : contains individual module's makefile - b. config : contains SSI memory configuration - c. odu : contains main makefile to generate an executable binary + b. odu : 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 -2. l2/src/ : contains layer specific source code +3. l2/src/ : contains layer specific source code a. 5gnrmac : MAC source code b. 5gnrrlc : RLC source code c. cm : common, environment and interface files @@ -16,69 +18,290 @@ Directory Structure : f. mt : wrapper functions over OS g. phy_stub : Stub code for Physical layer h. rlog : logging module + i. o1 : o1 module -Pre-requisite for Compilation : -------------------------------- +B. Pre-requisite for Compilation : +---------------------------------- 1. Linux 32-bit/64-bit machine 2. GCC version 4.6.3 and above 3. Install LKSCTP a. On Ubuntu : sudo apt-get install -y libsctp-dev - b. On CentOS : yum install lksctp-tools + b. On CentOS : sudo yum install -y lksctp-tools-devel +4. Install PCAP: + a. On ubuntu : sudo apt-get install -y libpcap-dev + b. On CentOS : sudo yum install -y libpcap-devel -How to Clean and Build: ------------------------ +C. Pre-requisite for O1 Interface (Required only if run with O1 interface enabled) +----------------------------------------------------------------------------------- +1. Setup netconf server + + Create new netconf user (login with root user and run following commands) + $adduser --system netconf && \ + echo "netconf:netconf!" | chpasswd + + $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 + Install netconf packages. + $cd l2/build/scripts + $chmod +x install_lib_O1.sh + $ ./install_lib_O1.sh -c + +2. Start Netopeer2-server: + $cd l2/build/scripts + $./netopeer-server.sh start + +3. Install the yang modules + $cd l2/build/yang + $sysrepoctl -i o-ran-sc-odu-alarm-v1.yang + $sysrepoctl -i o-ran-sc-odu-interface-v1.yang + $sysrepoctl -i o-ran-sc-du-hello-world.yang + +4. Configure the startup IP and Port configurations for DU, CU and RIC + + $cd l2/build/config + + Open the startup_config.xml and edit the desired IP and Port for CU, DU and RIC. + Then load the configuration in the sysrepo running datastore using the command below + + $sysrepocfg --import=startup_config.xml --datastore running --module o-ran-sc-odu-interface-v1 + +5. Configure the netconf server details for VES PNF Event + + $cd l2/build/config + + Open the netconfConfig.json and edit the desired MAC address, IP, Port, Username and Password for VES PNF Registration. + +6. Configure the VES server details to send VES Events + + $cd l2/build/config + + Open the vesConfig.json and edit the desired IP, Port, Username and Password to send VES Event. + +7. Configure the nacm module to provide access to new user + + $cd l2/build/config + + Open the nacm_config.xml and edit the desired user-name to provide the access to that user. + + $sysrepocfg --import=nacm_config.xml --datastore running --module ietf-netconf-acm + + + +D. How to Clean and Build: +-------------------------- +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= MODE= + c. Cleaning ODU binary + make clean_odu MACHINE= MODE= + +3. Building CU Stub binary: + a. Build folder + cd l2/build/odu + b. Building CU Stub binary + make cu_stub NODE= MACHINE= MODE= + c. Cleaning CU Stub binary + make clean_cu NODE= MACHINE= MODE= + +4. Building RIC Stub binary: + a. Build folder + cd l2/build/odu + b. Building RIC Stub binary + make ric_stub NODE= MACHINE= MODE= + c. Cleaning RIC Stub binary + make clean_ric NODE= MACHINE= MODE= + +5. Cleaning ODU, CU Stub and RIC Stub: + make clean_all + + +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 binary - make odu MACHINE=BIT64 MODE=FDD + make odu MACHINE= MODE= O1_ENABLE= c. Cleaning ODU binary - make clean_odu MACHINE=BIT64 MODE=FDD + make clean_odu MACHINE= MODE= O1_ENABLE= 2. 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= MACHINE= MODE= O1_ENABLE= c. Cleaning CU Stub binary - make clean_cu NODE=TEST_STUB MACHINE=BIT64 MODE=FDD + make clean_cu NODE= MACHINE= MODE= O1_ENABLE= -2. Building RIC Stub binary: +3. 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= MACHINE= MODE= O1_ENABLE= c. Cleaning RIC Stub binary - make clean_ric NODE=TEST_STUB MACHINE=BIT64 MODE=FDD + make clean_ric NODE= MACHINE= MODE= O1_ENABLE= -4. Cleaning ODU and CU Stub - make clean_all MACHINE=BIT64 MODE=FDD +4. Cleaning ODU, CU Stub and RIC Stub: + make clean_all -How to execute: ---------------- + +F. How to execute: +------------------ 1. Assign virtual IP addresses as follows: - ifconfig :ODU "192.168.130.81" - ifconfig :CU_STUB "192.168.130.82" - ifconfig :RIC_STUB "192.168.130.80" - -2. CU execution folder: - cd l2/bin/cu_stub - -3. Run CU Stub binary: - ./cu_stub - -4. RIC execution folder: - cd l2/bin/ric_stub - -5. Run RIC Stub binary: - ./ric_stub - -4. DU execution folder: - cd l2/bin/odu - -5. Run ODU binary: - ./odu + a. ifconfig :ODU "192.168.130.81" + b. ifconfig :CU_STUB "192.168.130.82" + c. ifconfig :RIC_STUB "192.168.130.80" + +PS: If O1 interface is enabled, IP should match those configured in step C.4. + +2. Execute CU Stub: + a. CU execution folder: + cd l2/bin/cu_stub + b. Run CU Stub binary: + ./cu_stub + +3. Execute RIC Stub: + a. RIC execution folder: + cd l2/bin/ric_stub + b. Run RIC Stub binary: + ./ric_stub + +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 + + +G. How to test with Intel L1: +----------------------------- + +I. Compilation + 1. Build ODU : + a. Create folder l2/src/wls_lib. Copy wls_lib.h from /phy/wls_lib/ to l2/src/wls_lib. + b. Create folder l2/src/dpdk_lib. Copy following files from /dpdk-19.11/x86_64-native-linuxapp-gcc/include/ to l2/sr c/dpdk_lib. + rte_branch_prediction.h + rte_common.h + rte_config.h + rte_dev.h + rte_log.h + rte_pci_dev_feature_defs.h + rte_bus.h + rte_compat.h + rte_debug.h + rte_eal.h + rte_os.h + rte_per_lcore.h + c. Build folder + cd l2/build/odu + d. Build ODU Binary: + make odu PHY= PHY_MODE= MACHINE= MODE= + + 2. Build CU Stub and RIC Stub: + a. Execute steps in sections D.3 and D.4 + +II. Execution + 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 /phy/ + source ./setupenv.sh + b. Run L1 binary : + cd /FlexRAN/l1/bin/nr5g/gnb/l1 + 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 + =========================================================================================================== + nr5g_gnb_phy2mac_api_proc_stats_thread: [PID:   8659] binding on [CPU  0] [PRIO:  0] [POLICY:  1] + wls_rx_handler (non-rt):                [PID:   8663] binding on [CPU  0] + =========================================================================================================== +   + PHY>welcome to application console + + 3. Execute FAPI Translator: + a. Setup environment: + cd /phy/ + source ./setupenv.sh + b. Run FAPI translator binary: + cd /phy/fapi_5g/bin/ + ./oran_5g_fapi --cfg=oran_5g_fapi.cfg + + 4. Execute CU Stub and RIC Stub: + a. Run steps in sections E.1-E.3 + + 5. Execute DU: + a. DU execution folder + cd l2/bin/odu + b. Export WLS library path + export LD_LIBRARY_PATH=/phy/wls_lib/lib:$LD_LIBRARY_PATH + c. Run ODU binary + ./odu + + +H. How to execute the Health Check : get alarm-list +---------------------------------------------------- + + Steps: + + 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 + + + + 1009 + cell id [1] is up + 2 + Active + cell UP + + + + + The XML output is a list of active alarms in the O-DU High system. +