8 minute read

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)


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).


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

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


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