Aether 2.0 Release
==================

Aether Highlights
-----------------

This release of Aether, the first to `fully embrace open
source <https://www.prnewswire.com/news-releases/onfs-leading-private-5g-connected-edge-platform-aether-now-released-to-open-source-301487587.html>`__,
adds two exciting new capabilities. The first is support for 5G
deployments, enabling greatly increased bandwidth compared to 4G-based
deployments. Complementing 5G is our P4 based mobile-core User Plane
Function (UPF), which offers a high performance hardware-accelerated
datapath that does not need to be routed through compute-based software
UPFs. Aether maintains backward compatibility with 4G, and both 4G and
5G slices may make use of both software and hardware based UPFs. P4
hardware and BESS software UPFs can be deployed side-by-side in a hybrid
deployment.

As part of this release, several edge applications have been showcased
on the Aether platform. We demonstrated the first Aether-interactive
smart application, an OpenVINO based AI/ML person-detection application
that dynamically increases network-bandwidth for video recording
purposes when a person is detected, and then dynamically reduces the
same when people are no longer detected. In partnership with Intel,
we have also deployed an anomaly detection application on the Aether
platform that runs as an edge application, monitors a manufacturing or
packaging line of product samples, and then uses an AI/ML algorithm to
detect anomalies in real time. These applications were demonstrated at
Mobile World Congress 2022 in Barcelona last week.

The transition to open source will further increase the pace of Aether
development, putting it within the reach of the 5G and edge developer
community that ONF has been cultivating and encouraging. Developer
contributions are welcome, and increased access will allow increased
adoption of this technology.

Features & Improvements
-----------------------

New 5G features
"""""""""""""""

This release of Aether incorporates SD-Core 1.1, which includes
integration with 5G gNB small-cells from T&W running 5G-SA RAN stack
from Radisys, 5G slices with Application filtering, and a policy
framework that supports QoS at multiple levels - subscribers,
applications and slices. For more details, please refer to the SD-Core
1.1 Release notes.

SD-Fabric Integration
"""""""""""""""""""""

This release of Aether incorporates SD-Fabric 1.1. While previous
releases of Aether supported SD-Fabric as a “Beta” feature, this release
officially supports the P4 UPF and other SD-Fabric features like paired
leaf-switches with dual UPFs for High Availability.

The P4 UPF may now be added to Aether as an available UPF. In addition
to a single P4 UPF, Aether continues to allow multiple BESS UPFs to be
deployed alongside the P4 UPF. The user can decide at slice provisioning
time whether a slice should use the P4 UPF or a BESS UPF. UPFs may only
be bound to one slice at a time. The P4 UPF and the BESS UPF both
support application filtering and QoS metering. The BESS UPF has been
enhanced to include additional per-flow metrics.

For more details, please refer to the SD-Fabric 1.1 Release notes.

Sim-Card and Device Modeling
""""""""""""""""""""""""""""

The Aether configuration model has been enhanced to include support for
*SIM card* and *device* modeling. The lifecycle of a device is now
decoupled from the lifecycle of the SIM card that is attached to that
device. Devices can be created in the modeling before their SIM cards
are created, and devices may continue to exist after their SIM cards
have been removed. A removed SIM card can be associated with a different
device.

Aether may be configured to automatically learn of provisioned SIM cards
and add them to the enterprise configuration. An administrator may then
see the list of available SIM cards and choose which one to add to a
device.

The model tree has been revised to be more hierarchical. For example,
Slices are now contained within Sites, and Sites are contained within
Enterprises. This eliminated many of the boilerplate Slice and
Enterprise links that used to be present in the Aether-1.6 models, and
it provides automatic enforcement of objects to the appropriate scope.

Configuration System Improvements
"""""""""""""""""""""""""""""""""

Aether’s ROC configuration system internals were redesigned and
reimplemented to address various instability issues and incorporate new
patterns and architectures. The controllers at the core of onos-config
were `redesigned in
TLA+ <https://github.com/onosproject/onos-tlaplus/blob/master/Config/Config.pdf>`__
– a machine-checked formal specification language – to develop a more
stable and viable architecture long-term, and the controllers were
reimplemented according to the new design. On the northbound, new gNMI
extensions make onos-config’s handling of gNMI Set and Get requests
configurable with support for various consistency strategies when
propagating changes to gNMI targets. On the southbound, support was
added for handling non-persistent targets (recovering target
configuration after restarts). For additional information, please see
the `README
file <https://github.com/onosproject/onos-config/blob/master/docs/README.md>`__
for the configuration system.

