Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

1. Introduction

(info) Detail the approach of steps for xFAPI, OSC-DU & FlexRAN deployment

1.1) Description:
xFAPI is an intermediate component that bridges the L1 and L2 layers within the O-RAN architecture. It functions as a translator for both FAPI and nFAPI interfaces, ensuring seamless communication between these interfaces.

It comprises of two major components:
API Translator translates the vendor-specific APIs used by L1 and L2 vendors whereas IPC Integrator provides interoperability between L1 and L2 components by overcoming IPC compatibility challenges.

In addition to its core functions, xFAPI provides advanced features such as detailed PDU statistics generation at both interfaces, robust debugging tools like a memory logger, state manager, multi-level logging, and a comprehensive dashboard for monitoring and analysis.

xSM: The "x" in xSM signifies "any," while "SM" stands for "Shared Memory." xSM is an advanced shared memory library designed to standardize IPC through shared memory. It simplifies communication between L1 and L2 components, which often rely on different shared memory libraries.

1.2) System topology

xFAPI.png

2. Minimum Requirements

(info) Detail the hardware and software requirements necessary for the installation

  • Cores: 3rd gen N series Intel Cpu

  • Accelerator : ACC100

  • RAM : 128 GB memory

  • Storage: 500 GB

  • Operating System: Ubuntu 22.04 with Real-time kernel

Recommended:

  • Cores: 4th Gen N series Intel Cpu with Vran boost

  • RAM: 256Gi Memory

3. Installation

(info) Step-by-step instructions for deployment

3.1) Environment Setup

  • Step up the env. variables for FlexRAN :

Code Block
cd phy/
source setupenv.sh
  • Load Env. variables for xFAPI :

Code Block
cd <xfapi directory>
source loadenvvar.sh
  • Configure IPs for OSC-DU High and cu_stub :

Code Block
ifconfig lo:ODU "192.168.130.81"
ifconfig lo:CU_STUB "192.168.130.82"

3.2) Prerequisites

Before proceeding, ensure the following dependencies are installed on your system:

  • GCC

Make sure you have GCC version 9.5 installed :

Code Block
sudo apt-get install -y build-essential
gcc --version
  • LKSCTP

Install the LKSCTP library:

Code Block
sudo apt-get install -y libsctp-dev
  • PCAP:

Code Block
sudo apt-get install -y libpcap-dev
  • ICX :

icx (ICX) 2023.0.0 (2023.0.0.20221201)

  • Intel oneAPI :

Intel oneAPI version: l_BaseKit_p_2023.0.0.25537_offline.sh, (2023.0.0)

  • DPDK :

DPDK Configuration: Intel DPDK version 22.11.1

  • Cmake :

Recommended version of Cmake: cmake version 3.9.2

 3.3) FlexRAN

  • Clone the project repo:

    Code Block
    git clone https://github.com/intel/FlexRAN 
  • Add the env setting script to .bashrc :

    Code Block
    vim ~/.bashrc
    add source /opt/intel/oneapi/setvars.sh to the script

3.4) xSM Library

  • Locate the Zip Folder:

    Code Block
    mv /path/to/xSM_lib.zip /desired/deployment/path/
  • Unzip the project :

    Code Block
    cd /desired/deployment/path/
    unzip xSM_lib.zip

3.5) OSC Du-High

First, create a directory where you will clone the O-DU High code. This folder will be referred to as <O-DU High Directory>.

Code Block
mkdir <O-DU High Directory>
cd <O-DU High Directory>
  • Clone the project repo:

Code Block
git clone https://github.com/o-ran-sc/o-du-l2.git 
cd o-du-l2
git checkout i-release
  • Modify the Makefile :

Go to the /build/odu directory and make the following changes in the Makefile:

  • Copy the wls_lib folder from the O-DU PHY repository:

Code Block
git clone https://github.com/o-ran-sc/o-du-phy.git 
  • After cloning, copy the wls_lib folder into the O-DU L2 source directory (/o-du-l2/src/):

Code Block
cp -r o-du-phy/wls_lib/ <O-DU High Directory>/o-du-l2/src/

Compilation

  • Build O-DU High in the o-du-l2/build/odu Directory:

Code Block
make clean_odu PHY=INTEL_L1 MACHINE=BIT64 MODE=TDD
make odu PHY=INTEL_L1 MACHINE=BIT64 MODE=TDD
  • Build cu_stub :

Code Block
make clean_cu NODE=TEST_STUB MACHINE=BIT64 MODE=TDD
make cu_stub NODE=TEST_STUB MACHINE=BIT64 MODE=TDD
  • Copy the libxsm.so from /src/xSM_lib :

Code Block
cp ../../src/xSM_lib/libxsm.so ../../bin/odu
  • Navigate to the Binary Directory:

Code Block
cd ../../bin

3.6) xFAPI

  • Locate the Zip Folder:

Code Block
mv /path/to/xfapi.zip /desired/deployment/path/
  • Unzip the project :

Code Block
cd /desired/deployment/path/ unzip xfapi.zip


3.7) By this point, we should have the required binaries at these places

  • Flexran binary [l1app] at:

Code Block
FlexRAN/l1/bin/nr5g/gnb/l1
  • xFAPI binary [xfapi_app] at :

