.. This work is licensed under a Creative Commons Attribution
.. 4.0 International License.
.. http://creativecommons.org/licenses/by/4.0
.. Copyright 2019 Nokia; Copyright 2017-2018 Huawei Technologies Co., Ltd.;
.. Copyright 2017 AT&T Intellectual Property

Open Network Automation Platform Overview
=========================================

The Open Network Automation Platform (ONAP) project addresses the
rising need for a **common automation platform for telecommunication, cable,
and cloud service providers**—and their solution providers— that enables the
**automation of different lifecycle processes**, to deliver differentiated
network services on demand, profitably and competitively, while leveraging
existing investments.

Prior to ONAP, telecommunication network operators had to keep up with the
scale and cost of manual changes required to implement new service offerings,
from installing new data center equipment to, in some cases, upgrading
customer equipment on-premises. Many operators are seeking to exploit
Software Defined Network (SDN) and Network Function Virtualization (NFV)
to improve service velocity, simplify equipment interoperability and
integration, and reduce overall CapEx and OpEx costs. In addition, the
current, highly fragmented management landscape makes it difficult to
monitor and guarantee service-level agreements (SLAs).

ONAP is addressing these challenges by developing global and massive
scale (multi-site and multi-Virtual Infrastructure Manager (VIM))
automation capabilities for both physical and virtual network elements.
It facilitates service agility by supporting data models for rapid
service and resource deployment, by providing a common set of Northbound
REST APIs that are open and interoperable, and by supporting model
driven interfaces to the networks. ONAP’s modular and layered nature
improves interoperability and simplifies integration, allowing it to
support multiple VNF environments by integrating with multiple VIMs,
virtualized network function managers (VNFMs), SDN Controllers, and
even legacy equipment. ONAP’s consolidated VNF requirements enable
commercial development of ONAP-compliant VNFs. This approach allows
network and cloud operators to optimize their physical and virtual
infrastructure for cost and performance; at the same time, ONAP’s
use of standard models reduces integration and deployment costs of
heterogeneous equipment, while minimizing management fragmentation.

Scope of ONAP
-------------

ONAP enables end user organizations and their network or cloud providers
to collaboratively instantiate network elements and services in a dynamic,
closed control loop process, with real-time response to actionable events.

ONAP’s major activities, that is designing, deploying and operating
services, are provided based on ONAP’s two major frameworks, namely on
Design-time framework and Run-time framework:

.. image:: media/ONAP_main_functions.png
    :scale: 40 %

In order to design, deploy and operate services and assure these dynamic
services, ONAP activities are built up as follows:

* **Service design** – Service design is built on a robust design framework
  that allows specification of the service in all aspects – modeling the
  resources and relationships that make up the service, specifying the policy
  rules that guide the service behavior, specifying the applications, analytic
  and closed control loop events needed for the elastic management of the
  service.
* **Service deployment** – Service deployment is built on an orchestration
  and control framework that is policy-driven (Service Orchestrator and
  Controllers) to provide automated instantiation of the service when
  needed and managing service demands in an elastic manner.
* **Service operations** – Service operations are built on an analytic
  framework that closely monitors the service behavior during the service
  lifecycle based on the specified design, analytics and policies to enable
  response as required from the control framework, to deal with situations
  ranging from those that require healing to those that require scaling
  of the resources to elastically adjust to demand variations.

ONAP enables product- or service-independent capabilities for design,
deployment and operation, in accordance with the following foundational
principles:

1. Ability to dynamically introduce full service lifecycle orchestration
   (design, provisioning and operation) and service API for new services
   and technologies without the need for new platform software releases
   or without affecting operations for the existing services

2. Carrier-grade scalability including horizontal scaling (linear scale-out)
   and distribution to support large number of services and large networks

3. Metadata-driven and policy-driven architecture to ensure flexible and
   automated ways in which capabilities are used and delivered

4. The architecture shall enable sourcing best-in-class components

5. Common capabilities are ‘developed’ once and ‘used’ many times