Support for complex validation rules
""""""""""""""""""""""""""""""""""""

Aether now has support for complex validation rules (“guardrails”) to
prevent misconfiguration of the system. These guardrails are specified
using Aether’s yang modeling language, allowing Aether staff to easily
add more rules as the need arises.

Data Plane Optimization
"""""""""""""""""""""""

Prior releases of Aether passed data plane traffic through the
management server. Aether 2.0 has been optimized so that this is no
longer necessary. User traffic is now processed by the P4-UPF or the
BESS-UPF and then forwarded upstream (or to edge-applications) directly
by the dataplane (fabric) leaf-switch.

Furthermore, we now support more common enterprise deployments where the
radio access nodes (eNBs/gNBs) connect to the enterprise L3-routed
network, rather than connect directly to our fabric. We also simplified
configuration to support the use of fabric-switch front panel ports
rather than using the confusing, device-specific SDK ports.

Aether Testing
--------------

Aether uses automated testing based on Jenkins and Robot Framework. The
tests performed are described below.

SD-Core Tests:

* 4G

   * Functional coverage: attach, detach, dataplane traffic, handover,
     TAU, paging, error scenarios, failure/restart of network
     functions

* 5G

   * Functional Coverage: register, deregister, dataplane traffic
     scenarios, handover, TAU, DDN, few error scenarios, few
     failure/restart of network functions, application filtering,
     QoS

* Jenkins jobs for functional can be found at

   * https://jenkins.aetherproject.org/view/SD%20Core%20System%20Tests/

ROC:

* Functional API

* Related Jenkins jobs

   * https://jenkins.aetherproject.org/view/ROC%20System%20Tests/

Aether System Tests

* 5G

   * Functional testing includes multiple slice creations,
     enable/disable of device groups, QoS validations, rate limiting
     tests (at UE, slice, application), application filtering tests,
     container restart tests

* 4G

   * Functional testing includes multiple slice creations,
     enable/disable of device groups, QoS validations, rate limiting
     tests (at UE, slice, application), application filtering tests,
     container restart tests

* Jenkins Jobs:

   * https://jenkins.aetherproject.org/view/Aether%20System%20Tests/

Documentation
-------------

Aether documentation is available at
`docs.aetherproject.org <http://docs.aetherproject.org>`__.

Limitations and Known Issues
----------------------------

*  Each site should be configured with a different “Enterprise ID”.

*  The P4 UPF does not support Slice MBR, which requires leaving out the
   `configuration endpoint` configuration for P4 UPFs.
   Additionally, only 1 slice can currently use a P4 UPF. The next
   release of Aether will remove both limitations.

*  The transaction history page on the operations portal is not
   currently enabled; It will be available shortly after the first
   2.0 release.

*  The Sim-Card model deviates from the ID convention used by the other
   models, using the field “sim-id” instead of “sim-card-id”.

*  IMSIs should not be removed from Simapp. They may be added at any
   time.

*  When running the ROC GUI in the Firefox browser, it is possible to enter
   non-numeric characters in to numeric fields.

*  Application filtering is not available for some combinations of 5G UEs and
   5G gNBs. For 5G slices, it is recommended that default behavior be set to
   ALLOW-ALL and application filtering rules not be added at this time.

Component Versions
------------------

ROC:

* atomix-controller: 0.6.9

* atomix-raft-storage: 0.1.25

* onos-operator: 0.5.1

* aether-roc-umbrella: 2.0.43

:doc:`SD-Core 1.1 <sdcore:release/1.1>`

* sdcore-helm-chart: 0.10.16 (Umbrella Helm Chart)

   * Omec-control-plane : 0.10.11

   * Omec-sub-provision : 0.4.5

   * 5g-control-plane : 0.6.19

   * 5g-ran-sim: 0.4.11

UPF: bess-upf: 0.0.5

:doc:`SD-Fabric 1.1 <sdfabric:release/1.1.0>`

* sdfabric: 1.1.0

Hardware and Vendor Dependencies:

* Sercomm eNB: Firmware version 3922

* Radisys 5G-SA RAN stack: TRILLIUM_5GNR_NXP_GNB_AIO_QCOM_SUB6_WITH_DPDK_BIN_REL_2.4.3

* T&W gNB: 5G Sub-6GHz Small Cell (N78, 8GB DDR, With housing), Model SDQ001-RU (N78)

