Aether-in-a-Box
Aether-in-a-Box (AiaB) is an ONF project that provides an easy way to deploy Aether’s SD-CORE and Runtime Operational Control (ROC) components, and then run basic tests to validate the installation.
AiaB can be set up with a 4G or 5G SD-CORE. In either case, SD-CORE configuration can be done with or without the ROC. The ROC provides an interactive GUI for examining and changing the configuration, and is used to manage the production Aether; it can be deployed to test the integration between ROC and SD-CORE. If the ROC is not deployed, a simple tool called SimApp is used to configure the required state in SD-CORE for testing core functionality.
Helm charts are the primary method of installing the SD-CORE and ROC resources. AiaB offers a great deal of flexibility regarding which Helm chart versions to install:
- Local definitions of charts (for testing Helm chart changes)
- Latest published charts (for deploying a development version of Aether)
- Specified versions of charts (for deploying a specific Aether release)
Prerequisites
In order to run AiaB, we should prepare at least a single machine (any baremetal server or on premises/cloud VM) with the following minimum requirements:
- CPU: Intel CPU and Haswell microarchitecture or beyond; at least 4 cores
- OS: Ubuntu 18.04 with Kernel 4.15 or later
- RAM: At least 12GB
- Storage: At least 50GB
For this testing it was used a Ubuntu 18.04 t2.xlarge
(4 vCPUs / 16 GB) instance on AWS (with port 31194 opened in the corresponding security group).
Installation
Clone the AiaB repository:
$ git clone https://gerrit.opencord.org/aether-in-a-box
Clone these additional repositories:
$ mkdir -p ~/cord
$ cd ~/cord
$ git clone "https://gerrit.opencord.org/sdcore-helm-charts"
$ git clone "https://gerrit.opencord.org/roc-helm-charts"
Install the ROC (in this case to configure the 5G SD-CORE):
$ cd /path/to/aether-in-a-box
$ make roc-5g-models
...
until kubectl -n aether-roc exec pod/onos-cli-5d448ff6c4-b7j9p -- \
curl -s -f -L -X PATCH "http://aether-roc-api:8181/aether-roc-api" \
--header 'Content-Type: application/json' \
--data-raw "$(cat /home/ubuntu/aether-in-a-box//roc-5g-models.json)"; do sleep 5; done
"uuid:a58bd6b9-d8cc-411d-ac14-17cec7153221"
To deploy the 5G SD-CORE and run a test with gNBSim that performs Registration + UE-initiated PDU Session Establishment + sends User Data packets:
$ make 5g-test
...
2022-03-25T15:15:45Z [INFO][GNBSIM][GNodeB][GnbUpUe][3858759684] Handling: QUIT-EVENT
2022-03-25T15:15:45Z [INFO][GNBSIM][GNodeB][GnbUpUe][3858759684] Gnb User-plane UE Context terminated
2022-03-25T15:15:45Z [INFO][GNBSIM][GNodeB][GnbCpUe][3858759684] gNB Control-Plane UE context terminated
2022-03-25T15:15:45Z [DEBU][GNBSIM][RealUe][PduSession][imsi-208930100007496][10] Received last downlink data packet
2022-03-25T15:15:45Z [INFO][GNBSIM][RealUe][PduSession][imsi-208930100007496][10] Pdu Session terminated
2022-03-25T15:15:45Z [INFO][GNBSIM][RealUe][imsi-208930100007496] Real UE terminated
2022-03-25T15:15:45Z [INFO][GNBSIM][SimUe][imsi-208930100007496] Sim UE terminated
2022-03-25T15:15:45Z [INFO][GNBSIM][SimUe][imsi-208930100007496] SIM UE go routine complete
2022-03-25T15:15:47Z [INFO][GNBSIM][Summary] Profile Name: profile2 , Profile Type: pdusessest
2022-03-25T15:15:47Z [INFO][GNBSIM][Summary] Ue's Passed: 5 , Ue's Failed: 0
2022-03-25T15:15:47Z [INFO][GNBSIM][Summary] Simulation Result: PASS
Check that everything is up and running:
$ kubectl get po -A
NAMESPACE NAME READY STATUS RESTARTS AGE
aether-roc aether-roc-api-8788d4cf6-dhsd9 1/1 Running 0 6m19s
aether-roc aether-roc-gui-v2-6d674fd446-jgngs 1/1 Running 0 6m19s
aether-roc aether-roc-umbrella-grafana-74b4c6bcf6-vwkh7 2/2 Running 0 6m19s
aether-roc aether-roc-umbrella-kube-state-metrics-6c57fdcdcc-vt6vl 1/1 Running 0 6m19s
aether-roc aether-roc-umbrella-prometheus-acc-alertmanager-55ddf7468542std 2/2 Running 0 6m19s
aether-roc aether-roc-umbrella-prometheus-acc-server-6df774dc96-nncgk 2/2 Running 0 6m19s
aether-roc aether-roc-umbrella-prometheus-ace-server-7d8c6d4578-k7p6x 2/2 Running 0 6m19s
aether-roc aether-roc-umbrella-prometheus-amp-server-67cc457fc7-hdslj 2/2 Running 0 6m18s
aether-roc aether-roc-websocket-855d64549b-zjnbh 1/1 Running 0 6m19s
aether-roc demo-exporter-f97895d8f-2cjl9 1/1 Running 0 6m19s
aether-roc onos-cli-5d448ff6c4-b7j9p 1/1 Running 0 6m19s
aether-roc onos-config-7886676d5b-vtkrb 6/6 Running 0 6m18s
aether-roc onos-consensus-store-0 1/1 Running 0 6m19s
aether-roc onos-topo-585c7c8976-jtg5t 3/3 Running 0 6m19s
aether-roc prom-label-proxy-acc-58dbc89fb8-s595b 1/1 Running 0 6m19s
aether-roc prom-label-proxy-amp-5d54b6d445-55wqv 1/1 Running 0 6m19s
aether-roc sdcore-adapter-v2-5646d455b9-ljjpc 1/1 Running 0 6m18s
aether-roc subscriber-proxy-7d989c6b5d-kkdbn 1/1 Running 0 6m19s
default router 1/1 Running 0 3m46s
kube-system atomix-controller-6989fbdbf-qdp48 1/1 Running 0 7m19s
kube-system atomix-raft-storage-controller-9b4678b97-vrrrq 1/1 Running 0 6m56s
kube-system calico-kube-controllers-dbfbbc4cb-7m8t4 1/1 Running 0 8m33s
kube-system calico-node-cxlfs 1/1 Running 0 8m42s
kube-system coredns-bbb7d66cd-4k86p 1/1 Running 0 8m20s
kube-system dns-autoscaler-7cdcfcf64f-s8hdf 1/1 Running 0 8m17s
kube-system kube-apiserver-node1 1/1 Running 0 9m26s
kube-system kube-controller-manager-node1 1/1 Running 0 9m26s
kube-system kube-multus-ds-amd64-z5jp6 1/1 Running 0 8m36s
kube-system kube-proxy-9b5h5 1/1 Running 0 8m42s
kube-system kube-scheduler-node1 1/1 Running 0 9m26s
kube-system nodelocaldns-52bkt 1/1 Running 0 8m16s
kube-system onos-operator-app-6b98cbf864-64vwv 1/1 Running 0 6m43s
kube-system onos-operator-topo-6ddd5875ff-5rqd7 1/1 Running 0 6m44s
omec amf-7465456d9f-5mbzx 1/1 Running 0 3m25s
omec ausf-654bbdd6b-7bd55 1/1 Running 0 3m25s
omec gnbsim-0 1/1 Running 0 3m25s
omec mongodb-5fcdcff994-bqnpm 1/1 Running 0 3m25s
omec nrf-5db5789644-65wmd 1/1 Running 0 3m25s
omec nssf-775fdfbbb4-mbs4t 1/1 Running 0 3m25s
omec pcf-756b565d85-h8p2w 1/1 Running 0 3m25s
omec simapp-65dc44b9d-gj9fh 1/1 Running 0 3m25s
omec smf-9bbcf84bc-5xdbq 1/1 Running 0 3m25s
omec udm-5ff558bc69-pfpxh 1/1 Running 0 3m25s
omec udr-cc4654c64-x5pfr 1/1 Running 0 3m25s
omec upf-0 5/5 Running 0 3m25s
omec webui-6db4cfdc55-2wlp7 1/1 Running 0 3m25s
Resource usage
For this particular t2.xlarge
instance:
- Load
$ uptime 15:16:13 up 45 min, 2 users, load average: 1.81, 3.32, 2.17
- Memory
$ free -h total used free shared buff/cache available Mem: 15G 2.7G 1.4G 825M 11G 12G Swap: 0B 0B 0B
- Disk
$ $ df -h | egrep -v 'overlay|shm' Filesystem Size Used Avail Use% Mounted on udev 7.9G 0 7.9G 0% /dev tmpfs 1.6G 8.8M 1.6G 1% /run /dev/xvda1 97G 12G 86G 12% / tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup /dev/loop0 43M 43M 0 100% /snap/snapd/14066 /dev/loop1 56M 56M 0 100% /snap/core18/2253 /dev/loop2 25M 25M 0 100% /snap/amazon-ssm-agent/4046 tmpfs 1.6G 0 1.6G 0% /run/user/1000
ROC GUI
The ROC GUI is available on port 31194 on the host running AiaB.
-
Dashboard
-
Alert view
-
Slice view
-
User plane function view
-
Device groups view
-
Devices view
-
SIM cards view
-
Sites view
-
Small cells view
-
Traffic classes view
-
IP domains view
-
Enterprises view
-
Connectivity services view
Comments