Installation with RAN-Simulator and ONOS MHO xAPP
This document covers how to install ONOS RIC services with RAN-Simulator. With this option, RiaB will deploy ONOS RIC services including ONOS-KPIMON (KPM 2.0 supported), and ONOS-MHO xAPPs together with RAN-Simulator
Clone this repository
To begin with, clone this repository:
$ git clone https://github.com/onosproject/sdran-in-a-box
NOTE: If we want to use a specific release, we can change the branch with git checkout [args]
command:
$ cd /path/to/sdran-in-a-box
$ git checkout v1.3.0 # for release 1.3
$ git checkout v1.4.0 # for release 1.4
$ git checkout master # for master
Deploy RiaB with RAN-Simulator
Command options
To deploy RiaB with RAN-Simulator, we should go to sdran-in-a-box
directory and command below:
$ cd /path/to/sdran-in-a-box
# type one of below commands
# for "master-stable" version
$ make riab OPT=mho VER=stable # or just make riab OPT=mho
# for "latest" version
$ make riab OPT=mho VER=latest
# for a specific version
$ make riab OPT=mho VER=v1.3.0 # for release SD-RAN 1.3
$ make riab OPT=mho VER=v1.4.0 # for release SD-RAN 1.4
# for a "dev" version
$ make riab OPT=mho VER=dev # for dev version
NOTE: There is no need to manually install any software (e.g., Kubernetes, Helm, etc.) because RiaB takes care of everything.
Once we push one of above commands, the deployment procedure starts.
If we don’t see any error or failure messages, everything is deployed.
$ kubectl get po --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system atomix-controller-99f978c7d-t6p79 1/1 Running 0 3m13s
kube-system atomix-raft-storage-controller-75979cfff8-vdqc6 1/1 Running 0 2m52s
kube-system calico-kube-controllers-584ddbb8fb-nxb7l 1/1 Running 0 4h6m
kube-system calico-node-s5czk 1/1 Running 1 4h6m
kube-system coredns-dff8fc7d-nznzf 1/1 Running 0 4h6m
kube-system dns-autoscaler-5d74bb9b8f-cfwvp 1/1 Running 0 4h6m
kube-system kube-apiserver-node1 1/1 Running 0 4h7m
kube-system kube-controller-manager-node1 1/1 Running 0 4h7m
kube-system kube-multus-ds-amd64-r42zf 1/1 Running 0 4h6m
kube-system kube-proxy-vp7k7 1/1 Running 1 4h7m
kube-system kube-scheduler-node1 1/1 Running 0 4h7m
kube-system kubernetes-dashboard-667c4c65f8-cr6q5 1/1 Running 0 4h6m
kube-system kubernetes-metrics-scraper-54fbb4d595-t8rgz 1/1 Running 0 4h6m
kube-system nodelocaldns-rc6w7 1/1 Running 0 4h6m
kube-system onos-operator-app-d56cb6f55-f5zp6 1/1 Running 0 2m37s
kube-system onos-operator-config-7986b568b-lmt8n 1/1 Running 0 2m37s
kube-system onos-operator-topo-76fdf46db5-2k67g 1/1 Running 0 2m39s
riab onos-a1t-84db77df99-gjqcx 2/2 Running 0 2m5s
riab onos-cli-6b746874c8-6qn27 1/1 Running 0 2m5s
riab onos-config-7bd4b6f7f6-brd68 4/4 Running 0 2m5s
riab onos-consensus-store-0 1/1 Running 0 2m4s
riab onos-e2t-58b4cd867-hskmq 3/3 Running 0 2m5s
riab onos-kpimon-966bdf77f-q4q5l 2/2 Running 0 2m5s
riab onos-mho-7859ffdd68-m85vf 2/2 Running 0 2m5s
riab onos-topo-7cc9d754d7-t7mqs 3/3 Running 0 2m5s
riab onos-uenib-779cb5dbd6-bvg8f 3/3 Running 0 2m5s
riab ran-simulator-5449b4c8f9-jqhm7 1/1 Running 0 2m5s
NOTE: If we see any issue when deploying RiaB, please check Troubleshooting
End-to-End (E2E) tests for verification
In order to check whether everything is running, we should conduct some E2E tests and check their results. Since RAN-Sim does only generate SD-RAN control messages, we can run E2E tests on the SD-RAN control plane.
The E2E test on SD-RAN control plane
First, we can check E2 connections and subscriptions with make test-e2-subscription
commands:
$ make test-e2-subscription
...
*** Get E2 subscriptions through CLI ***
Subscription ID Revision Service Model ID E2 NodeID Encoding Phase State
76d79858affefc5ecef79683581f1561:e2:1/5153 116 oran-e2sm-mho:v2 e2:1/5153 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE
bab81642e0e6d82c57a54060feeabe6f:e2:1/5153 127 oran-e2sm-mho:v2 e2:1/5153 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE
1ef6855642744782186c9ba6626393a6:e2:1/5154 54 oran-e2sm-kpm:v2 e2:1/5154 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE
84ce5613b27ac3b1e357879244014095:e2:1/5153 59 oran-e2sm-kpm:v2 e2:1/5153 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE
14d96d88f13bba8ba7889bdf532c059d:e2:1/5153 71 oran-e2sm-mho:v2 e2:1/5153 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE
bab81642e0e6d82c57a54060feeabe6f:e2:1/5154 78 oran-e2sm-mho:v2 e2:1/5154 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE
76d79858affefc5ecef79683581f1561:e2:1/5154 102 oran-e2sm-mho:v2 e2:1/5154 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE
14d96d88f13bba8ba7889bdf532c059d:e2:1/5154 111 oran-e2sm-mho:v2 e2:1/5154 ASN1_PER SUBSCRIPTION_OPEN SUBSCRIPTION_COMPLETE
Next, we can check KPIMON xAPP CLI and MHO xAPP CLI.
In order to check KPIMON xAPP CLI, we should type make test-kpimon
$ make test-kpimon
...
*** Get KPIMON result through CLI ***
Node ID Cell Object ID Cell Global ID Time RRC.Conn.Avg RRC.Conn.Max RRC.ConnEstabAtt.Sum RRC.ConnEstabSucc.Sum RRC.ConnReEstabAtt.HOFail RRC.ConnReEstabAtt.Other RRC.ConnReEstabAtt.Sum RRC.ConnReEstabAtt.reconfigFail
e2:1/5153 13842601454c001 1454c001 02:37:49.0 0 1 0 0 0 0 0 0
e2:1/5154 138426014550001 14550001 02:37:49.0 1 1 0 0 0 0 0 0
Note: It shows the current number of active UEs and the maximum number of active UEs. All other values should be 0.
Also, we should type make test-mho
to check MHO xAPP CLI.
$ make test-mho
...
*** Get MHO result through CLI - Cells ***
CGI Num UEs Handovers-in Handovers-out
13842601c054140 1 3 3
138426010055140 0 3 3
*** Get MHO result through CLI - UEs ***
UeID CellGlobalID RrcState
2a54d6 13842601c054140 CONNECTED
Note: The Handovers-in/out
values should be changed in time.
Also, there are two more test Makefile targets make test-rnib
and make test-uenib
to check R-NIB and UE-NIB, which have cell and UE related monitoring information.
$ make test-rnib
...
*** Get R-NIB result through CLI ***
ID: gnmi:onos-config-7bd4b6f7f6-brd68
Kind ID: onos-config
Labels: <None>
Source Id's:
Target Id's:
Aspects:
- onos.topo.Lease={"expiration":"2022-03-11T02:38:49.785658001Z"}
ID: e2:1/5154
Kind ID: e2node
Labels: <None>
Source Id's: uuid:03c782b8-d993-62d3-5ada-8cde9bcc8d64
Target Id's: uuid:8b340ee9-1aa0-492f-bd8c-2ffefeef8185
Aspects:
- onos.topo.MastershipState={"term":"1","nodeId":"uuid:8b340ee9-1aa0-492f-bd8c-2ffefeef8185"}
- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.2.2.100":{"oid":"1.3.6.1.4.1.53148.1.2.2.100","name":"ORAN-E2SM-RC-PRE","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RCRanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[3]},"1.3.6.1.4.1.53148.1.2.2.101":{"oid":"1.3.6.1.4.1.53148.1.2.2.101","name":"ORAN-E2SM-MHO","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.MHORanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[5]},"1.3.6.1.4.1.53148.1.2.2.2":{"oid":"1.3.6.1.4.1.53148.1.2.2.2","name":"ORAN-E2SM-KPM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.KPMRanFunction","reportStyles":[{"name":"Periodic Report","type":1,"measurements":[{"id":"value:1","name":"RRC.ConnEstabAtt.Sum"},{"id":"value:2","name":"RRC.ConnEstabSucc.Sum"},{"id":"value:3","name":"RRC.ConnReEstabAtt.Sum"},{"id":"value:4","name":"RRC.ConnReEstabAtt.reconfigFail"},{"id":"value:5","name":"RRC.ConnReEstabAtt.HOFail"},{"id":"value:6","name":"RRC.ConnReEstabAtt.Other"},{"id":"value:7","name":"RRC.Conn.Avg"},{"id":"value:8","name":"RRC.Conn.Max"}]}]}],"ranFunctionIDs":[4]}}}
ID: e2:1/5153/1454c001
Kind ID: e2cell
Labels: <None>
Source Id's:
Target Id's: uuid:e8d1924d-8a87-3840-ada0-0cacbef26cc5
Aspects:
- onos.topo.E2Cell={"cellObjectId":"13842601454c001","cellGlobalId":{"value":"1454c001"},"kpiReports":{"RRC.Conn.Avg":0,"RRC.Conn.Max":1,"RRC.ConnEstabAtt.Sum":0,"RRC.ConnEstabSucc.Sum":0,"RRC.ConnReEstabAtt.HOFail":0,"RRC.ConnReEstabAtt.Other":0,"RRC.ConnReEstabAtt.Sum":0,"RRC.ConnReEstabAtt.reconfigFail":0}}
ID: e2:1/5154/14550001
Kind ID: e2cell
Labels: <None>
Source Id's:
Target Id's: uuid:03c782b8-d993-62d3-5ada-8cde9bcc8d64
Aspects:
- onos.topo.E2Cell={"cellObjectId":"138426014550001","cellGlobalId":{"value":"14550001"},"kpiReports":{"RRC.Conn.Avg":1,"RRC.Conn.Max":1,"RRC.ConnEstabAtt.Sum":0,"RRC.ConnEstabSucc.Sum":0,"RRC.ConnReEstabAtt.HOFail":0,"RRC.ConnReEstabAtt.Other":0,"RRC.ConnReEstabAtt.Sum":0,"RRC.ConnReEstabAtt.reconfigFail":0}}
ID: e2:1/5153
Kind ID: e2node
Labels: <None>
Source Id's: uuid:e8d1924d-8a87-3840-ada0-0cacbef26cc5
Target Id's: uuid:7c05ca75-a88d-433b-bf2c-997292cd60e8
Aspects:
- onos.topo.E2Node={"serviceModels":{"1.3.6.1.4.1.53148.1.2.2.100":{"oid":"1.3.6.1.4.1.53148.1.2.2.100","name":"ORAN-E2SM-RC-PRE","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.RCRanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[3]},"1.3.6.1.4.1.53148.1.2.2.101":{"oid":"1.3.6.1.4.1.53148.1.2.2.101","name":"ORAN-E2SM-MHO","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.MHORanFunction","reportStyles":[{"name":"PCI and NRT update for eNB","type":1}]}],"ranFunctionIDs":[5]},"1.3.6.1.4.1.53148.1.2.2.2":{"oid":"1.3.6.1.4.1.53148.1.2.2.2","name":"ORAN-E2SM-KPM","ranFunctions":[{"@type":"type.googleapis.com/onos.topo.KPMRanFunction","reportStyles":[{"name":"Periodic Report","type":1,"measurements":[{"id":"value:1","name":"RRC.ConnEstabAtt.Sum"},{"id":"value:2","name":"RRC.ConnEstabSucc.Sum"},{"id":"value:3","name":"RRC.ConnReEstabAtt.Sum"},{"id":"value:4","name":"RRC.ConnReEstabAtt.reconfigFail"},{"id":"value:5","name":"RRC.ConnReEstabAtt.HOFail"},{"id":"value:6","name":"RRC.ConnReEstabAtt.Other"},{"id":"value:7","name":"RRC.Conn.Avg"},{"id":"value:8","name":"RRC.Conn.Max"}]}]}],"ranFunctionIDs":[4]}}}
- onos.topo.MastershipState={"term":"1","nodeId":"uuid:7c05ca75-a88d-433b-bf2c-997292cd60e8"}
ID: e2:onos-e2t-58b4cd867-hskmq
Kind ID: e2t
Labels: <None>
Source Id's: uuid:7c05ca75-a88d-433b-bf2c-997292cd60e8, uuid:8b340ee9-1aa0-492f-bd8c-2ffefeef8185
Target Id's:
Aspects:
- onos.topo.E2TInfo={"interfaces":[{"type":"INTERFACE_E2AP200","ip":"192.168.84.87","port":36421},{"type":"INTERFACE_E2T","ip":"192.168.84.87","port":5150}]}
- onos.topo.Lease={"expiration":"2022-03-11T02:38:54.250647685Z"}
ID: a1:onos-a1t-84db77df99-gjqcx
Kind ID: a1t
Labels: <None>
Source Id's:
Target Id's:
Aspects:
- onos.topo.A1TInfo={"interfaces":[{"type":"INTERFACE_A1AP","ip":"192.168.84.79","port":9639}]}
$ make test-uenib
*** Get UE-NIB result through CLI ***
ID: 2774230
Aspects:
- RSRP-Neighbors=138426010055140:-117
- 5QI=166
- RSRP-Serving=-100
- RRCState=RRCSTATUS_CONNECTED
- CGI=13842601c054140
Other commands
Reset and delete RiaB environment
If we want to reset our RiaB environment or delete RiaB compoents, we can use below commands:
make reset-test
: It deletes ONOS RIC services and RAN-Simulator but Kubernetes is still runningmake clean
: It just deletes Kubernets environment; Eventually, all ONOS RIC and RAN-Simulator are terminated; The Helm chart directory is not deletedmake clean-all
: It deletes all including Kubernetes environment, all componentes/PODs which RiaB deployed, and even the Helm chart directory
Deploy or reset a chart/service
If we want to only deploy or reset a chart/service, we can use below command:
make atomix
: It deploys Atomix controllersmake reset-atomix
: It deletes Atomix controllersmake ric
: It deploys ONOS RIC servicesmake reset-ric
: It deletes ONOS RIC services