Code Block
<xFAPI_directory>/bin/xfapi_app
Code Block
<xFAPI_directory>/bin/libxsm.so
<OSC_DU_high_directory>/bin/odu/libxsm.so
  • ODU binary [odu] at :

Code Block
<OSC_DU_high_directory>/bin/odu/cu_stub
  • cu_stub binary [cu_stub] at :

Code Block
<OSC_DU_high_directory>/bin/odu/odu

3.8) Executing Stack

The sequence of execution of binaries is:

  1. FlexRAN

  2. xFAPI

  3. cu_stub

  4. OSC DU-High

  • Executing FlexRAN :

Code Block
cd FlexRAN/l1/bin/nr5g/gnb/l1
./l1.sh -xran [for radio]
./l1.sh -e [for timer mode]
  • Executing xFAPI :

Code Block
cd <xFAPI_directory>/bin
./run_xfapi.sh
  • Executing cu_stub :

Code Block
cd <OSC_DU_high_directory>/bin/odu/odu
./cu_stub
  • Executing DU-High :

Code Block
cd <OSC_DU_high_directory>/bin/odu/odu
./odu

4. Post-Installation Verification

(info) Outline how to verify that the installation was successful.

4.1) step 1

Expected Result:

5. Troubleshooting

(info) Provide common issues and their solutions.

Issue 1: Error in loading shared libraries while executing the FlexRAN

Code Block
./l1.shxran
Radio mode with XRAN Sub6 100Mhz
./l1.sh: line 33: ./dpdk.sh: No such file or directory
kernel.sched_rt_runtime_us = -1
kernel.shmmax = 2147483648
kernel.shmall = 2147483648
using configuration file phycfg_xran.xml
using configuration file xrancfg_sub6.xml


Solution:

Code Block
cd phy/
source setupenv.sh

  • Issue 2: Parsing error in FlexRAN

Code Block
FlexRAN SDK bblib_lte_rate_dematching_5gnr version #DIRTY# Cannot open file
FlexRAN SDK bblib_lte_turbo version #DIRTY#
FlexRAN SDK bblib_lte_rate_matching version #DIRTY#
FlexRAN SDK bblib_srs_fft_cestimate_5gnr version #DIRTY#
FlexRAN SDK bblib_mldts_process_5gnr version #DIRTY#
Exitting the application because of xml parsing issues
Cleanup after [PID] 1233284


Solution:

Code Block
Update the <version> in phycfg_xran.cfg file, located at :
FlexRAN/l1/bin/nr5g/gnb/l1/phycfg_xran.xml

# Original File
<PhyConfig>
<version>oran_k_release_v1.0</version>
<Api>
<!-- Maximum number of successive missing API allowed before triggering PHY stop (-1 <successiveNoApi>15</successiveNoApi>
<!-- WLS Wakeup Secondary process mode. 1: Wakeup using Semaphore. 0: Do usleep and <wls_sema_wake_up>1</wls_sema_wake_up>

# Changes in file
<PhyConfig>
<version>23.07</version>
<Api>
<!-- Maximum number of successive missing API allowed before triggering PHY stop (-1 <successiveNoApi>30</successiveNoAρί>
<!-- WLS Wakeup Secondary process mode. 1: Wakeup using Semaphore. 0: Do usleep and <wls_sema_wake_up>1</wls_sema_wake_up>

  • Issue 3: Error in loading xsm lib in xFAPI

Code Block
./run_xfapi.sh
STARTING XFAPI:
./xfapi_app: error while loading shared libraries: libxsm.so: cannot open shared object file: No such file or directory


Solution:

Code Block
cd <xfapi directory>
source loadenvvar.sh

  • Issue 4: Failed to bind the socket while executing the cu_stub

Code Block
EGTP: Failed to bind socket
EGTP: Transport server open request failed
DEBUG --> SCTP: Initializing
date: 10/08/2024 time: 07:55:32
mtss(posix): sw error: ent: 255 inst: 255 proc id: 000
file: /home/four/du_with_cuStub/src/cm/cm_inet.c line: 1743 errcode: 00007 errcls: ERRCLS_DEBUG errval: 00000 errdesc: cmInetSctpBindx() Failed: error (99), port (38472), sockFd->fd(5)


Solution:

Code Block
Configure the virtual IP addresses
ifconfig lo:ODU "192.168.130.81"
ifconfig lo:CU_STUB "192.168.130.82"

NOTE: Log files can be generated in xFAPI for detailed analysis. Both horizontal and vertical logging levels can be configured in the xfapi_cfg.cfg file.

Code Block
Log file configuraitons
[log_file]
Generate_Logs_File=true
#verical level logs generation in log file
Vertical_Level_File=LOG_DEBUG
#xfapi log generation in log file
Xfapi_Log_File=true
#XSM log generation in log file
xSM_Log_File=true
#P5 log generation in log file
P5_Log_File=true
#P7 log generation in log file
P7_Log_File=true
#Date and time log generation in log file
Print_Datetime_File= true

6. Additional Resources

(info) List of additional documentation, links, or resources that may be helpful.

  • Documentation: (Link to official documentation or user manuals.)

  • Support: (Contact information for support or a link to a support forum.)