Skip to main content

Lab 11: OAI NR inter frequency handover

This experiment showcases an example of running handover procedure on top of a 5G Standalone (SA) network using OAI CU/DU/RU 3GPP split with USRP as an RU, OAI CN, FlexRIC as the Near-RT RIC and Quectel model as an COTS UE. Additionally, an instruction to apply handover API via xApp from public xApp SDK repository.

Prerequisites​

  1. Hardware component requirement:
    • USRP B210
    • A Quectel model - RM5xxN (prefer RM520N-GL)
  2. Sections requirement in .yaml:
    • Target CU for DU connection
    annotations:
    extras.t9s.io/cu-name: <target-cu-name>
    • Handover group specification
    cells:
    groups:
    - kind: hog
    name: <cell-group-name>

Introduction​

open-ran-ho-inter-oai.yaml
apiVersion: athena.trirematics.io/v1
kind: Network
metadata:
name: handover
namespace: trirematics
spec:
slices:
- plmn: "00101"
dnn: "internet"
network-mode: "IPv4"
service-type: eMBB
differentiator: 0x000000
ipv4-range: "12.1.1.0/24"
ipv6-range: "2001:db8:1::/64"
access:
- name: oai-gnb-cu-du
stack: 5g-sa
model: oai-ran/cu-du
radio:
device: uhd-b200
identity:
an-id: 50
cells:
- band: n78
arfcn: 630048
bandwidth: 40MHz
subcarrier-spacing: 30kHz
tdd-config:
period: 5ms
dl-slots: 7
dl-symbols: 6
ul-slots: 2
ul-symbols: 4
groups:
- kind: hog
name: handover-group
controller: flexric.handover
core-networks:
- minimal.handover
- name: oai-gnb-du
stack: 5g-sa
model: oai-ran/du
radio:
device: uhd-b200
identity:
an-id: 20
annotations:
extras.t9s.io/cu-name: "oai-gnb-cu-du"
cells:
- band: n78
arfcn: 643296
bandwidth: 40MHz
subcarrier-spacing: 30kHz
tdd-config:
period: 5ms
dl-slots: 7
dl-symbols: 6
ul-slots: 2
ul-symbols: 4
groups:
- kind: hog
name: handover-group
controller: flexric.handover
core-networks:
- minimal.handover
core:
- name: minimal
stack: 5g-sa
model: oai-cn/minimal
identity:
region: 0
cn-group: 4
cn-id: 5
edge:
- name: flexric
stack: 5g-sa
model: mosaic5g/flexric
dns:
ipv4:
default: 8.8.8.8
secondary: 8.8.4.4

Deployment​

  1. To run up the network
brc install network open-ran-ho-inter-oai.yaml
  1. To check the network
brc observe
  1. Wait until all the Elements are in the STATUS set to 1/1 Y state.

  2. Attach the UE to the network by brc install network open-ran-ue.yaml

open-ran-ue.yaml
apiVersion: athena.trirematics.io/v1
kind: Terminal
metadata:
name: ue1
namespace: trirematics
spec:
vendor: oai
stack: 5g-sa
model: terminal/quectel
target-cores:
- minimal.handover
identity:
imsi: "001010000000001"
pin: "1234"
opc: "0xC42449363BBAD02B66D16BC975D77CC1"
key: "0xfec86ba6eb707ed08905757b1bb44b8f"
sqn: "0xff9bb4000001"
slice:
dnn: internet
network-mode: IPv4
service-type: eMBB
differentiator: 0x000000
radio:
bands:
- n78
- n77
readiness-check:
method: ping
target: google-ip

Handover via xApp​

As provided, xApp SDK supports handover xApp in path /src/usr/python3/ho.py.

# Example of ho.py
import sys
import xapp_usr_sdk as xapp

xapp.init(sys.argv)
nodes = xapp.e2_nodes(xapp.HAND_OVER_USE_CASE_e)
assert(len(nodes) > 0 and len(nodes) < 3 and "Needed at least 1 or 2 E2 nodes to handover")

sum_ue = 0
for idx in range(len(nodes)):
sum_ue += len(nodes[idx].ue_ho)
assert(sum_ue > 0 and "At least one UE needed")

idx = 0 if len(nodes[0].ue_ho) > 0 else 1
n = nodes[idx].node
ue = nodes[idx].ue_ho[0].ue
ho_pci = nodes[idx].ue_ho[0].nghbr_cell[0].target_pci
ho_ssb = nodes[idx].ue_ho[0].nghbr_cell[0].target_ssb_nr_arfcn

xapp.hand_over(n, ue, ho_pci, ho_ssb)

Simple step by step to interact xApp with the cluster

  1. Build the project following README.md file

  2. Bind flexric IP with xApp

cd  xapp_sdk/conf/

python3 update_conf.py

# It should show this
# Select the RIC to configure:
# 1) flexric.flexric.handover (10.244.2.46)
# Choice [1-1]: 1
# No entries found for Database.
# Skipping database IP update.
# Config 'xapp.yaml' updated: ip_ric=10.244.2.46, ip_xapp=10.244.0.158
  1. Run the xApp
cd build/src/usr/python3

python3 ho.py ../../../conf/xapp.yaml