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 2. l2/docs/ : contains README and other configuration files for building docs 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 d. cu_stub : Stub code for CU e. du_app : DU application and F1 code 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 : ------------------------------- 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-devel 4. Install PCAP: a. On ubuntu : sudo apt-get install -y libpcap-dev b. On CentOS : yum install libpcap-devel Pre-requisite for running O1 module: ----------------------------------- Install netconf server ---------------------- 1. Create new netconf user (login with root user and run following command) $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 2. Install netconf packages. $cd l2/build/o1/ $chmod +x install_lib.sh $ ./install_lib.sh Install the yang module ----------------------- 1. cd l2/build/o1/yang sysrepoctl -i o-ran-sc-odu-alarm-v1.yang How to Clean and Build: ----------------------- 1. Building ODU binary: a. Build folder cd l2/build/odu b. Building ODU binary make odu MACHINE=BIT64 MODE=FDD Build with O1 module enabled: make odu MACHINE=BIT64 MODE=FDD O1_ENABLE=YES c. Cleaning ODU binary make clean_odu MACHINE=BIT64 MODE=FDD 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 c. Cleaning CU Stub binary make clean_cu NODE=TEST_STUB MACHINE=BIT64 MODE=FDD 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 c. Cleaning RIC Stub binary make clean_ric NODE=TEST_STUB MACHINE=BIT64 MODE=FDD 4. Cleaning ODU, CU Stub and RIC Stub: make clean_all 5. Building O1 binary: a. Build folder cd l2/build/o1 b. Building O1 binary make o1 MACHINE=BIT64 c. Cleaning O1 binary make clean_o1 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 6. DU execution folder: cd l2/bin/odu 7. Run ODU binary: ./odu 8. O1 execution folder: cd l2/build/o1/bin/o1 9. Run O1 binary: ./o1 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