Skip to content

onosproject/onos-mho

Repository files navigation

onos-mho

Mobile Hand Over (MHO) xApplication for µONOS RIC

Overview

µONOS RIC supports collection of per-UE mobility data from E2 nodes for the purpose of enabling development of sophisticated mobility management xApplications. The collected UE data is available to xApplications via the SDKs. onos-mho is a sample xApplication that implements a simple A3 event based handover function to demonstrate the mobility management capabilities of µONOS RIC platform.

The E2 Service Model for Mobile HandOver (E2SM-MHO) specifies procedures over the E2 interface to subscribe to and receive indications of UE mobility information and trigger handovers through control messages. The service model defines two types of indications - 1) UE measurement reports and 2) UE RRC state changes. The UE measurement reports can be triggered by A3 events or periodic. The complete E2SM-MHO ASN.1 specification is available in the onos-e2-sm repo.

The onos-mho xApp interfaces with µONOS RIC, using the Golang SDK, to subscribe for A3 measurement reports from E2 nodes that support the E2SM-MHO service model. In addition to the A3 Events, onos-mho can be configured to subscribe to RRC state changes and periodic UE measurement reports as well. onos-mho processes the measurement event based on its configured A3 Event parameters. If a handover decision is made, onos-mho sends a handover control message to the E2 node to trigger a handover. In addition, onos-mho also updates UE-NIB with UE related information such as RRC state, signal strengths for serving and neighbor cells.

onos-mho is shipped as a Docker image and deployed with Helm. To build the Docker image, run make images.

Getting Started

The E2SM-MHO service model is currently only supported by RANSim and not by real CU/DU/gNB. onos-mho can be deployed, alongwith the other µONOS micro-services and RANSim, using the [sdran-helm-charts]. Alternatively, it can also be deployed using SDRAN-in-a-box (RIAB).

Deploy using Helm charts

Refer to the µONOS and SD-RAN documentation on how to deploy µONOS SD-RAN micro-services with the sd-ran umbrella helm chart. onos-mho is not enabled by default in the sd-ran umbrella chart. To deploy onos-mho with the other µONOS SD-RAN micro-services, either enable it in the sd-ran helm chart or on the command line as follows:

helm install --set import.ran-simulator.enabled=true --set import.onos-mho.enabled=true sd-ran sd-ran

By default, RANSim uses the model.yaml model file. To use a different model, e.g. the two-cell-two-node-model, specify the model as follows:

helm install --set import.ran-simulator.enabled=true --set import.onos-mho.enabled=true --set ran-simulator.pci.modelName=two-cell-two-node-model sd-ran sd-ran

Deploy using RiaB

Refer to the SDRAN-in-a-box (RIAB) documentation on how to deploy onos-mho within RIAB. For example, the following command deploys latest version of onos-mho and µONOS SD-RAN micro-services:

make riab OPT=mho VER=latest

Command Line Interface

The following commands are available in onos-cli for viewing onos-mho related information:

$ onos mho get cells
$ onos mho get ues
$ onos uenib get ues [-v]
$ onos uenib get ue <ueID> [-v]

The information from the above commands on UE handovers and RRC states can be compared to information provided by RANSim using the following CLI commands:

$ onos ransim get cells
$ onos ransim get ues
$ onos ransim get ue <ueID>

RANSim models

The generic model.yaml model, which simulates UEs moving on randomly generated routes, can be used with onos-mho to test handovers. Alternatively, the two-cell-two-node-model.yaml model can be used to test onos-mho handover functionality in a more controlled and deterministic manner. Refer to documentation on RANSim models for further information.