.. This work is licensed under a Creative Commons Attribution .. 4.0 International License. .. http://creativecommons.org/licenses/by/4.0 .. Copyright 2017-2018 Huawei Technologies Co., Ltd. .. Copyright 2019 ONAP Contributors .. _ONAP-architecture: Introduction ============ The ONAP project addresses the rising need for a common automation platform for telecommunication, cable, and cloud service providers—and their solution providers—to deliver differentiated network services on demand, profitably and competitively, while leveraging existing investments. The challenge that ONAP meets is to help operators of telecommunication networks 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 on-premises customer equipment. Many are seeking to exploit SDN and NFV to improve service velocity, simplify equipment interoperability and integration, and to 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). These challenges are still very real now as ONAP creates its fourth release. ONAP is addressing these challenges by developing global and massive scale (multi-site and multi-VIM) automation capabilities for both physical and virtual network elements. It facilitates service agility by supporting data models for rapid service and resource deployment and 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, VNFMs, SDN Controllers, as well as legacy equipment (PNF). ONAP’s consolidated xNF requirements publication enables commercial development of ONAP-compliant xNFs. 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. All this is achieved while minimizing management fragmentation. The ONAP platform allows end-user organizations and their network/cloud providers to collaboratively instantiate network elements and services in a rapid and dynamic way, together with supporting a closed control loop process that supports real-time response to actionable events. In order to design, engineer, plan, bill and assure these dynamic services, there are three major requirements: - A robust design framework that allows the 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, analytics and closed control loop events needed for the elastic management of the service - An orchestration and control framework (Service Orchestrator and Controllers ) that is recipe/ policy-driven to provide an automated instantiation of the service when needed and managing service demands in an elastic manner - 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. To achieve this, ONAP decouples the details of specific services and supporting technologies from the common information models, core orchestration platform, and generic management engines (for discovery, provisioning, assurance etc.). Furthermore, it marries the speed and style of a DevOps/NetOps approach with the formal models and processes operators require to introduce new services and technologies. It leverages cloud-native technologies including Kubernetes to manage and rapidly deploy the ONAP platform and related components. This is in stark contrast to traditional OSS/Management software platform architectures, which hardcoded services and technologies, and required lengthy software development and integration cycles to incorporate changes. The ONAP Platform enables service/resource independent capabilities for design, creation and lifecycle management, in accordance with the following foundational principles: - 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 - Carrier-grade scalability including horizontal scaling (linear scale-out) and distribution to support a large number of services and large networks - Metadata-driven and policy-driven architecture to ensure flexible and automated ways in which capabilities are used and delivered - The architecture shall enable sourcing best-in-class components - Common capabilities are ‘developed’ once and ‘used’ many times - Core capabilities shall support many diverse services and infrastructures Further, ONAP comes with a functional architecture with component definitions and interfaces, which provides a force of industry alignment in addition to the open source code. ONAP Architecture ================= The ONAP architecture consists of a design time and run time functions, as well as functions for managing ONAP itself. **Figure 1 provides a high-level view of the ONAP architecture with its microservices-based platform components.** |image1| Figure 2 below, provides a simplified functional view of the architecture, which highlights the role of a few key components: #. Design time environment for onboarding services and resources into ONAP and designing required services. #. External API provides northbound interoperability for the ONAP Platform and Multi-VIM/Cloud provides cloud interoperability for the ONAP workloads. #. OOM provides the ability to manage cloud-native installation and deployments to Kubernetes-managed cloud environments. #. ONAP Shared Services provides shared capabilities for ONAP modules. MUSIC allows ONAP to scale to multi-site environments to support global scale infrastructure requirements. The ONAP Optimization Framework (OOF) provides a declarative, policy-driven approach for creating and running optimization applications like Homing/Placement, and Change Management Scheduling Optimization. Logging provides centralized logging capabilities, Audit (POMBA) provides capabilities to understand orchestration actions. #. ONAP shared utilities provide utilities for the support of the ONAP components. #. Information Model and framework utilities continue to evolve to harmonize the topology, workflow, and policy models from a number of SDOs including ETSI NFV MANO, TM Forum SID, ONF Core, OASIS TOSCA, IETF, and MEF. |image2| **Figure 2. Functional view of the ONAP architecture** Microservices Support ===================== As a cloud-native application that consists of numerous services, ONAP requires sophisticated initial deployment as well as post- deployment management. The ONAP deployment methodology needs to be flexible enough to suit the different scenarios and purposes for various operator environments. Users may also want to select a portion of the ONAP components to integrate into their own systems. And the platform needs to be highly reliable, scalable, secure and easy to manage. To achieve all these goals, ONAP is designed as a microservices-based system, with all components released as Docker containers following best practice building rules to optimize their image size. To reduce the ONAP footprint, a first effort to use shared data base have been initiated with a Cassandra and mariadb-galera clusters. The ONAP Operations Manager (OOM) is responsible for orchestrating the end-to-end lifecycle management and monitoring of ONAP components. OOM uses Kubernetes to provide CPU efficiency and platform deployment. In addition, OOM helps enhance ONAP platform maturity by providing scalability and resiliency enhancements to the components it manages. OOM is the lifecycle manager of the ONAP platform and uses the Kubernetes container management system and Consul to provide the following functionality: #. Deployment - with built-in component dependency management (including multiple clusters, federated deployments across sites, and anti-affinity rules) #. Configuration - unified configuration across all ONAP components #. Monitoring - real-time health monitoring feeding to a Consul GUI and Kubernetes #. Restart - failed ONAP components are restarted automatically #. Clustering and Scaling - cluster ONAP services to enable seamless scaling #. Upgrade - change out containers or configuration with little or no service impact #. Deletion - clean up individual containers or en
<!--
  ============LICENSE_START=======================================================
  ONAP
  ================================================================================
  Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
  ================================================================================
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at
  
       http://www.apache.org/licenses/LICENSE-2.0
  
  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
  ============LICENSE_END=========================================================
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<parent>
		<groupId>org.onap.policy.drools-applications</groupId>
		<artifactId>common</artifactId>
		<version>1.1.1-SNAPSHOT</version>
	</parent>
	<artifactId>feature-controlloop-utils</artifactId>
	<description>
		Loadable PDP-D feature module to enable simulator usage in a non-junit 
		lab environments.  In a pdp-d lab environment this capability can be 
		enabled with the "feature" mechanisms.
	</description>
	
	<properties>
		<maven.compiler.source>1.8</maven.compiler.source>
		<maven.compiler.target>1.8</maven.compiler.target>
	</properties>

	<build>
		<plugins>
			<plugin>
				<artifactId>maven-assembly-plugin</artifactId>
				<version>2.6</version>
				<executions>
					<execution>
						<id>zipfile</id>
						<goals>
							<goal>single</goal>
						</goals>
						<phase>package</phase>
						<configuration>
							<attach>true</attach>
							<finalName>${project.artifactId}-${project.version}</finalName>
							<descriptors>
								<descriptor>src/assembly/assemble_zip.xml</descriptor>
							</descriptors>
							<appendAssemblyId>false</appendAssemblyId>
						</configuration>
					</execution>
				</executions>
			</plugin>
			
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-dependency-plugin</artifactId>
				<version>2.8</version>
				<executions>
					<execution>
						<id>copy-dependencies</id>
						<goals>
							<goal>copy-dependencies</goal>
						</goals>
						<phase>prepare-package</phase>
						<configuration>
							<transitive>false</transitive>
							<outputDirectory>${project.build.directory}/assembly/lib</outputDirectory>
							<overWriteReleases>false</overWriteReleases>
							<overWriteSnapshots>true</overWriteSnapshots>
							<overWriteIfNewer>true</overWriteIfNewer>
							<useRepositoryLayout>false</useRepositoryLayout>
							<addParentPoms>false</addParentPoms>
							<copyPom>false</copyPom>
							<includeScope>runtime</includeScope>
							<excludeTransitive>true</excludeTransitive>
						</configuration>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
	
	<dependencies>
		<dependency>
			<groupId>org.onap.policy.drools-pdp</groupId>
			<artifactId>policy-management</artifactId>
			<version>${project.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.onap.policy.drools-pdp</groupId>
			<artifactId>policy-endpoints</artifactId>
			<version>${project.version}</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.onap.policy.drools-applications</groupId>
			<artifactId>simulators</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>org.onap.policy.drools-applications</groupId>
			<artifactId>aai</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>org.onap.policy.drools-applications</groupId>
			<artifactId>so</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>org.onap.policy.drools-applications</groupId>
			<artifactId>rest</artifactId>
			<version>${project.version}</version>
		</dependency>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>
	</dependencies>
</project>
resources and services. It achieves cross-domain orchestration and ONAP peering across service providers. In this blueprint, SO is responsible for CCVPN end-to-end service orchestration working in collaboration with VF-C and SDN-C. SDN-C establishes network connectivity, then the VF-C component completes the Network Services and VNF lifecycle management. ONAP peering across CSPs uses an east-west API which is being aligned with the MEF Interlude API. The key innovations in this use case are physical network discovery and modeling, cross-domain orchestration across multiple physical networks, cross operator end-to-end service provisioning, close-loop reroute for cross-domain service, dynamic changes (branch sites, VNFs) and intelligent service optimization (including AI/ML). The Frankfurt release adds support for end-to-end E-LINE services over optical transport network (OTN) network-to-network interface (NNI). Read the `CCVPN Blueprint `_ to learn more. MDONS (Multi-Domain Optical Network Service) Blueprint ------------------------------------------------------ While CCVPN addresses the automation of networking layers 2 and 3, it does not address layers 0 and 1. Automating these layers is equally important because providing an end-to-end service to their customers often requires a manual and complex negotiation between CSPs that includes both the business arrangement and the actual service design and activation. CSPs may also be structured such that they operate multiple networks independently and require similar transactions among their own networks and business units in order to provide an end-to-end service. The MDONS blueprint created by AT&T, Orange, and Fujitsu solves the above problem. MDONS and CCVPN used together can solve the OTN automation problem in a comprehensive manner. |image9| **Figure 9. ONAP MDONS Architecture** vFW/vDNS Blueprint ------------------ The virtual firewall, virtual DNS blueprint is a basic demo to verify that ONAP has been correctly installed and to get a basic introduction to ONAP. The blueprint consists of 5 VNFs: vFW, vPacketGenerator, vDataSink, vDNS and vLoadBalancer. The blueprint exercises most aspects of ONAP, showing VNF onboarding, network service creation, service deployment and closed-loop automation. The key components involved are SDC, CLAMP, SO, APP-C, DCAE and Policy. In the recent releases, the vFW blueprint has been demonstrated by using a mix of a CNF and VNF and entirely using CNFs. Verified end to end tests ========================= Use cases --------- Various use cases have been tested for the Release. Detailed information can be found in :ref:`Verified Use Cases`. - vFirewall with closed loop - vFirewall/vDNS with HPA - vFirewall In-Place Software Upgrade with Traffic Distribution - vFirewall CNF With CDS - Scale Out - CCVPN-E LINE over OTN NNI - CCVPN - MDONS - BBS (Broadband Service) - vFirewall CNF with multicloud k8s plugin - EdgeXFoundry CNF with multicloud k8s plugin - vCPE with Tosca - E2E Automation vLB with CDS Functional requirements ----------------------- Various functional requirements have been tested for the Release. Detailed information can be found in :ref:`Verified Use Cases`. - PNF Software Upgrade using direct Netconf Yang interface with PNF - PNF Software Upgrade with EM with Ansible - PNF Software Upgrade with EM with Netconf - VSP Compliance and Validation Check within SDC - Enable PNF software version at onboarding - xNF communication security enhancements - ETSI Alignment SO plugin to support SOL003 to connect to an external VNFM - Integration of CDS as an Actor - 3rd Party Operational Domain Manager - Configuration & persistency - 5G functional requirements - 5G Realtime PM and High Volume Stream Data Collection - 5G PNF Plug and Play - 5G Bulk PM - 5G OOF and PCI - 5G NRM Network Resource Model (Configuration management) - 5G NETCONF configuration - 5G PNF Pre-Onboarding & Onboarding - 5G OOF SON - 5G E2E Network Slicing - 5G ORAN A1 Adapter (SDNR) Conclusion ========== The ONAP platform provides a comprehensive platform for real-time, policy-driven orchestration and automation of physical and virtual network functions that will enable software, network, IT and cloud providers and developers to rapidly automate new services and support complete lifecycle management. By unifying member resources, ONAP will accelerate the development of a vibrant ecosystem around a globally shared architecture and implementation for network automation—with an open standards focus— faster than any one product could on its own. Resources ========= See the Resources page on `ONAP.org `_ .. |image1| image:: media/ONAP-architecture.png :width: 800px .. |image2| image:: media/ONAP-fncview.png :width: 800px .. |image3| image:: media/ONAP-closedloop.png :width: 800px .. |image4| image:: media/ONAP-5G.png :width: 800px .. |image5| image:: media/ONAP-vcpe.png :width: 800px .. |image6| image:: media/ONAP-bbs.png :width: 800px .. |image7| image:: media/ONAP-volte.png :width: 800px .. |image8| image:: media/ONAP-ccvpn.png :width: 800px .. |image9| image:: media/ONAP-mdons.png :width: 800px