6. Core capabilities shall support many diverse services and infrastructures

7. The architecture shall support elastic scaling as needs grow or shrink

Functional overview of ONAP
===========================

The following guidelines show the main ONAP activities in a chronological
order, presenting ONAP's functional structure:

1. **Service design** - ONAP supports Service Design operations, using the
TOSCA approach.
These service design activities are built up of the following subtasks:

 a. Planning VNF onboarding – checking which VNFs will be necessary for the
    required environment and features
 b. Creating resources, composing services
 c. Distributing services - Distributing services constitutes of 2 subtasks:

 * TOSCA C-SAR package is stored in the Catalog
   * new service notification is published

2. **Service orchestration and deployment**

  a. Defining which VNFs are necessary for the service
  b. Defining orchestration steps
  c. Selecting valid cloud region
  d. Service orchestration calling cloud APIs to deploy VNFs

  * The onboarding and instantiation of VNFs in ONAP is represented via
     the example of onboarding and instantiating a virtual network function
     (VNF), the virtual Firewall (vFirewall). Following the guidelines and
     steps of this example, any other VNF can be similarly onboarded
     and instantiated to ONAP. See :ref:`virtual Firewall Onboarding and
     Instantiating <vfirewall_usecase>` examples.

  e. Controllers applying configuration on VNFs

3. **Service operations**

  a. Closed Loop design and deployment
  b. Collecting and evaluating event data

Benefits of ONAP
================

Open Network Automation Platform provides the following benefits:

* common automation platform, which enables common management of services and
  connectivity, while the applications run separately
* a unified operating framework for vendor-agnostic, policy-driven service
  design, implementation, analytics and lifecycle management for
  large-scale workloads and services
* orchestration for both virtual and physical network functions
* ONAP offers Service or VNF Configuration capability, in contrast to other
  open-source orchestration platforms
* the model-driven approach enables ONAP to support services, that are using
  different VNFs, as a common service block
* service modelling enables operators to use the same deployment and management
  mechanisms, beside also using the same platform

ONAP Release information
========================

ONAP is enhanced with numerous features from release to release. Each release
is named after a city.

+----------------------+----------------+----------------------+-----------------------------------------------------------+
|Release Name          |Release version |Release Date          |Features delivered                                         |
+======================+================+======================+===========================================================+
|El Alto               |5.0.1           | 24 October 2019      | :ref:`El Alto Release Notes <release-notes>`              |
+----------------------+----------------+----------------------+-----------------------------------------------------------+
|Dublin                |4.0.0           | 9 July 2019          |                                                           |
+----------------------+----------------+----------------------+-----------------------------------------------------------+
|Casablanca            |* 3.0.2         |* 31 January 2019     |                                                           |
|                      |* 3.0.1         |* 30 November 2018    |                                                           |
|                      |* 3.0.0         |* 15 April 2019       |                                                           |
+----------------------+----------------+----------------------+-----------------------------------------------------------+
|Beijing               |2.0.0           |7 June 2018           |                                                           +
+----------------------+----------------+----------------------+-----------------------------------------------------------+
|Amsterdam             |1.0.0           |16 November 2017      |                                                           +
+----------------------+----------------+----------------------+-----------------------------------------------------------+

ONAP Blueprints and environments
================================

ONAP is able to deploy and operate VNFs running OpenStack based Centralized
Private Cloud Instances, as well as Mobile Edge Cloud instances.
ONAP has been tested in the following network environments:

* Voice Over LTE (VoLTE)
* Customer Premise Equipment (CPE)
* 5G
* Cross Domain and Cross Layer VPN (CCVPN)
* Broadband Service (BBS)

Licenses
========

Open Network Automation Platform (ONAP) is an open source project hosted by the
Linux Foundation.

ONAP Source Code is licensed under the `Apache Version 2 License <http://www.apache.org/licenses/LICENSE-2.0>`_.
ONAP Documentation is licensed under the `Creative Commons Attribution 4.0
International License <http://creativecommons.org/licenses/by/4.0>`_.
