Table of Contents
Table of Contents |
---|
ETSI Standard Conformation
This proposal conforms to the SOL005 and SOL003 following ETSI v2.7.1 specifications.
- SOL005: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/02.07.01_60/gs_NFV-SOL005v020701p.pdf
- SOL003: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/02.
ONAP SO Hierarchical Orchestration Architecture
Gliffy Diagram name ONAP SO ETSI Hierarchical Orchestration pagePin 18
Requirements
Support for ETSI NFV NFVO Orchestrator in ONAP SO (ONAP SO ETSI-Aligned Hierarchical Orchestration)
Executive Summary - Enable E2E workflows by orchestrating ETSI NFV compliant Network Services and VNFs. This NFVO should provide an ETSI NFV SOL005 v2.7.1 NBI which can onboard ETSI NFV SOL004 and ETSI NFV SOL007 v2.7.1 compliant packages which then can be Life Cycle Managed and monitored. This NFVO should use an ETSI SOL003 v2.7.1 SBI to invoke an external VNF Manager.
Business Impact - Enables operators and service providers to use Industry standard Orchestration to deploy, manage and monitor network services. Industry compatibility.
Business Markets - All operators and service providers that are developing ETSI compatible Network Services especially for 5G Slicing where each Slice Subnet is associated with a Network Service
Funding/Financial Impacts - Reduction in operations expense from using industry standard ETSI Orchestration.
Organization Mgmt, Sales Strategies -There is no additional organizational management or sales strategies for this requirement outside of a service providers "normal" ONAP deployment and its attendant organizational resources from a service provider.
Requirements For Guilin
ONAP SO NFVO
ONAP SO NFVO provides ETSI NFV-compliant NFVO functions.
- Supports the lifecycle of Network Service (NS)
- Create NS
- Instantiate NS
- Terminate NS
- Delete NS
- Subscription
- Exposes NS lifecycle management interfaces (Os-Ma-Nfvo) to its client such as ONAP SO or SOL005-compliant clients
- Create NS
- Instantiate NS
- Terminate NS
- Delete NS
- Subscription
- Sends NS lifecycle management notifications (Os-Ma-Nfvo) to its client such as ONAP SO or SOL005-compliant clients
- Notification (as a client)
- Manages (as a client) virtualized resources via interfaces (Or-Vi) exposed by the VIM
- Software Image
- Container Image Management (stretch goal)
- Resource Management, validation and authorization of NFVI resource requests
- Supports Virtual Links, CPs and VNF-FG
- VLs
- CPs
- VNF-FGs (stretch goal)
- Manages (as a client) virtualized resource management interfaces (Or-Vnfm) to the VNFM
- Leverages the SOL003 Adapter and supports
- Create VNF
- Instantiate VNF
- Terminate VNF
- Delete VNF
- Subscription
- Leverages the SOL003 Adapter and supports
- Supports virtualized resource management interfaces (Or-Vnfm) to the VNFM
- Granting VNF with HPA, leveraging OOF
- Granting VNF with HPA, leveraging OOF
- Supports VNF lifecycle management notifications (Or-Vnfm) to the VNFM
- Notification
- Manages (as a client) SOL004 VNF/PNF and SOL007 NS package management leveraging ETSI Catalog Manager
- Queries packages (VNF/PNF/NS)
- Queries descriptions (VNFD/PNFD/NSD)
- Subscription
- Supports package notification interfaces (Os-Ma-Nfvo and Or-Vnfm) to ETSI Catalog Manager
- Supports Communication Security, conforming SOL005 specification
- ONAP SO NFVO NBI supports HTTPS and Authentication/Authorization towards SO/SOL005 Adapter
- ONAP SO NFVO SBI (through SOL003 Adapter) supports HTTPS and Authentication/Authorization towards SVNFMs
Epic and User Story
...
Epic
...
User Story
...
Description
...
- SOL003v020701p.pdf
- SOL002: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/02.07.01_60/gs_NFV-SOL002v020701p.pdf
- SOL004: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/004/02.07.01_60/gs_NFV-SOL004v020701p.pdf
- SOL007: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/007/02.07.01_60/gs_NFV-SOL007v020701p.pdf
- SOL001: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/001/02.07.01_60/gs_NFV-SOL001v020701p.pdf
Resource commitment:
- Ericsson: primary contact Byung-Woo Jun
- CMCC: primary contact Yan Yang, Yuanhong Deng
- Verizon: primary contact user-827d7
- Samsung: primary contact Miroslaw Medrek
Requirement:
- Ericsson: primary contact Byung-Woo Jun
- CMCC: primary contact Yan Yang, Yuanhong Deng
- Verizon: primary contact user-827d7
- Samsung: primary contact Miroslaw Medrek
- Huawei: primary contact Seshu Kumar Mudiganti
ONAP SO Hierarchical Orchestration Architecture
Rationale & Benefits
Rationale
Many operators have their own ETSI-compliant NFVOs, and there is a strong desire for us to have both ETSI- and ONAP-compliant NFVO. So, we propose the ONAP SO NFVO "platform", which is based on ONAP and leveraging modular and extensible plugin-based microservice API management, such as an enhanced MSB, Gravitee, Kong or Kubernetes. Once we build this NFVO platform in ONAP, operators including us can focus on the proprietary development of truly differentiating value-added capabilities on top of the NFVO platform. We believe this approach provides cost saving over implementation of proprietary code, both for initial development, ongoing standardization support and enhancements.
Note: VFC would be still a valid NFVO reference implementation. And, we want to have this NFVO platform which provides modular and extensible capabilities.
Benefits
- Boosts industry compatibility by leveraging ETSI compliant models, interfaces and package management
- Provides pluggable NFVO functional blocks that are modular and extensible
- Enables Operators to focus on the proprietary development of truly differentiating value-added capabilities on top of ONAP SO NFVO
- Provides cost saving over implementation in proprietary code, both for initial development, ongoing standardization support and enhancements
Hierarchical Orchestration Architecture
The following diagram depicts ONAP SO hierarchical orchestration architecture.
Gliffy Diagram name ONAP SO ETSI Hierarchical Orchestration pagePin 25
ONAP SO NFVO Function Overlap View in ETSI MANO
- The following diagram depicts the SO NFVO position in ETSI MANO.
NSD Structure that is supported by NS LCM
- The following diagram depicts the NSD structure that NS LCM supports.
- VNF-FG is out of scope from Guilin.
ONAP SO NFVO Architecture & Functions
Target Component Diagram (Not all will be implemented in Guilin)
The following diagram depicts the NFVO component architecture
- NFVO Microservice Plugin Platform provides Microservice registration, discovery and routing.
- Microservice registration will be performed by configuration.
Note:
- we are not building the Microservice service registration, aggregation, discovery and routing engine itself, but we are leveraging the engine's capability (e.g., MSB, API Fabric, Kong, or Kubernetes & service discovery) to offer configuration of NFVO Microservice components access. So, the NFVO Microservice Plugin Platform is the engine + NFVO component configuration.
- If dynamic BPMN deployment is not available in Guilin, it is possible the NS Workflows embed Camunda Engine for Guilin, as a Microservice.
- In the dynamic BPMN deployment case, the NS Workflows would be a WAR file, containing NS BPMNs + Business Logic, and deployed into Camunda Engine.
Gliffy Diagram macroId 6eb369b2-795b-470e-91dd-44f9424a19f2 name ONAP NFVO component architecture pagePin 25
SO NFVO Sub-Components
- SOL005 NBI Handler
- NS LCM Manager
- NS Workflows & Business Logic
- Shared Camunda Engine
- RIM (Resource Infra Management) Manager
- SOL003 Adapter
- Inventory DB Adapter (for AAI)
- NS LCM DB
- Catalog DB Adapter (for ETSI Catalog Manager)
- MultiCloud Adapter (for MultiCloud)
- Configuration Adapter (not for Guilin)
- Policy Adapter (not for Guilin)
- FM/PM Event Manager (not for Guilin)
- K8S Adapter (not for Guilin)
ONAP SO NFVO Component for Guilin
The following diagram diagram depicts ONAP SO NFVO Component for Guilin.
Gliffy Diagram | ||||||
---|---|---|---|---|---|---|
|
ONAP SO NFVO Component Deployment View
The following diagrams depict a deployment view of ONAP SO NFVO. There are Plan A and B. The Plan B provides a simpler deployment option and will support the NS Workflow BPMNs migration to the Stand-Alone shared Camunda engine (when ONAP SO support custom Workflow deployment).
Deployment View for Guilin
In the Guilin, SO NFVO will consist of the following PODs:
- NS LCM Mgr
- SOL003 Adapter
- NS LCM DB Mgr (not for Guilin; designed to reuse the VFC NS LCM DB Mgr Microservice, but the VFC Microservice is not yet available for Guilin)
- In Guilin, NFVO database follows ONAP SO Database mechanism.
- Resource Infra Management Mgr (not for Guilin; designed to handle OOF-based resource granting and Or-Vi management, but the OOF-based granting is not available for Guilin)
Gliffy Diagram macroId 65987ba7-eb48-48cb-bb3c-f5de64cc0ee0 name SO NFVO Deployment View - Plan B pagePin 3
Guilin SO NFVO Testing
The UUI - SO - E2E Workflows - NS Workflows - SOL005 Adapter sequences are not ready for Guilin. As a result, the Curl Command as the SO NFVO client allows to send SOL005-compliant requests to SO NFVO directly.
Gliffy Diagram | ||||||
---|---|---|---|---|---|---|
|
Microservice Component Registration
TBD
SOL003 Adapter Registration
The SOL003 Adapter registers itself in the OOM installation
[oom.git] / kubernetes / so / charts / so-vnfm-adapter / templates / service.yaml
1 # Copyright © 2019 Nordix Foundation
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 apiVersion: v1
15 kind: Service
16 metadata:
17 name: {{ include "common.servicename" . }}
18 namespace: {{ include "common.namespace" . }}
19 labels:
20 app: {{ include "common.name" . }}
21 chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
22 release: {{ include "common.release" . }}
23 heritage: {{ .Release.Service }}
24 annotations:
25 msb.onap.org/service-info: '[
26 {
27 "serviceName": "{{ include "common.servicename" . }}",
28 "version": "v1",
29 "url": "/so/vnfm-adapter/v1",
30 "protocol": "REST",
31 "port": "{{.Values.service.externalPort}}",
32 "visualRange":"1"
33 }
34 ]'
35 spec:
36 type: {{ .Values.service.type }}
37 ports:
38 {{if eq .Values.service.type "NodePort" -}}
39 - port: {{ .Values.service.internalPort }}
40 nodePort: {{ .Values.global.nodePortPrefixExt | default .Values.nodePortPrefixExt }}{{ .Values.service.nodePort }}
41 name: {{ .Values.service.portName }}
42 {{- else -}}
43 - port: {{ .Values.service.externalPort }}
44 targetPort: {{ .Values.service.internalPort }}
45 name: {{ .Values.service.portName }}
46 {{- end}}
47 selector:
48 app: {{ include "common.name" . }}
49 release: {{ include "common.release" . }}
Also, it registers itself with MSB.
metadata:
name: {{ include "common.servicename" . }}
namespace: {{ include "common.namespace" . }}
labels:
app: {{ include "common.name" . }}
chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
release: {{ include "common.release" . }}
heritage: {{ .Release.Service }}
annotations:
{
"serviceName": "{{ include "common.servicename" . }}",
"version": "v1",
"url": "/so/vnfm-adapter/v1",
"protocol": "REST",
"port": "{{.Values.service.externalPort}}",
"visualRange":"1"
}
]'
Component Interfaces
The following diagram depicts component interfaces.
Note: the blue lines represent interfaces within SO NFVO, and the black lines represent NFVO component interfaces with other ONAP components.
Gliffy Diagram macroId 8a4b5048-c8b6-4d47-874e-7cfaabed8d83 name ONAP NFVO component interfaces pagePin 24
Architecture Presentation Slide Deck and Approval
ONAP Architecture Subcommittee approved this architecture on June 16th 2020.
View file | ||||
---|---|---|---|---|
|
Implementation Plan For Guilin
- Create NS NBI
- Instantiate NS NBI
- Terminate NS NBI
- Delete NS NBI
- Create NS Backend
- Instantiate NS Backend
Requirements
Support for ETSI NFV NFVO Orchestrator in ONAP SO (ONAP SO ETSI-Aligned Hierarchical Orchestration)
Executive Summary - Enable E2E workflows by orchestrating ETSI NFV compliant Network Services and VNFs. This NFVO should provide an ETSI NFV SOL005 v2.7.1 NBI which can onboard ETSI NFV SOL004 and ETSI NFV SOL007 v2.7.1 compliant packages which then can be Life Cycle Managed and monitored. This NFVO should use an ETSI SOL003 v2.7.1 SBI to invoke an external VNF Manager.
Business Impact - Enables operators and service providers to use Industry standard Orchestration to deploy, manage and monitor network services. Industry compatibility.
Business Markets - All operators and service providers that are developing ETSI compatible Network Services especially for 5G Slicing where each Slice Subnet is associated with a Network Service
Funding/Financial Impacts - Reduction in operations expense from using industry standard ETSI Orchestration.
Organization Mgmt, Sales Strategies -There is no additional organizational management or sales strategies for this requirement outside of a service providers "normal" ONAP deployment and its attendant organizational resources from a service provider.
ONAP SO NFVO Requirements for Guilin
ONAP SO NFVO is a sub-component of SO and provides ETSI NFV-compliant NFVO functions in ONAP, such as ETSI NFVO MANO 1) SOL007, SOL004 and SOL001 Modeling and Package, 2) SOL005-compliant NBI, 3) NS LCM and 4) SOL003-compliant SBI for VNFM invocation.
Note:
For the ONAP SO NFVO, we plan to build:
1) the NFVO platform foundation,
2) SOL005 NBI (based on the forge.etsi.org SOL005 swagger files; we believe it is easy to upgrade for ETSI specification changes),
3) NS LCM Manager leveraging Camunda BPMN with custom workflows support (in the future, possibly design workflows from SDC and associate them with NS models – model-driven),
4) leveraging VFC NS Instance DB microservice and NS LCM business logic, and
5) CNF support hook. Since ONAP SO already has the SOL003 Adapter, for our project, at this time we don’t need VFC gVNFM and VNFM adapting mechanism.
P1: Phase 1 (for Guilin)
P2: Phase 2 (post Guilin)
P3: Phase 3 (future release)
Requirement # | Requirement | Component | Phase |
---|---|---|---|
NFVO.R1 | Provides a NFVO function Microservice plugin framework for hosting NFVO function components by configuration. Note: we are not building the Microservice service registration, aggregation, discovery and routing engine itself, but we are leveraging the engine's capability (e.g., MSB, API Fabric, Kong, or Kubernetes & service discovery) to offer configuration of NFVO Microservice components access. Note: the engine choice is under discussion
| Microservice Plugin Framework (configuration) | P1 |
NFVO.R2 | Supports SOL005-compliant NS LCM (Network Service Lifecycle Management) NBI interfaces for its client such as ONAP SO or SOL005-compliant clients. In Guilin, the following operations will be supported
| SOL005 NBI | P1 |
NFVO.R3 | Supports the ETSI-compliant NS LCM. In Guilin, the following operations will be supported
| NS LCM | P1 |
NFVO.R4 | Sends SOL005-compliant NS LCM notifications to its subscriber, such as ONAP SO or SOL005-compliant clients
| SOL005 NBI | P1 |
NFVO.R5 | Manages (as a client) virtualized resources via interfaces (Or-Vi) exposed by the VIM
| NS RIM Manager | P1 |
NFVO.R6 | Supports Virtual Links and VNF-FG - NS LCM
| NS LCM | P1 |
NFVO.R7 | Manages (as a client) virtualized resource management interfaces (SOL003) thru the existing SOL003 Adapter
| NS LCM, SOL003 Adapter | P1 |
NFVO.R8 | Supports VNF Granting interfaces (SOL003) to the SOL003 Adapter
| NS LCM, NS RIM Manager, SOL003 Adapter | P1 |
NFVO.R9 | Supports VNF lifecycle management (LCM) notifications (SOL003) to the SOL003 Adapter
| NS LCM, SOL003 Adapter | P1 |
NFVO.R10 | Interfaces with ETSI Catalog Manager for SOL004 VNF/PNF and SOL007 NS packages
| NS LCM | P1 |
NFVO.R11 | Supports package management notification interfaces to ETSI Catalog Manager
| NS LCM | |
NFVO.R12 | Supports Communication Security, conforming SOL005 specification
| NS LCM, SOL005 NBI | P1 |
ONAP SO and SOL005 Adapter Requirements
Requirement # | Requirement | Component | Phase |
---|---|---|---|
SOL005.A.R1 | ONAP SO receives E2E (OSS Service-level) requests and parse them and invoke NS workflows per NS Sends SOL005 requests to the ONAP SO NFVO, as one of the choices (SO NFVO, VFC, External NFVO) | SOL005 Adapter | P1 |
SOL005.A.R2 | Subscribes to ONAP SO NFVO for notifications
| SOL003 Adapter | P1 |
SOL005.A.R3 | Provides notification endpoint(s) to receive notifications
| SOL003 Adapter | P1 |
SOL003 Adapter Requirements
Requirement # | Requirement | Component | Phase |
---|---|---|---|
SOL003.A.R1 | SOL003 Adapter will be invoked by SO NFVO | SOL003 Adapter, NS LCM | P1 |
Note:
|
SOL002 Adapter Requirements
Requirement # | Requirement | Component | Phase |
---|---|---|---|
Note:
|
ETSI Catalog Manager Requirements
Requirement # | Requirement | Component | Phase |
---|---|---|---|
ETSI.CATALOG.R1 | ETSI Catalog Manager supports ETSI v.2.7.1 specification
| ETSI Catalog Manager | P1 |
Out of Scope Features from Guilin
The following features are out of scope from Guilin:
- Container Image Management (P2)
- Resource Management, validation and authorization of NFVI resource requests (P2)
- VNF-FGs (P2)
Container Image Management (P2)
- Virtualized Resources Information Management (P2)
Virtualized Resources Capacity Management (P2)
- Virtualized Resources Management (P2)
Virtualized Resources Change Management (P2)
- Virtualized Resources Reservation Management (P2)
Virtualized Resource Quota Management (P2)
- Virtualized Resource Performance Management (P2)
Virtualized Resource Fault Management (P2)
- Network Forwarding Path (NFP) Management (P2)
- Scale NS (POST “/api/nslcm/v1/ns_instances/{nsInstanceId}/scale”) – (P2)
- Heal NS (“POST ”/api/nslcm/v1/ns_instances/{nsInstanceId}/heal”) – (P2)
- VNF Modify (ModifyVnfInfo) (P2)
- VNF Heal (P2)
- VNF Query (P2)
- SOL003 NBI enhancements for GNFC-ready (P2)
- SOL003 Modify, Heal and Scale (P2)
- K8S Adapter (P2)
- FM/PM Event Adapter (P2)
Use Cases
- As a start, simplified vCPE NS use cases plan to be used
- For simplicity, vCPE NS use cases without nested NSDs will be used for initial component testing.
- Network Slicing use cases will be defined for official testing
- TBD
Master Requirement
Support for ETSI NFV NFVO Orchestrator in ONAP SO (ONAP SO ETSI-Aligned Hierarchical Orchestration) | Executive Summary - Enable E2E workflows by orchestrating ETSI NFV compliant Network Services and VNFs. This NFVO should provide an ETSI NFV SOL005 v2.7.1 NBI which can onboard ETSI NFV SOL004 and ETSI NFV SOL007 v2.7.1 compliant packages which then can be Life Cycle Managed and monitored. This NFVO should use an ETSI SOL003 v2.7.1 SBI to invoke an external VNF Manager. Business Impact - Enables operators and service providers to use Industry standard Orchestration to deploy, manage and monitor network services. Industry compatibility. Business Markets - All operators and service providers that are developing ETSI compatible Network Services especially for 5G Slicing where each Slice Subnet is associated with a Network Service Funding/Financial Impacts - Reduction in operations expense from using industry standard ETSI Orchestration. Organization Mgmt, Sales Strategies -There is no additional organizational management or sales strategies for this requirement outside of a service providers "normal" ONAP deployment and its attendant organizational resources from a service provider. | Yes |
|
---|
Epic and User Story
Epic | User Story | Sub-Task | Description | In Guilin? | JIRA | Size | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Support for NFVO Microservice Plugin (P1) | Support SO NFVO function Microservice plugin capabilities, leveraging MSB, SpringBoot and Kubernetes, for hosting NFVO function components by configuration. So, the SO NFVO can be customized in a future by operators.
Note: we are not building the Microservice service registration, aggregation, discovery and routing engine itself, but we are leveraging the engine's capability (e.g., MSB, API Fabric, Kong, or Kubernetes & service discovery) to offer configuration of NFVO Microservice components access. In Guilin, the following will be supported
| Yes |
| |||||||||||||||||||||||||||
<requirements for each SO-NFVO Microservice>
| Support for NFVO Service Registration | Supports NFVO Micro-Service Registration for plugging in microservices
| Yes | |||||||||||||||||||||||||||
<requirements for finding SO-NFVO sub-microservices>
| Support for NFVO Service Discovery | Supports NFVO Micro-Service Discovery with version control
| Yes | |||||||||||||||||||||||||||
<requirements for communication between SO-NFVO sub-microservices>
| Support for NFVO Inter-Service Communication | Supports for NFVO Inter-Service Communication
| Yes | |||||||||||||||||||||||||||
Support for SOL005 NBI API Handler | Preconditions:
Provides SOL005-compliant Restful Northbound APIs for SO/SOL005 Adapter (P1)
| Yes |
| |||||||||||||||||||||||||||
Create NS NBI |
Note: secure communication is handled by a separate user story, SO-3165. | Yes |
| |||||||||||||||||||||||||||
Instantiate NS NBI |
Note: secure communication is handled by a separate user story, SO-3165. | Yes |
| |||||||||||||||||||||||||||
Terminate NS NBI |
Note: secure communication is handled by a separate user story, SO-3165. | Yes |
| |||||||||||||||||||||||||||
Delete NS NBI |
Note: secure communication is handled by a separate user story, SO-3165. | Yes |
| |||||||||||||||||||||||||||
Support for secured communication of SOL005 NBI API Handler | Support for secured communication of SOL005 NBI API Handler | Yes |
| |||||||||||||||||||||||||||
Get NS Operation Status NBI |
Note: Instantiate NS and Terminate NS use the GET individual NS LCM operation occurrence Note: secure communication is handled by a separate user story, SO-3165. | No |
| |||||||||||||||||||||||||||
Support for SOL005 NBI Subscription APIs | Supports SOL005-compliant Restful Northbound Subscription and Notification APIs for SO/SOL005 Adapter
| No |
| |||||||||||||||||||||||||||
Create NS Subscription NBI |
| No |
| |||||||||||||||||||||||||||
Get NS Subscription NBI |
| No |
| |||||||||||||||||||||||||||
Delete NS Subscription NBI |
| No |
| |||||||||||||||||||||||||||
Send NS Notifications (As a Client) |
| No |
| |||||||||||||||||||||||||||
Support for secured communication of SOL005 NBI API Handler | Support for secured communication of SOL005 NBI API Handler
| Yes |
| |||||||||||||||||||||||||||
Support for NS LCM and Workflows Management | Supports NS LCM and Workflows in SO NFVO(P1)
| Yes |
| |||||||||||||||||||||||||||
Create NS LCM and Workflows | Supports the Create NS backend operations and workflows which do the following sequence: <Create NS: note: the following workflow is a template, and it can be enhanced as needed.>
| Yes |
| |||||||||||||||||||||||||||
Instantiate NS | Supports the Instantiate NS backend operations and workflows which do the following sequence: <Instantiate NS: note: the following workflow is a template, and it can be enhanced as needed.>
curl -X POST /api/parser/v1/parsernsd' \ -H 'Content-Type: application/json' \ --data-raw '{ "csarId": "csarid", "packageType": "ns", "inputs": "[]" }'
| Yes |
| |||||||||||||||||||||||||||
Terminate NS | Supports the Terminate NS backend operations and workflows which do the following sequence: <Terminate NS: note: the following workflow is a template, and it can be enhanced as needed.>
| No |
| |||||||||||||||||||||||||||
Delete NS | Supports the Delete NS backend operations and workflows which do the following sequence: <Delete NS: note: the following workflow is a template, and it can be enhanced as needed.>
| No |
| |||||||||||||||||||||||||||
Get NS Operation Status | Supports the Get NS Operation Status operation and workflows which do the following sequence: <Get NS Operation Status: note: the following workflow is a template, and it can be enhanced as needed.> Note: the following workflow is for illustration purpose. Since the operation sequence (sending a query to a database and get the NsLcmOpOcc data, the work flow is not necessary
| No |
| |||||||||||||||||||||||||||
Create NS Subscription | Supports the Create NS Subscription operation and workflows which do the following sequence: <Create NS Subscription: note: the following workflow is a template, and it can be enhanced as needed.>
| No |
| |||||||||||||||||||||||||||
Get NS Subscription | Supports the Get NS Subscription operation and workflows which do the following sequence: <Get NS Subscription: note: the following workflow is a template, and it can be enhanced as needed.>
| No |
| |||||||||||||||||||||||||||
Delete NS Subscription | Supports the Delete NS Subscription operation and workflows which do the following sequence: <Delete NS Subscription: note: the following workflow is a template, and it can be enhanced as needed.>
| No |
| |||||||||||||||||||||||||||
Send NS Notifications | Supports the Send NS Notification operation and workflows which do the following sequence: <Send NS Notification: note: the following workflow is a template, and it can be enhanced as needed.>
| No |
| |||||||||||||||||||||||||||
Support for Create VLs | Supports the Create VLs operation and workflows which do the following sequence:
| No |
| |||||||||||||||||||||||||||
Support for Delete VLs | Supports the Delete VLs operation and workflows which do the following sequence:
| No |
| |||||||||||||||||||||||||||
Support for Get VLs | Supports the Get VLs operation and workflows which do the following sequence:
| No |
| |||||||||||||||||||||||||||
Support for granting VNF (non OOF-based one) | Supports the granting VNF (non OOF-based one) operation and workflows which do the following sequence:
| No |
| |||||||||||||||||||||||||||
Support for NS Catalog DB Adapter |
| Yes |
| |||||||||||||||||||||||||||
Support for queries for VNF/PNF/NS package management |
| Yes |
| |||||||||||||||||||||||||||
Support for notification endpoint for ETSI Catalog Manager notification |
| No |
| |||||||||||||||||||||||||||
Support for NS Inventory (AAI) Adapter |
| No |
| |||||||||||||||||||||||||||
Support for NS AAI APIs (CRUD) |
| No |
| |||||||||||||||||||||||||||
Support for Network AAI APIs (CRUD) |
| No |
| |||||||||||||||||||||||||||
Support for VNF AAI APIs (CRUD) |
| No |
| |||||||||||||||||||||||||||
Support for Vserver AAI APIs (CRUD) |
| No |
| |||||||||||||||||||||||||||
Support for Customer AAI APIs (CRUD) |
| |||||||||||||||||||||||||||||
Support for NS LCM Database Management |
id = models.CharField(db_column='ID', primary_key=True, max_length=200)
nfinstid = models.CharField(db_column='NFINSTID', max_length=200, primary_key=True)
vlinstanceid = models.CharField(db_column='VLINSTANCEID', max_length=255, primary_key=True)
jobid = models.CharField(db_column='JOBID', primary_key=True, max_length=255)
request_id = models.CharField(db_column='REQUESTID', max_length=255)
subscription_id = models.CharField(db_column='SUBSCRIPTIONID', max_length=255, primary_key=True)
id = models.CharField(db_column='ID', max_length=255, primary_key=True)
pnfId = models.CharField(db_column='PNFID', primary_key=True, max_length=255)
service_id = models.CharField(db_column='serviceId', max_length=255, primary_key=True)
service_id = models.CharField(db_column='serviceId', max_length=255)
service_id = models.CharField(db_column='serviceId', max_length=255, primary_key=True) | Yes |
| |||||||||||||||||||||||||||
Support for MultiCloud Adapter |
| No |
| |||||||||||||||||||||||||||
Support for Create Network to VIM API |
| No |
| |||||||||||||||||||||||||||
Support for Delete Network (VL) from VIM API |
| No |
| |||||||||||||||||||||||||||
Package and dynamically deploy NS LCM Workflows with business logic | When ONAP SO support Dynamic BPMN, package and deploy NS LCM workflows with business logic as a WAR file.
| No |
| |||||||||||||||||||||||||||
Package and deploy default NS LCM workflows with business logic |
| No |
| |||||||||||||||||||||||||||
Support for UI and REST interfaces for custom workflow war deployment |
| No |
| |||||||||||||||||||||||||||
Support for NS Resource Infra Management (RIM) Manager |
| No |
| |||||||||||||||||||||||||||
Support for OOF-based Granting VNF |
| No |
| |||||||||||||||||||||||||||
Support for Software Image Management |
| No |
| |||||||||||||||||||||||||||
Enhance NFVO invocation sequences from UUI to SOL005 Adapter to make ONAP SO SOL005 compliant | SOL005 Adapter supports interfaces to/from ONAP SO NFVO
Note: assign to Verizon | No |
| |||||||||||||||||||||||||||
<task> | ||||||||||||||||||||||||||||||
remove ETSI Catalog Manager trigger from ONAP SO for package distribution | remove ETSI Catalog Manager trigger from ONAP SO for package distribution
| Yes |
| |||||||||||||||||||||||||||
Register ETSI NFVO in MSB | Register ETSI NFVO in MSB | Yes |
| |||||||||||||||||||||||||||
Create NFVO Database OOM Files | Create NFVO Database OOM Files | Yes |
| |||||||||||||||||||||||||||
Test SO NFVO on Java 11 with Camunda BPMN embedded engine | Test SO NFVO on Java 11 with Camunda BPMN embedded engine | Yes |
| |||||||||||||||||||||||||||
Add certificates to SO NFVO for secure communications (HTTPS) to SOL003 Adapter | Add certificates to SO NFVO for secure communications (HTTPS) to SOL003 Adapter | Yes |
| |||||||||||||||||||||||||||
<for Future Release> | ||||||||||||||||||||||||||||||
Support for Configuration Adapter (P2) |
| No |
| |||||||||||||||||||||||||||
Support for Policy Adapter (P2) |
| No |
| |||||||||||||||||||||||||||
Support for OOF Adapter (P1) |
| No |
| |||||||||||||||||||||||||||
Supports for Notification Manager (P2) |
| No | ||||||||||||||||||||||||||||
Support for FM/PM Event Adapter (P3) |
| No | ||||||||||||||||||||||||||||
Support for K8S client (P3) |
| No | ||||||||||||||||||||||||||||
ONAP SO NFVO Invocation Sequence
The following SOL005-based Operation sequence flow depicts the SO NFVO invocation architecture.
Create/Instantiate NS Sequences
The following diagram depicts the Create/Instantiate NS.
PlantUML Macro | ||
---|---|---|
| ||
@startuml
participant SO
participant SOL005_Adapter
participant SOL005_NBI
participant NS_LCMGR
participant RIM_Mgr
participant MultiCloud_Adapter
participant OOF
participant Catalog_DB_Adapter
participant ETSI_Catalog_Mgr
participant NFVO_NS_DB
participant Inventory_DB_Adapter
participant AAI
participant SOL003_Adapter
participant VIM
participant VNFM
autonumber
group Create NS
SO -> SOL005_Adapter : Create NS
SOL005_Adapter -> SOL005_NBI : Create NS
SOL005_NBI -> NS_LCMGR : Create NS
NS_LCMGR -> NFVO_NS_DB : Create NS instance in NS INST DB
NFVO_NS_DB -> NS_LCMGR : Response for Create NS instance record
NS_LCMGR -> Inventory_DB_Adapter : Create NS record
Inventory_DB_Adapter -> AAI : Create NS record
AAI --> AAI : Create NS record
AAI -> Inventory_DB_Adapter : Response for Create NS record
Inventory_DB_Adapter -> NS_LCMGR: Response for Create NS record
NS_LCMGR -> SOL005_NBI : Response for Create NS record
SOL005_NBI -> SOL005_Adapter : Response with NS Instance Id
SOL005_Adapter -> SO : Response with NsInstance\n(including NS Instance Id)
NS_LCMGR -> SOL005_NBI : Send\nNsIdentifierCreationNotification
SOL005_NBI -> SOL005_Adapter : Send\nNsIdentifierCreationNotification
SOL005_Adapter -> SO : Send\nNsIdentifierCreationNotification
end
group Instantiate NS
NS_LCMGR -> Catalog_DB_Adapter : Read NS descriptor
Catalog_DB_Adapter -> ETSI_Catalog_Mgr : Read NS descriptor
ETSI_Catalog_Mgr -> Catalog_DB_Adapter : Return NS descriptor
Catalog_DB_Adapter -> NS_LCMGR : Return NS descriptor
NS_LCMGR --> NS_LCMGR : Parse & Decompose NS descriptor
NS_LCMGR --> NS_LCMGR : Instantiate NS
NS_LCMGR --> NS_LCMGR : Instantiate VLs between VNFs
NS_LCMGR -> MultiCloud_Adapter : Create Network
MultiCloud_Adapter -> VIM : Create Network
VIM -> MultiCloud_Adapter : Response for Create Network
MultiCloud_Adapter -> NS_LCMGR : Response for Create Network
NS_LCMGR -> Inventory_DB_Adapter : Create VL record
Inventory_DB_Adapter -> AAI : Create VL record
AAI --> AAI : Create VL record
AAI -> Inventory_DB_Adapter : Response for Create VL record
Inventory_DB_Adapter -> NS_LCMGR : Response for Create VL record
NS_LCMGR -> RIM_Mgr : Request Homing Information\nfor Network Service
RIM_Mgr -> OOF : Requests Homing Information\nfor Network Service
OOF -> RIM_Mgr : Response with Homing Information\nfor Network Service
RIM_Mgr --> RIM_Mgr : Persist Homing Information\nfor Network Service
loop Go through each VNF
NS_LCMGR -> SOL003_Adapter : Request for Instantiate VNF
SOL003_Adapter -> VNFM : Request for Instantiate VNF
VNFM -> SOL003_Adapter : Request Grant VNF resource
SOL003_Adapter -> NS_LCMGR : Request Grant VNF resource
NS_LCMGR -> RIM_Mgr : Request Homing Information
RIM_Mgr -> NS_LCMGR : Return with Homing Information\nfor the VNF
NS_LCMGR --> NS_LCMGR : Make a Grant decision
NS_LCMGR -> SOL003_Adapter : Return with a Grant decision
SOL003_Adapter -> VNFM: Return with a Grant decision
VNFM --> VNFM : Instantiate VNF
VNFM -> SOL003_Adapter : Notify the changes\nof VNF/VDUs/CPs
SOL003_Adapter -> NS_LCMGR : Notify the changes\nof VNF/VUD/CPs
end
NS_LCMGR -> SOL005_NBI : Send\nnsLcmOperationOccurrenceNotification
SOL005_NBI -> SOL005_Adapter : Send\nnsLcmOperationOccurrenceNotification
SOL005_Adapter -> SO : Send\nnsLcmOperationOccurrenceNotification
end
@enduml |
CreateNS
- Register ONAP SO NFVO into AAI through ESR
- From VID/UUI, invoke the NS LCM
- CreateVFCNSResource.bpmn
- CreateVFCNSResource.groovy
- preProcessRequest()
- Select vfcAdapter/SOL005 Adapter
createNetworkService()
- Populate String reqBody ="""{ "nsServiceName":"${nsServiceName}",
"nsServiceDescription":"${nsServiceDescription}",
"nsServiceModelUUID":"${nsServiceModelUUID}",
"nsOperationKey":${nsOperationKey},
"nsParameters":{
"locationConstraints":${locationConstraints},
"additionalParamForNs":${requestInputs}
}
}""" - Send a request to vfcAdapter/SOL005 Adapter
- vfcAdapterUrl + "/ns/" with reqBody
- Populate String reqBody ="""{ "nsServiceName":"${nsServiceName}",
- preProcessRequest()
- CreateVFCNSResource.groovy
- SOL005Adapter
- createNS()
- Create createNsRequest data
- from the additionalParamForNS, get the NFVO orchestrator
- Query AAI to get a proper NFVO instance
- Prepare CreateNs request header
Map<String, String> requestHeader = new HashMap<>();
requestHeader.put("GLOBALCUSTOMERID", segInput.getNsOperationKey().getGlobalSubscriberId());
requestHeader.put("SERVICETYPE", segInput.getNsOperationKey().getServiceType());
- Send a CreateNS request to ONAP SO NFVO
- Get an nsInstanceId response from SOL005 Adapter
- Save resource operation information
- Add relation between Service and NS in AAI
InstantiateNS
- Register ONAP SO NFVO into AAI through ESR
- From VID/UUI, invoke the NS LCM
- CreateVFCNSResource.bpmn
- CreateVFCNSResource.groovy
- preProcessRequest()
- Select vfcAdapter/SOL005 Adapter
instantiateNetworkService()
Populate String reqBody ="""{
"nsServiceName":"${nsServiceName}",
"nsServiceDescription":"${nsServiceDescription}",
"nsOperationKey":${nsOperationKey},
"nsParameters":${nsParameters}
}"""Send a request to vfcAdapter/SOL005 Adapter
- vfcAdapterUrl + "/ns/" + nsInstanceId + "/instantiate" with reqBody
- preProcessRequest()
- CreateVFCNSResource.groovy
- SOL005Adapter
- instantiateNS()
- Create instantiateNsRequest data
- set VnfLocationConstraint if any
- set additionalParamsForNs
- from the additionalParamForNS, get the NFVO orchestrator
- Query AAI to get a proper NFVO instance
- Prepare CreateNs request header
Map<String, String> requestHeader = new HashMap<>();
requestHeader.put("GLOBALCUSTOMERID", segInput.getNsOperationKey().getGlobalSubscriberId());
requestHeader.put("SERVICETYPE", segInput.getNsOperationKey().getServiceType());
- Send a instantiateNS request to ONAP SO NFVO
- Create instantiateNsRequest data
- Get an response status from SOL005 Adapter
- if 202 successful, get an Job id
- Save resource operation information
- Add relation between Service and NS in AAI
- Get an response status from SOL005 Adapter
Terminate/Delete NS Sequences
The following diagram depicts the Terminate / Delete NS.
PlantUML Macro | ||
---|---|---|
| ||
@startuml
participant SO
participant SOL005_Adapter
participant SOL005_NBI
participant NS_LCMGR
participant RIM_Mgr
participant MultiCloud_Adapter
participant OOF
participant Catalog_DB_Adapter
participant ETSI_Catalog_Mgr
participant Inventory_DB_Adapter
participant AAI
participant SOL003_Adapter
participant VIM
participant VNFM
autonumber
group Terminate NS
SO -> SOL005_Adapter : Terminate NS
SOL005_Adapter -> SOL005_NBI : Terminate NS
SOL005_NBI -> NS_LCMGR : Terminate NS
NS_LCMGR -> Inventory_DB_Adapter : Query all instances related to NS
Inventory_DB_Adapter -> AAI : Query all instances related to NS
AAI -> Inventory_DB_Adapter : Return all instances for NS
Inventory_DB_Adapter -> NS_LCMGR : Return all instances for NS
NS_LCMGR --> NS_LCMGR : Start Delete NS instances
NS_LCMGR -> RIM_Mgr : Request Homing Information\nfor Network Service
RIM_Mgr -> OOF : Requests Homing Information\nfor Network Service
OOF -> RIM_Mgr : Response with Homing Information\nfor Network Service
RIM_Mgr --> RIM_Mgr : Persist Homing Information\nfor Network Service
loop Go thru each VNF
NS_LCMGR -> SOL003_Adapter : Delete VNF
SOL003_Adapter -> VNFM : Delete VNF
VNFM -> SOL003_Adapter : Request Grant resource for deletion
SOL003_Adapter -> NS_LCMGR : Request Grant resource for deletion
VNFM -> SOL003_Adapter : Request Grant VNF resource
SOL003_Adapter -> NS_LCMGR : Request Grant VNF resource
NS_LCMGR -> RIM_Mgr : Request Homing Information
RIM_Mgr -> OOF : Request Homing Information
OOF -> RIM_Mgr : Return with Homing Information\nfor the VNF
RIM_Mgr -> NS_LCMGR : Return with Homing Information\nfor the VNF
NS_LCMGR --> NS_LCMGR : Make a Grant decision
NS_LCMGR -> SOL003_Adapter : Return with a Grant decision
SOL003_Adapter -> VNFM: Return with a Grant decision
VNFM --> VNFM : Delete Resources
VNFM -> SOL003_Adapter : Notify changes of VNF/VDUs/CPs
SOL003_Adapter -> NS_LCMGR : Notify changes of VNF/VDUs/CPs
NS_LCMGR -> Inventory_DB_Adapter : Update records for Delete VNF/VDUs/CPs
Inventory_DB_Adapter -> AAI : Update records for Delete VNF/VDUs/CPs
AAI --> AAI : Update records for Delete VNF/VDUs/CPs
AAI -> Inventory_DB_Adapter : Return with Delete VNF/VDUs/CPs
Inventory_DB_Adapter -> NS_LCMGR : Return with Delete VNF/VDUs/CPs
end
NS_LCMGR -> MultiCloud_Adapter : Request for Delete VLs (if needed)
MultiCloud_Adapter -> VIM : Request for Delete VLs
VIM --> VIM : Delete VLs
NS_LCMGR -> Inventory_DB_Adapter : Update records for Delete VLs
Inventory_DB_Adapter -> AAI : Update records for Delete VLs
AAI --> AAI : Update records for Delete VLs
AAI -> Inventory_DB_Adapter : Return with Delete VLs
Inventory_DB_Adapter -> NS_LCMGR : Return with Delete VLs
NS_LCMGR -> SOL005_NBI : Send\nnsLcmOperationOccurrenceNotification
SOL005_NBI -> SOL005_Adapter : Send\nnsLcmOperationOccurrenceNotification
SOL005_Adapter -> SO : Send\nnsLcmOperationOccurrenceNotification
end
@enduml |
Terminate and Delete NS
- Register ONAP SO NFVO into AAI through ESR
- From VID/UUI, invoke the NS LCM
- DeleteVFCNSResource.bpmn
- DeleteVFCNSResource.groovy
- preProcessRequest()
- DoDeleteVFCNetworkServiceInstance.groovy
- preProcessRequest()
- Select vfcAdapter/SOL005 Adapter
String nsOperationKey = """{
"globalSubscriberId":"${globalSubscriberId}",
"serviceType":"${serviceType}",
"serviceId":"${serviceId}",
"operationId":"${operationId}",
"nodeTemplateUUID":"${nodeTemplateUUID}"
}"""
- deleteNSRelationship()
- delete relation between service and resource from AAI
- terminateNetworkService()
- POST vfcAdapterUrl + "/ns/" + nsInstanceId + "/terminate" with nsOperationKey
- preProcessRequest()
- DoDeleteVFCNetworkServiceInstance.groovy
- preProcessRequest()
- Select vfcAdapter/SOL005 Adapter
- String nsOperationKey = """{
"globalSubscriberId":"${globalSubscriberId}",
"serviceType":"${serviceType}",
"serviceId":"${serviceId}",
"operationId":"${operationId}",
"nodeTemplateUUID":"${nodeTemplateUUID}"
}"""
deleteNetworkService()
Send a request to vfcAdapter/SOL005 Adapter
- DELETE vfcAdapterUrl + "/ns/" with nsInstanceId
- preProcessRequest()
- DeleteVFCNSResource.groovy
- SOL005Adapter
- terminateNS()
- Send a terminateNS request to ONAP SO NFVO, with reqBody (terminationTime)
- add operation status to database
- deleteNS()
- Send a deleteNS request to ONAP SO NFVO
- add operation status to database
- deleteNS()
Gaps and Issues
CreateNsRequest
For the Create NS, the CreateNsRequest is sent to SO NFVO.
- nsdId
- nsName
- nsDescription
Also, the current SOL005 Adapter passes the following attributes through HTTP header. This is a workaround, not part of ETSI specification. Maybe, ETSI SOL005 specification needs to be enhanced to allow additional parameters?
- GLOBALCUSTOMERID
- SERVICETYPE
InstantiateNsRequest
For the Instantiate NS, the InstantiateNsRequest is sent to SO NFVO. As part of the InstantiateNsRequest, additionalParamsForNs is passed, but additionalParamsForVnf is NOT passed from the SOL005 Adapter to NFVO. According to ETSI SOL005 specification, multiple additionalParamsForVnf (data type: ParamsForVnf) can be passed. It seems that currently the additionalParams for VNF is constructed based on the vnf properties in NSD.
====================================================================================================================================================================================
Additional Info
ONAP SO NFVO Architecture & Functions
The following diagram depicts the NFVO component architecture
Gliffy Diagram macroId 6eb369b2-795b-470e-91dd-44f9424a19f2 name ONAP NFVO component architecture pagePin 25
NFVO Microservice Plugin Framework - high priority
- Provides the NFVO function Microservice plugin framework for supporting service registration, discovery and routing by configuration.
- Note: we are not building the Microservice service registration, aggregation, discovery and routing engine itself, but we are leveraging the engine's capability (e.g., MSB, API Fabric, Kong, or Kubernetes & service discovery) to offer configuration of NFVO Microservice components access.
- Default function plugins support (following default plugins will be registered to the Framework; routing will be configured):
- SOL005 NBI (API Handler)
- NS LCM Manager
- ETSI Catalog DB Adapter (for ETSI Catalog Manager)
- Camunda Workflow Engine
- NS Workflows and Logic
- Resource Infra Management (RIM) Manager
- Configuration Adapter
- MultiCloud Adapter
- Inventory DB Adapter
- Notification Manager
- FM/PM Event Adapter (for DCAE)
- K8S Adapter
- Substitution of existing function plugins
- Registration of a new substitution Microservice with version control (leverage a mechanism like AAI ESR/MSR/API Fabric/MSB/Kubernetes/Kong - TBD)
- Plug-in a substitution Microservice
- Dynamic dispatching/launching a new plugin instance based on configuration/policy
- Extension of existing function plugins
- Default function plugin extension with version control
- Dynamic dispatching/launching an extended plugin instance based on configuration/policy
SOL005 NBI (API Handler)- high priority
- Provides SOL005-compliant Restful Northbound APIs for SO/SOL005 Adapter
- Supports NS Lifecycle Management (LCM) APIs
- Create NS (POST “/api/nslcm/v1/ns_instances”)
- Instantiate NS (POST “/api/nslcm/v1/ns_instances/{nsInstanceId}/instantiate”)
- Terminate NS (“/api/nslcm/v1/ns_instances/{nsInstanceId}/terminate”)
- Delete NS (DELETE “/api/nslcm/v1/ns_instances/{nsInstanceId}”)
Scale NS (POST “/api/nslcm/v1/ns_instances/{nsInstanceId}/scale”) – stretch goalHeal NS (“POST ”/api/nslcm/v1/ns_instances/{nsInstanceId}/heal”) – stretch goal- Query NS (GET “/api/nslcm/v1/ns_instances”, “/api/nslcm/v1/ns_instances/{nsInstanceId}”)
- Subscription (POST ”/subscriptions”)
- Notification (SO SOL005 Adapter client-provided; POST notification based on the callbackUrl from the subscription)
- Support NS Fault Management API (stretch goal)
Support NS Performance Management APIs (stretch goal)
- Leverages SOL005 Swagger Files
- https://forge.etsi.org/jenkins/view/All+jobs/job/NFV+-+Network+Functions+Virtualisation/job/sol005-master/
- Provides interfaces with DCAE and Policy for Close Loop Automation
- This API Handler focuses on the SOL005 APIs, and its business logic is supplied by the NS LCM Microservice
- Supports NS Lifecycle Management (LCM) APIs
NS Workflows & Business Logic - high priority
- Provides Workflow engines (stand-alone/clustered Camunda engine) for the NS workflow management
- Supports Stand-Alone/clustered Camunda engine(s) deployment
Allows hot deployment of custom workflow packages while ONAP NFVO is running
- Provides NS workflows
- Provides default NS workflows (part of ONAP NFVO deployment)
- CreateNS bpmn files with business logic
- InstantiateNS bpmn files with business logic
- TerminateNS bpmn files with business logic
- DeleteNS bpmn files with business logic
- Allows custom NS workflows deployment (Hot deployment)
- The Operators build their own workflows and business logic as war files
- The Operators drop off custom workflows war files into the Camunda deployment directory
- UI for the custom workflow war deployment would be supported
- Provides default NS workflows (part of ONAP NFVO deployment)
ETSI Package Onboarding for NFVO - enhancements of current capabilities
- ONAP NFVO leverages the ETSI Catalog Manager as the run-time Catalog Database service provider.
- ETSI NS/VNF/PNF Packages are onboarded and distributed from SDC à ETSI Catalog Manager (note: this is NOT part of NFVO; it is a separate effort)
- ONAP NFVO queries ETSI NS/VNF/PNF Packages from the ETSI Catalog Manager
NS LCM Database - high priority
- Use the VFC NS LCM database
SOL003 Adapter for SVNFMs - leveraging existing capabilities
- Provides SOL003-compliant (Or-Vnfm) Southbound APIs towards SVNFMs
- Supports VNF Lifecycle Management (LCM)
- Create VNF
- Instantiate VNF
- Terminate VNF
- Delete VNF
- Scale VNF
- Heal VNF
- Query VNF
- ModifyInfo VNF
- Subscription
- Notification
- Granting with HPA
- It is a Microservice and part of ONAP SO NFVO
- It is launched by NS Workflows for VNF LCM
- It locates the VNFM instance by leveraging AAI ESR
- Supports VNF Lifecycle Management (LCM)
Resource Infra Management (RIM) Manager - high priority
- Provides Resource Granting Information through OOF (Policy, MultiCloud, A&AI)
- Supports interfaces with OOF to collect Granting information
Collects Homing information from OOF and provides the information to other NFVO components
- Supports Or-Vi Interfaces that provided by VIM, Infrastructure Manager, VIM or CaaS manager (note: for Guilin, many of them would be stretch goals)
- Software Image Management (P1)
Container Image Management (P2)
- Virtualized Resources Information Management (P2)
Virtualized Resources Capacity Management (P2)
- Virtualized Resources Management (P2)
Virtualized Resources Change Management (P2)
- Virtualized Resources Reservation Management (P2)
Virtualized Resource Quota Management (P2)
- Virtualized Resource Performance Management (P2)
Virtualized Resource Fault Management (P2)
- Network Forwarding Path (NFP) Management (P2)
Notification Adapter (not for Guilin)
- Supports general-purpose notification services to its clients such as ONAP SO or SOL005 compliant clients
- TBD
FM/PM Event Adapter (not for Guilin)
TBD
ONAP SO, SOL005 Adapter and NFVO Interaction
Descriptions | |
---|---|
Existing SO E2E Business Logic for VFC/SOL005 Adapter |
|
New ONAP SO NFVO Path |
|
ONAP SO Refactoring for NFVO Function Extraction
Note: to analyze the following further (extracting NS-related operations)
ONAP SO | NFVO |
---|---|
Asdc-controller (scope: Service, NS, VNF, VF-Module) | Asdc-controller for NS, leveraging ETSI Catalog Manager |
API Handler | SOL005 API Handler |
BPMN Infra (scope: Service, NS, VNF, VF-Module) including Workflows with embedded Camunda Workflow engine | NS LCM + Default NS Workflows (with business logic) + Custom NS Workflows (with business logic) Stand-Alone/Clustered Camunda Workflow Engine |
VFC / SOL005 Adapter | Not Applicable |
SOL003 Adapter in SO | SOL003 Adapter in NFVO (move its home) |
Catalog DB Adapter | Leverage ETSI Catalog Manager |
Request DB Adapter (scope: service, NS, VNF, VF-Module) | Request DB Adapter for NS scope |
APPC Orchestrator | Configuration Manager Client |
ve-vnfm-adapter (SOL002 Adapter) | TBD |
sdnc-adapter | TBD |
nssmf-adapter | TBD |
Openstack adapter / MultiCloud adapter | Resource Infra Management (RIM) Manager |
VNF Adapter | Not Applicable (SOL003 Adapter delegates VNF operations to SVNFM) |
K8S Client (PoC) | K8S Adapter |
SO-monitoring | SO-monitoring for NS and VNF |
Common (beans and utils common for all the projects) | Leverage Common as needed |
Close Loop Handling | FM/PM Event Adapter |
Communication Security
- ONAP SO NFVO NBI supports HTTPs and Authentication/Authorization towards SO/SOL005 Adapter.
- ONAP SO NFVO SBI (through SOL003 Adapter) supports HTTPs and Authentication/Authorization towards SVNFMs.
- TBD
Create / Instantiate NS
The following diagram depicts the Create/Instantiate NS.
PlantUML Macro | ||
---|---|---|
| ||
@startuml
participant SO
participant SOL005_Adapter
participant SOL005_NBI
participant NS_LCMGR
participant RIM_Mgr
participant MultiCloud_Adapter
participant OOF
participant Catalog_DB_Adapter
participant ETSI_Catalog_Mgr
participant Inventory_DB_Adapter
participant AAI
participant SOL003_Adapter
participant VIM
participant VNFM
autonumber
group Create NS
SO -> SOL005_Adapter : Create NS
SOL005_Adapter -> SOL005_NBI : Create NS
SOL005_NBI -> NS_LCMGR : Create NS
NS_LCMGR -> Inventory_DB_Adapter : Create NS record
Inventory_DB_Adapter -> AAI : Create NS record
AAI --> AAI : Create NS record
AAI -> Inventory_DB_Adapter : Response for Create NS record
Inventory_DB_Adapter -> NS_LCMGR: Response for Create NS record
NS_LCMGR -> SOL005_NBI : Response for Create NS record
SOL005_NBI -> SOL005_Adapter : Response with NS Instance Id
SOL005_Adapter -> SO : Response with NsInstance\n(including NS Instance Id)
NS_LCMGR -> SOL005_NBI : Send\nNsIdentifierCreationNotification
SOL005_NBI -> SOL005_Adapter : Send\nNsIdentifierCreationNotification
SOL005_Adapter -> SO : Send\nNsIdentifierCreationNotification
end
group Instantiate NS
NS_LCMGR -> Catalog_DB_Adapter : Read NS descriptor
Catalog_DB_Adapter -> ETSI_Catalog_Mgr : Read NS descriptor
ETSI_Catalog_Mgr -> Catalog_DB_Adapter : Return NS descriptor
Catalog_DB_Adapter -> NS_LCMGR : Return NS descriptor
NS_LCMGR --> NS_LCMGR : Parse & Decompose NS descriptor
NS_LCMGR --> NS_LCMGR : Instantiate NS
NS_LCMGR --> NS_LCMGR : Instantiate VLs between VNFs
NS_LCMGR -> MultiCloud_Adapter : Create Network
MultiCloud_Adapter -> VIM : Create Network
VIM -> MultiCloud_Adapter : Response for Create Network
MultiCloud_Adapter -> NS_LCMGR : Response for Create Network
NS_LCMGR -> Inventory_DB_Adapter : Create VL record
Inventory_DB_Adapter -> AAI : Create VL record
AAI --> AAI : Create VL record
AAI -> Inventory_DB_Adapter : Response for Create VL record
Inventory_DB_Adapter -> NS_LCMGR : Response for Create VL record
NS_LCMGR -> RIM_Mgr : Request Homing Information\nfor Network Service
RIM_Mgr -> OOF : Requests Homing Information\nfor Network Service
OOF -> RIM_MGR : Response with Homing Information\nfor Network Service
RIM_Mgr --> RIM_Mgr : Persist Homing Information\nfor Network Service
loop Go through each VNF
NS_LCMGR -> SOL003_Adapter : Request for Instantiate VNF
SOL003_Adapter -> VNFM : Request for Instantiate VNF
VNFM -> SOL003_Adapter : Request Grant VNF resource
SOL003_Adapter -> NS_LCMGR : Request Grant VNF resource
NS_LCMGR -> RIM_Mgr : Request Homing Information
RIM_Mgr -> NS_LCMGR : Return with Homing Information\nfor the VNF
NS_LCMGR --> NS_LCMGR : Make a Grant decision
NS_LCMGR -> SOL003_Adapter : Return with a Grant decision
SOL003_Adapter -> VNFM: Return with a Grant decision
VNFM --> VNFM : Instantiate VNF
VNFM -> SOL003_Adapter : Notify the changes\nof VNF/VDUs/CPs
SOL003_Adapter -> NS_LCMGR : Notify the changes\nof VNF/VUD/CPs
end
NS_LCMGR -> SOL005_NBI : Send\nnsLcmOperationOccurrenceNotification
SOL005_NBI -> SOL005_Adapter : Send\nnsLcmOperationOccurrenceNotification
SOL005_Adapter -> SO : Send\nnsLcmOperationOccurrenceNotification
end
@enduml |
Create NS
Request
CreateNsRequest
- nsdId
- nsName
- nsDescription
Response
NsInstance
- see NsInstance from ETSI GS NFV-SOL 005 v2.7.1
NS LCM Manager Design
VFC design
get nsdId, nsName and nsDescription, context (globalCustomerId, serivceType) parameters
- get a ns package by the given nsdId from ETSI Catalog Manager
- check if ns instance exists from the NFVO_NSINST database table
- if it exists, log it exists
- create an ns instance id (uuid) and store it with other nsd info, status (NOT_INSTANTIATED) to NFVO_NSINST database table
- create an ns instance record (service-instance-id, service-instance-name, service-type, service-role) in AAI
- get nsInstance from GetNSInfoService
- return 201 Created with the NsInstance
- Send NsIdentifierCreationNotification
Proposal
The following diagram depicts the Create NS procedure.
Instantiate NS
Request
InstantiateRequest
Response
201 Accepted
NsLcmOperationOccurrenceNotification (Start/Processing/Completed)
NS LCM Manager Design
VFC Design
- Get an ns instance id from the parameter
- create a job for the ns instance id
- create an occ id for the ns instance id
- Update the ns instance id row of the NFVO_NSINST database table for status (= INSTANTIATING)
- get a ns instance data from the NFVO_NSINST for the ns instance id
- get and store additional Parameters for NS
- get an VIM id from the cloud owner and cloud region parameters
- get an VNF VIM from he location constraints
- set the job status with 'Start Query NSD'
- get and parse a nsd for the ns package id
- modify nsd state
- get VNF list from the nsd
- for each VNF,
- get vnfd_id, vnfm_type, vimId, s_vimId (with "cloud_owner"_"cloud_regionid")
- select VNFM by leveraging AAI ESR
- store VNF pararms in collection, with vnf info including vnfmInstanceId
- set vl vim id
- for each VNF
- if VNF has dependencies, for each dependency
- add VNF properties and id into vl_vnf array
- if VNF has dependencies, for each dependency
- for each VLs
- get vnfdId and vimId
- add vimId into VL array
- for each VNF
- update NFVO_NSINST with the nsd model
- get PNF parameters
- get VNF parameters (from VNF params above)
- set up Plan Input with job_id, ns_inst_id, tosca plan, additional NS params, VNF params, PNF params)
- start workflows with the job_id, ns_inst, plan_input, occ_id)
- get service template id from ETSI Catalog Manager
- get process id from ETSI Catalog Manager
- workflow run with data (process id, params = plan input)
- createVL
- createVNF
- createSFC (Service Function Chain)
Proposal
The following diagram depicts the Instantiate NS.
Terminate / Delete NS
The following diagram depicts the Terminate / Delete NS.
PlantUML Macro | ||
---|---|---|
| ||
@startuml
participant SO
participant SOL005_Adapter
participant SOL005_NBI
participant NS_LCMGR
participant RIM_Mgr
participant MultiCloud_Adapter
participant OOF
participant Catalog_DB_Adapter
participant ETSI_Catalog_Mgr
participant Inventory_DB_Adapter
participant AAI
participant SOL003_Adapter
participant VIM
participant VNFM
autonumber
group Terminate NS
SO -> SOL005_Adapter : Terminate NS
SOL005_Adapter -> SOL005_NBI : Terminate NS
SOL005_NBI -> NS_LCMGR : Terminate NS
NS_LCMGR -> Inventory_DB_Adapter : Query all instances related to NS
Inventory_DB_Adapter -> AAI : Query all instances related to NS
AAI -> Inventory_DB_Adapter : Return all instances for NS
Inventory_DB_Adapter -> NS_LCMGR : Return all instances for NS
NS_LCMGR --> NS_LCMGR : Start Delete NS instances
NS_LCMGR -> RIM_Mgr : Request Homing Information\nfor Network Service
RIM_Mgr -> OOF : Requests Homing Information\nfor Network Service
OOF -> RIM_Mgr : Response with Homing Information\nfor Network Service
RIM_Mgr --> RIM_Mgr : Persist Homing Information\nfor Network Service
loop Go thru each VNF
NS_LCMGR -> SOL003_Adapter : Delete VNF
SOL003_Adapter -> VNFM : Delete VNF
VNFM -> SOL003_Adapter : Request Grant resource for deletion
SOL003_Adapter -> NS_LCMGR : Request Grant resource for deletion
VNFM -> SOL003_Adapter : Request Grant VNF resource
SOL003_Adapter -> NS_LCMGR : Request Grant VNF resource
NS_LCMGR -> RIM_Mgr : Request Homing Information
RIM_Mgr -> OOF : Request Homing Information
OOF -> RIM_Mgr : Return with Homing Information\nfor the VNF
RIM_Mgr -> NS_LCMGR : Return with Homing Information\nfor the VNF
NS_LCMGR --> NS_LCMGR : Make a Grant decision
NS_LCMGR -> SOL003_Adapter : Return with a Grant decision
SOL003_Adapter -> VNFM: Return with a Grant decision
VNFM --> VNFM : Delete Resources
VNFM -> SOL003_Adapter : Notify changes of VNF/VDUs/CPs
SOL003_Adapter -> NS_LCMGR : Notify changes of VNF/VDUs/CPs
NS_LCMGR -> Inventory_DB_Adapter : Update records for Delete VNF/VDUs/CPs
Inventory_DB_Adapter -> AAI : Update records for Delete VNF/VDUs/CPs
AAI --> AAI : Update records for Delete VNF/VDUs/CPs
AAI -> Inventory_DB_Adapter : Return with Delete VNF/VDUs/CPs
Inventory_DB_Adapter -> NS_LCMGR : Return with Delete VNF/VDUs/CPs
end
NS_LCMGR -> MultiCloud_Adapter : Request for Delete VLs (if needed)
MultiCloud_Adapter -> VIM : Request for Delete VLs
VIM --> VIM : Delete VLs
NS_LCMGR -> Inventory_DB_Adapter : Update records for Delete VLs
Inventory_DB_Adapter -> AAI : Update records for Delete VLs
AAI --> AAI : Update records for Delete VLs
AAI -> Inventory_DB_Adapter : Return with Delete VLs
Inventory_DB_Adapter -> NS_LCMGR : Return with Delete VLs
NS_LCMGR -> SOL005_NBI : Send\nnsLcmOperationOccurrenceNotification
SOL005_NBI -> SOL005_Adapter : Send\nnsLcmOperationOccurrenceNotification
SOL005_Adapter -> SO : Send\nnsLcmOperationOccurrenceNotification
end
@enduml |
Terminate NS
Request
TerminateNsRequest
- terminateTime
Response
201 Accepted
NsLcmOperationOccurrenceNotification (Start/Processing/Completed)
NS LCM Manager Design
VFC Design
- Get an ns_inst_d, job_id and request_data from the parameters
- if there no matching ns_inst_id from the NFVO_NSINT database table, consider there is nothing to terminate, and return
- set job status as "Starting terminate..."
- update the ns_inst_id row from the NFVO_NSINST database table with the status = TERMINATING
- cancel SFC list
- get sfc inst array
- for each sfc inst
- DELETE /api/nslcm/v1/ns/sfcs/{instId}
- cancel VNF list
- get vnf inst list array from NFVO_NFINST
- for each vnf inst
- delete_vnf (nf_instid)
- POST /api/nslcm/v1/ns/terminateVnf/{instId}
- delete_vnf (nf_instid)
- for each vnf inst
- get vnf inst list array from NFVO_NFINST
- cancel VL list
- get VL Inst array
- for each VL inst
- DELETE /api/nslcm/v1/ns/vls/{instId}
- cancel PNF list
- get pnf inst array
- for each pnf inst
- DELETE /api/nslcm/v1/pnfs/{instId}
- modify the ns_inst_id row state from the NFVO_NSINST database table
- modify NFVO_NSINST status = NOT_INSTANTIATED
- set job status = NS terminate ends
- Update NsLcmOpOCC to COMPLETED
- Send nsLcmOperationOccurrenceNotification
Proposal
The following diagram depicts the Terminate NS.
Delete NS
Request
- No; just parameter nsInstanceId
Response
- 204 No Content
Notification
- Send NsIdentifierDeletionNotification
NS LCM Manager Design
VFC_Design
- get ns_inst_id
- delete ns instance in AAI
- get ns_instances from NFVO_NSINST database table
- invoke delete_ns_aai with global_customer_id, service_type, ns_inst_id, resource_version
- formulate the resource url with parameters
- call_aaI (resource, "DELETE")
- delete ns_inst_id row from the NFVO_NSINST database table
- delete ns_inst_id row from the NFVO_INPutParamMapping database table
- delete ns_inst_id row from the DefPkgMapping database table
- delete ns_inst_id row from the ServiceBaseInfo database table
- return 204 No Content
- Send NsIdentifierDeletionNotification
Proposal
The following diagram depicts the Delete NS.
Subscription NS
PlantUML Macro | ||
---|---|---|
| ||
@startuml
participant SO
participant SOL005_Adapter
participant SOL005_NBI
participant NS_LCMGR
autonumber
group Create Subscription NS
SO -> SOL005_Adapter : Create Subscription NS
SOL005_Adapter -> SOL005_NBI : Create Subscription NS
SOL005_NBI -> NS_LCMGR : Create Subscription NS
NS_LCMGR --> NS_LCMGR : Check Subscription Filter
NS_LCMGR -> NS_LCMGR : Test subscription\nnotification (callbackUrl) endpoint
NS_LCMGR --> NS_LCMGR : Save Subscription to Database
NS_LCMGR -> SOL005_NBI : Response with LccnSubscription
end
group Delete Subscription NS
SO -> SOL005_Adapter : Delete Subscription NS
SOL005_Adapter -> SOL005_NBI : Delete Subscription NS
SOL005_NBI -> NS_LCMGR : Delete Subscription NS
NS_LCMGR --> NS_LCMGR : Delete Subscription NS
NS_LCMGR -> SOL005_NBI : Response with 204 No Content
SOL005_NBI -> SOL005_Adapter : Response for Delete Subscription NS
SOL005_Adapter -> SO : Response for Delete Subscription NS
end
@enduml |
Subscription NS
Request
- LccnSubscriptionRequest
- subscriptionId. for GET and DELETE
Response
- 204 No Content
- 201 Created (LccnSubscription)
- 200 OK (LccnSubscription[])
- 200 OK (LccnSubscription)
Subscription Filter Request
The following table describes the Subscription filter request.
attribute name | data type | cardinality | description |
---|---|---|---|
nsdIds | Identifier | 0..N | If present, match NS instances that were created based on an NSD identified by one of the nsdId values listed in this attribute. See note 1. |
vnfdIds | Identifier | 0..N | If present, match NS instances that contain VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. See note 1. |
pnfdIds | Identifier | 0..N | If present, match NS instances that contain PNFs that are represented by a PNFD identified by one of the pnfdId values listed in this attribute. See note 1. |
nsInstanceId | Identifier | 0..N | If present, match NS instances with an instance identifier listed in this attribute. See note 2. |
nsInstanceNames | String | 0..N | If present, match NS instances with an NS Instance Name listed in this attribute. See note 2. |
NOTE 1: The attributes "nsdIds", "vnfdIds" and "pnfdIds" are alternatives to reference to NS instances that are created based on certain NSDs, or contain VNF instances that are based on certain VNFDs, or contain PNFs that are based on certain PNFDs in a filter. They should not be used together in the same filter instance, but one alternative should be chosen. NOTE 2: The attributes "nsInstanceIds" and "nsInstanceNames" are alternatives to reference to particular NS Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen. |
NS LCM Manager Design
VFC Design
- create subscription id
- check callback Uri
- check filter types
- save subscription request to database
- return response with subscription
Proposal
The following diagram depicts the Subscription NS.
Table of Contents
Table of Contents |
---|
ETSI Standard Conformation
This proposal conforms to the following ETSI v2.7.1 specifications.
- SOL005: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/02.07.01_60/gs_NFV-SOL005v020701p.pdf
- SOL003: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/02.07.01_60/gs_NFV-SOL003v020701p.pdf
- SOL002: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/002/02.07.01_60/gs_NFV-SOL002v020701p.pdf
- SOL004: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/004/02.07.01_60/gs_NFV-SOL004v020701p.pdf
- SOL007: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/007/02.07.01_60/gs_NFV-SOL007v020701p.pdf
- SOL001: https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/001/02.07.01_60/gs_NFV-SOL001v020701p.pdf
Resource commitment:
- Ericsson: primary contact Byung-Woo Jun
- CMCC: primary contact Yan Yang, Yuanhong Deng
- Verizon: primary contact user-827d7
- Samsung: primary contact Miroslaw Medrek
Requirement:
- Ericsson: primary contact Byung-Woo Jun
- CMCC: primary contact Yan Yang, Yuanhong Deng
- Verizon: primary contact user-827d7
- Samsung: primary contact Miroslaw Medrek
- Huawei: primary contact Seshu Kumar Mudiganti
ONAP SO Hierarchical Orchestration Architecture
Rationale & Benefits
Rationale
Many operators have their own ETSI-compliant NFVOs, and there is a strong desire for us to have both ETSI- and ONAP-compliant NFVO. So, we propose the ONAP SO NFVO "platform", which is based on ONAP and leveraging modular and extensible plugin-based microservice API management, such as an enhanced MSB, Gravitee, Kong or Kubernetes. Once we build this NFVO platform in ONAP, operators including us can focus on the proprietary development of truly differentiating value-added capabilities on top of the NFVO platform. We believe this approach provides cost saving over implementation of proprietary code, both for initial development, ongoing standardization support and enhancements.
Note: VFC would be still a valid NFVO reference implementation. And, we want to have this NFVO platform which provides modular and extensible capabilities.
Benefits
- Boosts industry compatibility by leveraging ETSI compliant models, interfaces and package management
- Provides pluggable NFVO functional blocks that are modular and extensible
- Enables Operators to focus on the proprietary development of truly differentiating value-added capabilities on top of ONAP SO NFVO
- Provides cost saving over implementation in proprietary code, both for initial development, ongoing standardization support and enhancements
Hierarchical Orchestration Architecture
The following diagram depicts ONAP SO hierarchical orchestration architecture.
Gliffy Diagram name ONAP SO ETSI Hierarchical Orchestration pagePin 25
ONAP SO NFVO Function Overlap View in ETSI MANO
- The following diagram depicts the SO NFVO position in ETSI MANO.
NSD Structure that is supported by NS LCM
- The following diagram depicts the NSD structure that NS LCM supports.
- VNF-FG is out of scope from Guilin.
ONAP SO NFVO Architecture & Functions
Target Component Diagram (Not all will be implemented in Guilin)
The following diagram depicts the NFVO component architecture
- NFVO Microservice Plugin Platform provides Microservice registration, discovery and routing.
- Microservice registration will be performed by configuration.
Note:
- we are not building the Microservice service registration, aggregation, discovery and routing engine itself, but we are leveraging the engine's capability (e.g., MSB, API Fabric, Kong, or Kubernetes & service discovery) to offer configuration of NFVO Microservice components access. So, the NFVO Microservice Plugin Platform is the engine + NFVO component configuration.
- If dynamic BPMN deployment is not available in Guilin, it is possible the NS Workflows embed Camunda Engine for Guilin, as a Microservice.
- In the dynamic BPMN deployment case, the NS Workflows would be a WAR file, containing NS BPMNs + Business Logic, and deployed into Camunda Engine.
Gliffy Diagram macroId 6eb369b2-795b-470e-91dd-44f9424a19f2 name ONAP NFVO component architecture pagePin 25
SO NFVO Sub-Components
- SOL005 NBI Handler
- NS LCM Manager
- NS Workflows & Business Logic
- Shared Camunda Engine
- RIM (Resource Infra Management) Manager
- SOL003 Adapter
- Inventory DB Adapter (for AAI)
- NS LCM DB
- Catalog DB Adapter (for ETSI Catalog Manager)
- MultiCloud Adapter (for MultiCloud)
- Configuration Adapter (not for Guilin)
- Policy Adapter (not for Guilin)
- FM/PM Event Manager (not for Guilin)
- K8S Adapter (not for Guilin)
ONAP SO NFVO Component for Guilin
The following diagram diagram depicts ONAP SO NFVO Component for Guilin.
Gliffy Diagram | ||||||
---|---|---|---|---|---|---|
|
ONAP SO NFVO Component Deployment View
The following diagrams depict a deployment view of ONAP SO NFVO. There are Plan A and B. The Plan B provides a simpler deployment option and will support the NS Workflow BPMNs migration to the Stand-Alone shared Camunda engine (when ONAP SO support custom Workflow deployment).
Deployment View for Guilin
In the Guilin, SO NFVO will consist of the following PODs:
- NS LCM Mgr
- SOL003 Adapter
- NS LCM DB Mgr (not for Guilin; designed to reuse the VFC NS LCM DB Mgr Microservice, but the VFC Microservice is not yet available for Guilin)
- In Guilin, NFVO database follows ONAP SO Database mechanism.
- Resource Infra Management Mgr (not for Guilin; designed to handle OOF-based resource granting and Or-Vi management, but the OOF-based granting is not available for Guilin)
Gliffy Diagram macroId 65987ba7-eb48-48cb-bb3c-f5de64cc0ee0 name SO NFVO Deployment View - Plan B pagePin 3
Guilin SO NFVO Testing
The UUI - SO - E2E Workflows - NS Workflows - SOL005 Adapter sequences are not ready for Guilin. As a result, the Curl Command as the SO NFVO client allows to send SOL005-compliant requests to SO NFVO directly.
Gliffy Diagram | ||||||
---|---|---|---|---|---|---|
|
Microservice Component Registration
TBD
SOL003 Adapter Registration
The SOL003 Adapter registers itself in the OOM installation
[oom.git] / kubernetes / so / charts / so-vnfm-adapter / templates / service.yaml
1 # Copyright © 2019 Nordix Foundation
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14 apiVersion: v1
15 kind: Service
16 metadata:
17 name: {{ include "common.servicename" . }}
18 namespace: {{ include "common.namespace" . }}
19 labels:
20 app: {{ include "common.name" . }}
21 chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
22 release: {{ include "common.release" . }}
23 heritage: {{ .Release.Service }}
24 annotations:
25 msb.onap.org/service-info: '[
26 {
27 "serviceName": "{{ include "common.servicename" . }}",
28 "version": "v1",
29 "url": "/so/vnfm-adapter/v1",
30 "protocol": "REST",
31 "port": "{{.Values.service.externalPort}}",
32 "visualRange":"1"
33 }
34 ]'
35 spec:
36 type: {{ .Values.service.type }}
37 ports:
38 {{if eq .Values.service.type "NodePort" -}}
39 - port: {{ .Values.service.internalPort }}
40 nodePort: {{ .Values.global.nodePortPrefixExt | default .Values.nodePortPrefixExt }}{{ .Values.service.nodePort }}
41 name: {{ .Values.service.portName }}
42 {{- else -}}
43 - port: {{ .Values.service.externalPort }}
44 targetPort: {{ .Values.service.internalPort }}
45 name: {{ .Values.service.portName }}
46 {{- end}}
47 selector:
48 app: {{ include "common.name" . }}
49 release: {{ include "common.release" . }}
Also, it registers itself with MSB.
metadata:
name: {{ include "common.servicename" . }}
namespace: {{ include "common.namespace" . }}
labels:
app: {{ include "common.name" . }}
chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }}
release: {{ include "common.release" . }}
heritage: {{ .Release.Service }}
annotations:
{
"serviceName": "{{ include "common.servicename" . }}",
"version": "v1",
"url": "/so/vnfm-adapter/v1",
"protocol": "REST",
"port": "{{.Values.service.externalPort}}",
"visualRange":"1"
}
]'
Component Interfaces
The following diagram depicts component interfaces.
Note: the blue lines represent interfaces within SO NFVO, and the black lines represent NFVO component interfaces with other ONAP components.
Gliffy Diagram macroId 8a4b5048-c8b6-4d47-874e-7cfaabed8d83 name ONAP NFVO component interfaces pagePin 24
Architecture Presentation Slide Deck and Approval
ONAP Architecture Subcommittee approved this architecture on June 16th 2020.
View file | ||||
---|---|---|---|---|
|
Implementation Plan For Guilin
- Create NS NBI
- Instantiate NS NBI
- Terminate NS NBI
- Delete NS NBI
- Create NS Backend
- Instantiate NS Backend
Requirements
Support for ETSI NFV NFVO Orchestrator in ONAP SO (ONAP SO ETSI-Aligned Hierarchical Orchestration)
Executive Summary - Enable E2E workflows by orchestrating ETSI NFV compliant Network Services and VNFs. This NFVO should provide an ETSI NFV SOL005 v2.7.1 NBI which can onboard ETSI NFV SOL004 and ETSI NFV SOL007 v2.7.1 compliant packages which then can be Life Cycle Managed and monitored. This NFVO should use an ETSI SOL003 v2.7.1 SBI to invoke an external VNF Manager.
Business Impact - Enables operators and service providers to use Industry standard Orchestration to deploy, manage and monitor network services. Industry compatibility.
Business Markets - All operators and service providers that are developing ETSI compatible Network Services especially for 5G Slicing where each Slice Subnet is associated with a Network Service
Funding/Financial Impacts - Reduction in operations expense from using industry standard ETSI Orchestration.
Organization Mgmt, Sales Strategies -There is no additional organizational management or sales strategies for this requirement outside of a service providers "normal" ONAP deployment and its attendant organizational resources from a service provider.
ONAP SO NFVO Requirements for Guilin
ONAP SO NFVO is a sub-component of SO and provides ETSI NFV-compliant NFVO functions in ONAP, such as ETSI NFVO MANO 1) SOL007, SOL004 and SOL001 Modeling and Package, 2) SOL005-compliant NBI, 3) NS LCM and 4) SOL003-compliant SBI for VNFM invocation.
Note:
For the ONAP SO NFVO, we plan to build:
1) the NFVO platform foundation,
2) SOL005 NBI (based on the forge.etsi.org SOL005 swagger files; we believe it is easy to upgrade for ETSI specification changes),
3) NS LCM Manager leveraging Camunda BPMN with custom workflows support (in the future, possibly design workflows from SDC and associate them with NS models – model-driven),
4) leveraging VFC NS Instance DB microservice and NS LCM business logic, and
5) CNF support hook. Since ONAP SO already has the SOL003 Adapter, for our project, at this time we don’t need VFC gVNFM and VNFM adapting mechanism.
P1: Phase 1 (for Guilin)
P2: Phase 2 (post Guilin)
P3: Phase 3 (future release)
Requirement # | Requirement | Component | Phase |
---|---|---|---|
NFVO.R1 | Provides a NFVO function Microservice plugin framework for hosting NFVO function components by configuration. Note: we are not building the Microservice service registration, aggregation, discovery and routing engine itself, but we are leveraging the engine's capability (e.g., MSB, API Fabric, Kong, or Kubernetes & service discovery) to offer configuration of NFVO Microservice components access. Note: the engine choice is under discussion
| Microservice Plugin Framework (configuration) | P1 |
NFVO.R2 | Supports SOL005-compliant NS LCM (Network Service Lifecycle Management) NBI interfaces for its client such as ONAP SO or SOL005-compliant clients. In Guilin, the following operations will be supported
| SOL005 NBI | P1 |
NFVO.R3 | Supports the ETSI-compliant NS LCM. In Guilin, the following operations will be supported
| NS LCM | P1 |
NFVO.R4 | Sends SOL005-compliant NS LCM notifications to its subscriber, such as ONAP SO or SOL005-compliant clients
| SOL005 NBI | P1 |
NFVO.R5 | Manages (as a client) virtualized resources via interfaces (Or-Vi) exposed by the VIM
| NS RIM Manager | P1 |
NFVO.R6 | Supports Virtual Links and VNF-FG - NS LCM
| NS LCM | P1 |
NFVO.R7 | Manages (as a client) virtualized resource management interfaces (SOL003) thru the existing SOL003 Adapter
| NS LCM, SOL003 Adapter | P1 |
NFVO.R8 | Supports VNF Granting interfaces (SOL003) to the SOL003 Adapter
| NS LCM, NS RIM Manager, SOL003 Adapter | P1 |
NFVO.R9 | Supports VNF lifecycle management (LCM) notifications (SOL003) to the SOL003 Adapter
| NS LCM, SOL003 Adapter | P1 |
NFVO.R10 | Interfaces with ETSI Catalog Manager for SOL004 VNF/PNF and SOL007 NS packages
| NS LCM | P1 |
NFVO.R11 | Supports package management notification interfaces to ETSI Catalog Manager
| NS LCM | |
NFVO.R12 | Supports Communication Security, conforming SOL005 specification
| NS LCM, SOL005 NBI | P1 |
ONAP SO and SOL005 Adapter Requirements
Requirement # | Requirement | Component | Phase |
---|---|---|---|
SOL005.A.R1 | ONAP SO receives E2E (OSS Service-level) requests and parse them and invoke NS workflows per NS Sends SOL005 requests to the ONAP SO NFVO, as one of the choices (SO NFVO, VFC, External NFVO) | SOL005 Adapter | P1 |
SOL005.A.R2 | Subscribes to ONAP SO NFVO for notifications
| SOL003 Adapter | P1 |
SOL005.A.R3 | Provides notification endpoint(s) to receive notifications
| SOL003 Adapter | P1 |
SOL003 Adapter Requirements
Requirement # | Requirement | Component | Phase |
---|---|---|---|
SOL003.A.R1 | SOL003 Adapter will be invoked by SO NFVO | SOL003 Adapter, NS LCM | P1 |
Note:
|
SOL002 Adapter Requirements
Requirement # | Requirement | Component | Phase |
---|---|---|---|
Note:
|
ETSI Catalog Manager Requirements
Requirement # | Requirement | Component | Phase |
---|---|---|---|
ETSI.CATALOG.R1 | ETSI Catalog Manager supports ETSI v.2.7.1 specification
| ETSI Catalog Manager | P1 |
Out of Scope Features from Guilin
The following features are out of scope from Guilin:
- Container Image Management (P2)
- Resource Management, validation and authorization of NFVI resource requests (P2)
- VNF-FGs (P2)
Container Image Management (P2)
- Virtualized Resources Information Management (P2)
Virtualized Resources Capacity Management (P2)
- Virtualized Resources Management (P2)
Virtualized Resources Change Management (P2)
- Virtualized Resources Reservation Management (P2)
Virtualized Resource Quota Management (P2)
- Virtualized Resource Performance Management (P2)
Virtualized Resource Fault Management (P2)
- Network Forwarding Path (NFP) Management (P2)
- Scale NS (POST “/api/nslcm/v1/ns_instances/{nsInstanceId}/scale”) – (P2)
- Heal NS (“POST ”/api/nslcm/v1/ns_instances/{nsInstanceId}/heal”) – (P2)
- VNF Modify (ModifyVnfInfo) (P2)
- VNF Heal (P2)
- VNF Query (P2)
- SOL003 NBI enhancements for GNFC-ready (P2)
- SOL003 Modify, Heal and Scale (P2)
- K8S Adapter (P2)
- FM/PM Event Adapter (P2)
Use Cases
- As a start, simplified vCPE NS use cases plan to be used
- For simplicity, vCPE NS use cases without nested NSDs will be used for initial component testing.
- Network Slicing use cases will be defined for official testing
- TBD
Master Requirement
Support for ETSI NFV NFVO Orchestrator in ONAP SO (ONAP SO ETSI-Aligned Hierarchical Orchestration) | Executive Summary - Enable E2E workflows by orchestrating ETSI NFV compliant Network Services and VNFs. This NFVO should provide an ETSI NFV SOL005 v2.7.1 NBI which can onboard ETSI NFV SOL004 and ETSI NFV SOL007 v2.7.1 compliant packages which then can be Life Cycle Managed and monitored. This NFVO should use an ETSI SOL003 v2.7.1 SBI to invoke an external VNF Manager. Business Impact - Enables operators and service providers to use Industry standard Orchestration to deploy, manage and monitor network services. Industry compatibility. Business Markets - All operators and service providers that are developing ETSI compatible Network Services especially for 5G Slicing where each Slice Subnet is associated with a Network Service Funding/Financial Impacts - Reduction in operations expense from using industry standard ETSI Orchestration. Organization Mgmt, Sales Strategies -There is no additional organizational management or sales strategies for this requirement outside of a service providers "normal" ONAP deployment and its attendant organizational resources from a service provider. | Yes |
|
---|
Epic and User Story
Epic | User Story | Sub-Task | Description | In Guilin? | JIRA | Size | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Support for NFVO Microservice Plugin (P1) | Support SO NFVO function Microservice plugin capabilities, leveraging MSB, SpringBoot and Kubernetes, for hosting NFVO function components by configuration. So, the SO NFVO can be customized in a future by operators.
Note: we are not building the Microservice service registration, aggregation, discovery and routing engine itself, but we are leveraging the engine's capability (e.g., MSB, API Fabric, Kong, or Kubernetes & service discovery) to offer configuration of NFVO Microservice components access. In Guilin, the following will be supported
| Yes |
| |||||||||||||||||||||||||||
<requirements for each SO-NFVO Microservice>
| Support for NFVO Service Registration | Supports NFVO Micro-Service Registration for plugging in microservices
| Yes | |||||||||||||||||||||||||||
<requirements for finding SO-NFVO sub-microservices>
| Support for NFVO Service Discovery | Supports NFVO Micro-Service Discovery with version control
| Yes | |||||||||||||||||||||||||||
<requirements for communication between SO-NFVO sub-microservices>
| Support for NFVO Inter-Service Communication | Supports for NFVO Inter-Service Communication
| Yes | |||||||||||||||||||||||||||
Support for SOL005 NBI API Handler | Preconditions:
Provides SOL005-compliant Restful Northbound APIs for SO/SOL005 Adapter (P1)
| Yes |
| |||||||||||||||||||||||||||
Create NS NBI |
Note: secure communication is handled by a separate user story, SO-3165. | Yes |
| |||||||||||||||||||||||||||
Instantiate NS NBI |
Note: secure communication is handled by a separate user story, SO-3165. | Yes |
| |||||||||||||||||||||||||||
Terminate NS NBI |
Note: secure communication is handled by a separate user story, SO-3165. | Yes |
| |||||||||||||||||||||||||||
Delete NS NBI |
Note: secure communication is handled by a separate user story, SO-3165. | Yes |
| |||||||||||||||||||||||||||
Support for secured communication of SOL005 NBI API Handler | Support for secured communication of SOL005 NBI API Handler | Yes |
| |||||||||||||||||||||||||||
Get NS Operation Status NBI |
Note: Instantiate NS and Terminate NS use the GET individual NS LCM operation occurrence Note: secure communication is handled by a separate user story, SO-3165. | No |
| |||||||||||||||||||||||||||
Support for SOL005 NBI Subscription APIs | Supports SOL005-compliant Restful Northbound Subscription and Notification APIs for SO/SOL005 Adapter
| No |
| |||||||||||||||||||||||||||
Create NS Subscription NBI |
| No |
| |||||||||||||||||||||||||||
Get NS Subscription NBI |
| No |
| |||||||||||||||||||||||||||
Delete NS Subscription NBI |
| No |
| |||||||||||||||||||||||||||
Send NS Notifications (As a Client) |
| No |
| |||||||||||||||||||||||||||
Support for secured communication of SOL005 NBI API Handler | Support for secured communication of SOL005 NBI API Handler
| Yes |
| |||||||||||||||||||||||||||
Support for NS LCM and Workflows Management | Supports NS LCM and Workflows in SO NFVO(P1)
| Yes |
| |||||||||||||||||||||||||||
Create NS LCM and Workflows | Supports the Create NS backend operations and workflows which do the following sequence: <Create NS: note: the following workflow is a template, and it can be enhanced as needed.>
| Yes |
| |||||||||||||||||||||||||||
Instantiate NS | Supports the Instantiate NS backend operations and workflows which do the following sequence: <Instantiate NS: note: the following workflow is a template, and it can be enhanced as needed.>
curl -X POST /api/parser/v1/parsernsd' \ -H 'Content-Type: application/json' \ --data-raw '{ "csarId": "csarid", "packageType": "ns", "inputs": "[]" }'
| Yes |
| |||||||||||||||||||||||||||
Terminate NS | Supports the Terminate NS backend operations and workflows which do the following sequence: <Terminate NS: note: the following workflow is a template, and it can be enhanced as needed.>
| No |
| |||||||||||||||||||||||||||
Delete NS | Supports the Delete NS backend operations and workflows which do the following sequence: <Delete NS: note: the following workflow is a template, and it can be enhanced as needed.>
| No |
| |||||||||||||||||||||||||||
Get NS Operation Status | Supports the Get NS Operation Status operation and workflows which do the following sequence: <Get NS Operation Status: note: the following workflow is a template, and it can be enhanced as needed.> Note: the following workflow is for illustration purpose. Since the operation sequence (sending a query to a database and get the NsLcmOpOcc data, the work flow is not necessary
| No |
| |||||||||||||||||||||||||||
Create NS Subscription | Supports the Create NS Subscription operation and workflows which do the following sequence: <Create NS Subscription: note: the following workflow is a template, and it can be enhanced as needed.>
| No |
| |||||||||||||||||||||||||||
Get NS Subscription | Supports the Get NS Subscription operation and workflows which do the following sequence: <Get NS Subscription: note: the following workflow is a template, and it can be enhanced as needed.>
| No |
| |||||||||||||||||||||||||||
Delete NS Subscription | Supports the Delete NS Subscription operation and workflows which do the following sequence: <Delete NS Subscription: note: the following workflow is a template, and it can be enhanced as needed.>
| No |
| |||||||||||||||||||||||||||
Send NS Notifications | Supports the Send NS Notification operation and workflows which do the following sequence: <Send NS Notification: note: the following workflow is a template, and it can be enhanced as needed.>
| No |
| |||||||||||||||||||||||||||
Support for Create VLs | Supports the Create VLs operation and workflows which do the following sequence:
| No |
| |||||||||||||||||||||||||||
Support for Delete VLs | Supports the Delete VLs operation and workflows which do the following sequence:
| No |
| |||||||||||||||||||||||||||
Support for Get VLs | Supports the Get VLs operation and workflows which do the following sequence:
| No |
| |||||||||||||||||||||||||||
Support for granting VNF (non OOF-based one) | Supports the granting VNF (non OOF-based one) operation and workflows which do the following sequence:
| No |
| |||||||||||||||||||||||||||
Support for NS Catalog DB Adapter |
| Yes |
| |||||||||||||||||||||||||||
Support for queries for VNF/PNF/NS package management |
| Yes |
| |||||||||||||||||||||||||||
Support for notification endpoint for ETSI Catalog Manager notification |
| No |
| |||||||||||||||||||||||||||
Support for NS Inventory (AAI) Adapter |
| No |
| |||||||||||||||||||||||||||
Support for NS AAI APIs (CRUD) |
| No |
| |||||||||||||||||||||||||||
Support for Network AAI APIs (CRUD) |
| No |
| |||||||||||||||||||||||||||
Support for VNF AAI APIs (CRUD) |
| No |
| |||||||||||||||||||||||||||
Support for Vserver AAI APIs (CRUD) |
| No |
| |||||||||||||||||||||||||||
Support for Customer AAI APIs (CRUD) |
| |||||||||||||||||||||||||||||
Support for NS LCM Database Management |
id = models.CharField(db_column='ID', primary_key=True, max_length=200)
nfinstid = models.CharField(db_column='NFINSTID', max_length=200, primary_key=True)
vlinstanceid = models.CharField(db_column='VLINSTANCEID', max_length=255, primary_key=True)
jobid = models.CharField(db_column='JOBID', primary_key=True, max_length=255)
request_id = models.CharField(db_column='REQUESTID', max_length=255)
subscription_id = models.CharField(db_column='SUBSCRIPTIONID', max_length=255, primary_key=True)
id = models.CharField(db_column='ID', max_length=255, primary_key=True)
pnfId = models.CharField(db_column='PNFID', primary_key=True, max_length=255)
service_id = models.CharField(db_column='serviceId', max_length=255, primary_key=True)
service_id = models.CharField(db_column='serviceId', max_length=255)
service_id = models.CharField(db_column='serviceId', max_length=255, primary_key=True) | Yes |
| |||||||||||||||||||||||||||
Support for MultiCloud Adapter |
| No |
| |||||||||||||||||||||||||||
Support for Create Network to VIM API |
| No |
| |||||||||||||||||||||||||||
Support for Delete Network (VL) from VIM API |
| No |
| |||||||||||||||||||||||||||
Package and dynamically deploy NS LCM Workflows with business logic | When ONAP SO support Dynamic BPMN, package and deploy NS LCM workflows with business logic as a WAR file.
| No |
| |||||||||||||||||||||||||||
Package and deploy default NS LCM workflows with business logic |
| No |
| |||||||||||||||||||||||||||
Support for UI and REST interfaces for custom workflow war deployment |
| No |
| |||||||||||||||||||||||||||
Support for NS Resource Infra Management (RIM) Manager |
| No |
| |||||||||||||||||||||||||||
Support for OOF-based Granting VNF |
| No |
| |||||||||||||||||||||||||||
Support for Software Image Management |
| No |
| |||||||||||||||||||||||||||
Enhance NFVO invocation sequences from UUI to SOL005 Adapter to make ONAP SO SOL005 compliant | SOL005 Adapter supports interfaces to/from ONAP SO NFVO
Note: assign to Verizon | No |
| |||||||||||||||||||||||||||
<task> | ||||||||||||||||||||||||||||||
remove ETSI Catalog Manager trigger from ONAP SO for package distribution | remove ETSI Catalog Manager trigger from ONAP SO for package distribution
| Yes |
| |||||||||||||||||||||||||||
Register ETSI NFVO in MSB | Register ETSI NFVO in MSB | Yes |
| |||||||||||||||||||||||||||
Create NFVO Database OOM Files | Create NFVO Database OOM Files | Yes |
| |||||||||||||||||||||||||||
Test SO NFVO on Java 11 with Camunda BPMN embedded engine | Test SO NFVO on Java 11 with Camunda BPMN embedded engine | Yes |
| |||||||||||||||||||||||||||
<for Future Release> | ||||||||||||||||||||||||||||||
Support for Configuration Adapter (P2) |
| No |
| |||||||||||||||||||||||||||
Support for Policy Adapter (P2) |
| No |
| |||||||||||||||||||||||||||
Support for OOF Adapter (P1) |
| No |
| |||||||||||||||||||||||||||
Supports for Notification Manager (P2) |
| No | ||||||||||||||||||||||||||||
Support for FM/PM Event Adapter (P3) |
| No | ||||||||||||||||||||||||||||
Support for K8S client (P3) |
| No | ||||||||||||||||||||||||||||
ONAP SO NFVO Invocation Sequence
The following SOL005-based Operation sequence flow depicts the SO NFVO invocation architecture.
Create/Instantiate NS Sequences
The following diagram depicts the Create/Instantiate NS.
PlantUML Macro | ||
---|---|---|
| ||
@startuml
participant SO
participant SOL005_Adapter
participant SOL005_NBI
participant NS_LCMGR
participant RIM_Mgr
participant MultiCloud_Adapter
participant OOF
participant Catalog_DB_Adapter
participant ETSI_Catalog_Mgr
participant NFVO_NS_DB
participant Inventory_DB_Adapter
participant AAI
participant SOL003_Adapter
participant VIM
participant VNFM
autonumber
group Create NS
SO -> SOL005_Adapter : Create NS
SOL005_Adapter -> SOL005_NBI : Create NS
SOL005_NBI -> NS_LCMGR : Create NS
NS_LCMGR -> NFVO_NS_DB : Create NS instance in NS INST DB
NFVO_NS_DB -> NS_LCMGR : Response for Create NS instance record
NS_LCMGR -> Inventory_DB_Adapter : Create NS record
Inventory_DB_Adapter -> AAI : Create NS record
AAI --> AAI : Create NS record
AAI -> Inventory_DB_Adapter : Response for Create NS record
Inventory_DB_Adapter -> NS_LCMGR: Response for Create NS record
NS_LCMGR -> SOL005_NBI : Response for Create NS record
SOL005_NBI -> SOL005_Adapter : Response with NS Instance Id
SOL005_Adapter -> SO : Response with NsInstance\n(including NS Instance Id)
NS_LCMGR -> SOL005_NBI : Send\nNsIdentifierCreationNotification
SOL005_NBI -> SOL005_Adapter : Send\nNsIdentifierCreationNotification
SOL005_Adapter -> SO : Send\nNsIdentifierCreationNotification
end
group Instantiate NS
NS_LCMGR -> Catalog_DB_Adapter : Read NS descriptor
Catalog_DB_Adapter -> ETSI_Catalog_Mgr : Read NS descriptor
ETSI_Catalog_Mgr -> Catalog_DB_Adapter : Return NS descriptor
Catalog_DB_Adapter -> NS_LCMGR : Return NS descriptor
NS_LCMGR --> NS_LCMGR : Parse & Decompose NS descriptor
NS_LCMGR --> NS_LCMGR : Instantiate NS
NS_LCMGR --> NS_LCMGR : Instantiate VLs between VNFs
NS_LCMGR -> MultiCloud_Adapter : Create Network
MultiCloud_Adapter -> VIM : Create Network
VIM -> MultiCloud_Adapter : Response for Create Network
MultiCloud_Adapter -> NS_LCMGR : Response for Create Network
NS_LCMGR -> Inventory_DB_Adapter : Create VL record
Inventory_DB_Adapter -> AAI : Create VL record
AAI --> AAI : Create VL record
AAI -> Inventory_DB_Adapter : Response for Create VL record
Inventory_DB_Adapter -> NS_LCMGR : Response for Create VL record
NS_LCMGR -> RIM_Mgr : Request Homing Information\nfor Network Service
RIM_Mgr -> OOF : Requests Homing Information\nfor Network Service
OOF -> RIM_Mgr : Response with Homing Information\nfor Network Service
RIM_Mgr --> RIM_Mgr : Persist Homing Information\nfor Network Service
loop Go through each VNF
NS_LCMGR -> SOL003_Adapter : Request for Instantiate VNF
SOL003_Adapter -> VNFM : Request for Instantiate VNF
VNFM -> SOL003_Adapter : Request Grant VNF resource
SOL003_Adapter -> NS_LCMGR : Request Grant VNF resource
NS_LCMGR -> RIM_Mgr : Request Homing Information
RIM_Mgr -> NS_LCMGR : Return with Homing Information\nfor the VNF
NS_LCMGR --> NS_LCMGR : Make a Grant decision
NS_LCMGR -> SOL003_Adapter : Return with a Grant decision
SOL003_Adapter -> VNFM: Return with a Grant decision
VNFM --> VNFM : Instantiate VNF
VNFM -> SOL003_Adapter : Notify the changes\nof VNF/VDUs/CPs
SOL003_Adapter -> NS_LCMGR : Notify the changes\nof VNF/VUD/CPs
end
NS_LCMGR -> SOL005_NBI : Send\nnsLcmOperationOccurrenceNotification
SOL005_NBI -> SOL005_Adapter : Send\nnsLcmOperationOccurrenceNotification
SOL005_Adapter -> SO : Send\nnsLcmOperationOccurrenceNotification
end
@enduml |
CreateNS
- Register ONAP SO NFVO into AAI through ESR
- From VID/UUI, invoke the NS LCM
- CreateVFCNSResource.bpmn
- CreateVFCNSResource.groovy
- preProcessRequest()
- Select vfcAdapter/SOL005 Adapter
createNetworkService()
- Populate String reqBody ="""{ "nsServiceName":"${nsServiceName}",
"nsServiceDescription":"${nsServiceDescription}",
"nsServiceModelUUID":"${nsServiceModelUUID}",
"nsOperationKey":${nsOperationKey},
"nsParameters":{
"locationConstraints":${locationConstraints},
"additionalParamForNs":${requestInputs}
}
}""" - Send a request to vfcAdapter/SOL005 Adapter
- vfcAdapterUrl + "/ns/" with reqBody
- Populate String reqBody ="""{ "nsServiceName":"${nsServiceName}",
- preProcessRequest()
- CreateVFCNSResource.groovy
- SOL005Adapter
- createNS()
- Create createNsRequest data
- from the additionalParamForNS, get the NFVO orchestrator
- Query AAI to get a proper NFVO instance
- Prepare CreateNs request header
Map<String, String> requestHeader = new HashMap<>();
requestHeader.put("GLOBALCUSTOMERID", segInput.getNsOperationKey().getGlobalSubscriberId());
requestHeader.put("SERVICETYPE", segInput.getNsOperationKey().getServiceType());
- Send a CreateNS request to ONAP SO NFVO
- Get an nsInstanceId response from SOL005 Adapter
- Save resource operation information
- Add relation between Service and NS in AAI
InstantiateNS
- Register ONAP SO NFVO into AAI through ESR
- From VID/UUI, invoke the NS LCM
- CreateVFCNSResource.bpmn
- CreateVFCNSResource.groovy
- preProcessRequest()
- Select vfcAdapter/SOL005 Adapter
instantiateNetworkService()
Populate String reqBody ="""{
"nsServiceName":"${nsServiceName}",
"nsServiceDescription":"${nsServiceDescription}",
"nsOperationKey":${nsOperationKey},
"nsParameters":${nsParameters}
}"""Send a request to vfcAdapter/SOL005 Adapter
- vfcAdapterUrl + "/ns/" + nsInstanceId + "/instantiate" with reqBody
- preProcessRequest()
- CreateVFCNSResource.groovy
- SOL005Adapter
- instantiateNS()
- Create instantiateNsRequest data
- set VnfLocationConstraint if any
- set additionalParamsForNs
- from the additionalParamForNS, get the NFVO orchestrator
- Query AAI to get a proper NFVO instance
- Prepare CreateNs request header
Map<String, String> requestHeader = new HashMap<>();
requestHeader.put("GLOBALCUSTOMERID", segInput.getNsOperationKey().getGlobalSubscriberId());
requestHeader.put("SERVICETYPE", segInput.getNsOperationKey().getServiceType());
- Send a instantiateNS request to ONAP SO NFVO
- Create instantiateNsRequest data
- Get an response status from SOL005 Adapter
- if 202 successful, get an Job id
- Save resource operation information
- Add relation between Service and NS in AAI
- Get an response status from SOL005 Adapter
Terminate/Delete NS Sequences
The following diagram depicts the Terminate / Delete NS.
PlantUML Macro | ||
---|---|---|
| ||
@startuml
participant SO
participant SOL005_Adapter
participant SOL005_NBI
participant NS_LCMGR
participant RIM_Mgr
participant MultiCloud_Adapter
participant OOF
participant Catalog_DB_Adapter
participant ETSI_Catalog_Mgr
participant Inventory_DB_Adapter
participant AAI
participant SOL003_Adapter
participant VIM
participant VNFM
autonumber
group Terminate NS
SO -> SOL005_Adapter : Terminate NS
SOL005_Adapter -> SOL005_NBI : Terminate NS
SOL005_NBI -> NS_LCMGR : Terminate NS
NS_LCMGR -> Inventory_DB_Adapter : Query all instances related to NS
Inventory_DB_Adapter -> AAI : Query all instances related to NS
AAI -> Inventory_DB_Adapter : Return all instances for NS
Inventory_DB_Adapter -> NS_LCMGR : Return all instances for NS
NS_LCMGR --> NS_LCMGR : Start Delete NS instances
NS_LCMGR -> RIM_Mgr : Request Homing Information\nfor Network Service
RIM_Mgr -> OOF : Requests Homing Information\nfor Network Service
OOF -> RIM_Mgr : Response with Homing Information\nfor Network Service
RIM_Mgr --> RIM_Mgr : Persist Homing Information\nfor Network Service
loop Go thru each VNF
NS_LCMGR -> SOL003_Adapter : Delete VNF
SOL003_Adapter -> VNFM : Delete VNF
VNFM -> SOL003_Adapter : Request Grant resource for deletion
SOL003_Adapter -> NS_LCMGR : Request Grant resource for deletion
VNFM -> SOL003_Adapter : Request Grant VNF resource
SOL003_Adapter -> NS_LCMGR : Request Grant VNF resource
NS_LCMGR -> RIM_Mgr : Request Homing Information
RIM_Mgr -> OOF : Request Homing Information
OOF -> RIM_Mgr : Return with Homing Information\nfor the VNF
RIM_Mgr -> NS_LCMGR : Return with Homing Information\nfor the VNF
NS_LCMGR --> NS_LCMGR : Make a Grant decision
NS_LCMGR -> SOL003_Adapter : Return with a Grant decision
SOL003_Adapter -> VNFM: Return with a Grant decision
VNFM --> VNFM : Delete Resources
VNFM -> SOL003_Adapter : Notify changes of VNF/VDUs/CPs
SOL003_Adapter -> NS_LCMGR : Notify changes of VNF/VDUs/CPs
NS_LCMGR -> Inventory_DB_Adapter : Update records for Delete VNF/VDUs/CPs
Inventory_DB_Adapter -> AAI : Update records for Delete VNF/VDUs/CPs
AAI --> AAI : Update records for Delete VNF/VDUs/CPs
AAI -> Inventory_DB_Adapter : Return with Delete VNF/VDUs/CPs
Inventory_DB_Adapter -> NS_LCMGR : Return with Delete VNF/VDUs/CPs
end
NS_LCMGR -> MultiCloud_Adapter : Request for Delete VLs (if needed)
MultiCloud_Adapter -> VIM : Request for Delete VLs
VIM --> VIM : Delete VLs
NS_LCMGR -> Inventory_DB_Adapter : Update records for Delete VLs
Inventory_DB_Adapter -> AAI : Update records for Delete VLs
AAI --> AAI : Update records for Delete VLs
AAI -> Inventory_DB_Adapter : Return with Delete VLs
Inventory_DB_Adapter -> NS_LCMGR : Return with Delete VLs
NS_LCMGR -> SOL005_NBI : Send\nnsLcmOperationOccurrenceNotification
SOL005_NBI -> SOL005_Adapter : Send\nnsLcmOperationOccurrenceNotification
SOL005_Adapter -> SO : Send\nnsLcmOperationOccurrenceNotification
end
@enduml |
Terminate and Delete NS
- Register ONAP SO NFVO into AAI through ESR
- From VID/UUI, invoke the NS LCM
- DeleteVFCNSResource.bpmn
- DeleteVFCNSResource.groovy
- preProcessRequest()
- DoDeleteVFCNetworkServiceInstance.groovy
- preProcessRequest()
- Select vfcAdapter/SOL005 Adapter
String nsOperationKey = """{
"globalSubscriberId":"${globalSubscriberId}",
"serviceType":"${serviceType}",
"serviceId":"${serviceId}",
"operationId":"${operationId}",
"nodeTemplateUUID":"${nodeTemplateUUID}"
}"""
- deleteNSRelationship()
- delete relation between service and resource from AAI
- terminateNetworkService()
- POST vfcAdapterUrl + "/ns/" + nsInstanceId + "/terminate" with nsOperationKey
- preProcessRequest()
- DoDeleteVFCNetworkServiceInstance.groovy
- preProcessRequest()
- Select vfcAdapter/SOL005 Adapter
- String nsOperationKey = """{
"globalSubscriberId":"${globalSubscriberId}",
"serviceType":"${serviceType}",
"serviceId":"${serviceId}",
"operationId":"${operationId}",
"nodeTemplateUUID":"${nodeTemplateUUID}"
}"""
deleteNetworkService()
Send a request to vfcAdapter/SOL005 Adapter
- DELETE vfcAdapterUrl + "/ns/" with nsInstanceId
- preProcessRequest()
- DeleteVFCNSResource.groovy
- SOL005Adapter
- terminateNS()
- Send a terminateNS request to ONAP SO NFVO, with reqBody (terminationTime)
- add operation status to database
- deleteNS()
- Send a deleteNS request to ONAP SO NFVO
- add operation status to database
- deleteNS()
Gaps and Issues
CreateNsRequest
For the Create NS, the CreateNsRequest is sent to SO NFVO.
- nsdId
- nsName
- nsDescription
Also, the current SOL005 Adapter passes the following attributes through HTTP header. This is a workaround, not part of ETSI specification. Maybe, ETSI SOL005 specification needs to be enhanced to allow additional parameters?
- GLOBALCUSTOMERID
- SERVICETYPE
InstantiateNsRequest
For the Instantiate NS, the InstantiateNsRequest is sent to SO NFVO. As part of the InstantiateNsRequest, additionalParamsForNs is passed, but additionalParamsForVnf is NOT passed from the SOL005 Adapter to NFVO. According to ETSI SOL005 specification, multiple additionalParamsForVnf (data type: ParamsForVnf) can be passed. It seems that currently the additionalParams for VNF is constructed based on the vnf properties in NSD.
====================================================================================================================================================================================
Additional Info
ONAP SO
Support for ETSI NFV NFVO Orchestrator in ONAP SO (ONAP SO ETSI-Aligned Hierarchical Orchestration)
...
Executive Summary - Enable E2E workflows by orchestrating ETSI NFV compliant Network Services and VNFs. This NFVO should provide an ETSI NFV SOL005 v2.7.1 NBI which can onboard ETSI NFV SOL004 and ETSI NFV SOL007 v2.7.1 compliant packages which then can be Life Cycle Managed and monitored. This NFVO should use an ETSI SOL003 v2.7.1 SBI to invoke an external VNF Manager.
Business Impact - Enables operators and service providers to use Industry standard Orchestration to deploy, manage and monitor network services. Industry compatibility.
Business Markets - All operators and service providers that are developing ETSI compatible Network Services especially for 5G Slicing where each Slice Subnet is associated with a Network Service
Funding/Financial Impacts - Reduction in operations expense from using industry standard ETSI Orchestration.
Organization Mgmt, Sales Strategies -There is no additional organizational management or sales strategies for this requirement outside of a service providers "normal" ONAP deployment and its attendant organizational resources from a service provider.
...
NFVO Architecture & Functions
The following diagram depicts the NFVO component architecture
...
Gliffy Diagram macroId 6eb369b2-795b-470e-91dd-44f9424a19f2 name ONAP NFVO component architecture pagePin 725
NFVO Microservice Plugin Framework - high priority
- Provides the NFVO function Microservice plugin framework for supporting service registration, discovery and routing by configuration.
- Note: we are not building the Microservice service registration, aggregation, discovery and routing engine itself, but we are leveraging the engine's capability (e.g., MSB, API Fabric, Kong, or Kubernetes & service discovery) to offer configuration of NFVO Microservice components access.
- Default Default function plugins support (following default plugins will be registered to the Framework; routing will be configured):
- SOL005 NBI (API Handler)
- NS LCM Manager
- ETSI Catalog Manager AdapterDB Adapter (for ETSI Catalog Manager)
- Camunda Workflow Engine
- NS Workflows and Logic
- Resource ManagerK8S ClientInfra Management (RIM) Manager
- Configuration ManagerAdapter
- MultiCloud Adapter
- Inventory DB Adapter
- Notification Manager
- FM/PM Event ManagerAdapter (for DCAE)
- K8S Adapter
- Substitution of existing function plugins
- Registration of a new substitution Microservice with version control (leverage a mechanism like AAI ESR/MSR/API Fabric/MSB/Kubernetes/Kong - TBD)
- Plug-in a substitution Microservice
- Dynamic dispatching/launching a new plugin instance based on configuration/policy
- Extension of existing function plugins
- Default function plugin extension with version control
- Dynamic dispatching/launching an extended plugin instance based on configuration/policy
SOL005 NBI (API Handler
...
)- high priority
- Provides SOL005-compliant Restful Northbound APIs for SO/SOL005 Adapter
- Supports NS Lifecycle Management (LCM) APIs
- Create NS (POST “/api/nslcm/v1/ns_instances”)
- Instantiate NS (POST “/api/nslcm/v1/ns_instances/{nsInstanceId}/instantiate”)
- Terminate NS (“/api/nslcm/v1/ns_instances/{nsInstanceId}/terminate”)
- Delete NS (DELETE “/api/nslcm/v1/ns_instances/{nsInstanceId}”)
Scale NS (POST “/api/nslcm/v1/ns_instances/{nsInstanceId}/scale”) – stretch goalHeal NS (“POST ”/api/nslcm/v1/ns_instances/{nsInstanceId}/heal”) – stretch goal- Query NS (GET “/api/nslcm/v1/ns_instances”, “/api/nslcm/v1/ns_instances/{nsInstanceId}”)
- Subscription (POST ”/subscriptions”)
- Notification (SO SOL005 Adapter client-provided; POST notification based on the callbackUrl from the subscription)
- Support NS Fault Management API (stretch goal)
Support NS Performance Management APIs (stretch goal)
- Leverages SOL005 Swagger Files
- httpshttps://forge.etsi.org/jenkins/view/All%20jobsAll+jobs/job/NFV%20-%20Network%20Functions%20VirtualisationNFV+-+Network+Functions+Virtualisation/job/sol005-master/lastSuccessfulBuild/artifact/build/
- Provides interfaces with DCAE and Policy for Close Loop Automation
- This API Handler focuses on the SOL005 APIs, and its business logic is supplied by the NS LCM Microservice
- Supports NS Lifecycle Management (LCM) APIs
NS Workflows & Business Logic - high priority
- Provides Workflow engines (stand-alongalone/clustered Camunda engine) for the NS workflow management
- Supports Stand-Alone/clustered Camunda engine(s) deployment
Allows hot deployment of custom workflow packages while ONAP NFVO is running
- Provides NS workflows
- Provides default NS workflows (part of ONAP NFVO deployment)
- CreateNS bpmn files with business logic
- InstantiateNS bpmn files with business logic
- TerminateNS bpmn files with business logic
- DeleteNS bpmn files with business logic
- Allows custom NS workflows deployment (Hot deployment)
- The Operators build their own workflows and business logic as war files
- The Operators drop off custom workflows war files into the Camunda deployment directory
- UI for the custom workflow war deployment would be supported
- Provides default NS workflows (part of ONAP NFVO deployment)
ETSI Package Onboarding for NFVO - enhancements of current capabilities
- ONAP NFVO leverages the ETSI Catalog Manager as the run-time Catalog Database service provider.
- ETSI NS/VNF/PNF Packages are onboarded and distributed from SDC à ETSI Catalog Manager (note: this is NOT part of NFVO; it is a separate effort)
- ONAP NFVO queries ETSI NS/VNF/PNF Packages from the ETSI Catalog Manager
NS LCM Database
...
- high priority
- Use the VFC NS LCM database
...
SOL003 Adapter for SVNFMs - leveraging existing capabilities
- Provides SOL003-compliant (Or-Vnfm) Southbound APIs towards SVNFMs
- Supports VNF Lifecycle Management (LCM)
- Create VNF
- Instantiate VNF
- Terminate VNF
- Delete VNF
- Scale VNF
- Heal VNF
- Query VNF
- ModifyInfo VNF
- Subscription
- Notification
- Granting with HPA
- It is a Microservice and part of ONAP SO NFVO
- It is launched by NS Workflows for VNF LCM
- It locates the VNFM instance by leveraging AAI ESR
- Supports VNF Lifecycle Management (LCM)
Resource
...
Infra Management (RIM) Manager - high priority
- Provides Resource Granting Information through OOF (Policy, MultiCloud, A&AI)
- Supports interfaces with OOF to collect Granting information
Collects Homing information from OOF and provides the information to other NFVO components
- Supports Or-Vi Interfaces that provided by VIM, Infrastructure Manager, VIM or CaaS manager (note: for Guilin, many of them would be stretch goals)
- Software Image Management (P1)
Container Image Management (stretch goalP2)
- Virtualized Resources Information Management (P2)
Virtualized Resources Capacity Management (P2)
- Virtualized Resources Management (P2)
Virtualized Resources Change Management (P2)
- Virtualized Resources Reservation Management (P2)
Virtualized Resource Quota Management (P2)
- Virtualized Resource Performance Management (P2)
Virtualized Resource Fault Management (P2)
- Network Forwarding Path (NFP) Management (P2)
Notification
...
Adapter (not for Guilin)
- Supports NS lifecycle management notification general-purpose notification services to its clients such as ONAP SO or SOL005 compliant clients
- TBD
FM/PM
...
Event Adapter (not for Guilin)
TBD
ONAP SO, SOL005 Adapter and NFVO Interaction
Descriptions | |
---|---|
Existing SO E2E Business Logic for VFC/SOL005 Adapter |
|
New ONAP SO NFVO Path |
|
ONAP SO Refactoring for NFVO Function Extraction
Note: to analyze the following further (extracting NS-related operations)
ONAP SO | NFVO |
---|---|
Asdc-controller (scope: Service, NS, VNF, VF-Module) | Asdc-controller for NS, leveraging ETSI Catalog Manager |
API Handler | SOL005 API Handler |
BPMN Infra (scope: Service, NS, VNF, VF-Module) including Workflows with embedded Camunda Workflow engine | NS LCM + Default NS Workflows (with business logic) + Custom NS Workflows (with business logic) Stand-Alone/Clustered Camunda Workflow Engine |
VFC / SOL005 Adapter | Not Applicable |
SOL003 Adapter in SO | SOL003 Adapter in NFVO (move its home) |
Catalog DB Adapter | Leverage ETSI Catalog Manager |
Request DB Adapter (scope: service, NS, VNF, VF-Module) | Request DB Adapter for NS scope |
APPC Orchestrator | Configuration Manager Client |
ve-vnfm-adapter (SOL002 Adapter) | TBD |
sdnc-adapter | TBD |
nssmf-adapter | TBD |
Openstack adapter / MultiCloud adapter | Resource Infra Management (RIM) Manager |
VNF Adapter | Not Applicable (SOL003 Adapter delegates VNF operations to SVNFM) |
K8S Client (PoC) | K8S ClientAdapter |
SO-monitoring | SO-monitoring for NS and VNF |
Common (beans and utils common for all the projects) | Leverage Common as needed |
Close Loop Handling | FM/PM Event HandlerAdapter |
Communication Security
- ONAP SO NFVO NBI supports HTTPs and Authentication/Authorization towards SO/SOL005 Adapter.
- ONAP SO NFVO SBI (through SOL003 Adapter) supports HTTPs and Authentication/Authorization towards SVNFMs.
- TBD
Standard Interfaces
...
...
Create / Instantiate NS
The following diagram depicts the Create/Instantiate NS.
...
PlantUML Macro | ||
---|---|---|
| ||
@startuml participant SO participant SOL005_Adapter participant SOL005_NBI participant NS_LCMGR participant ResourceRIM_Mgr participant MultiCloud_Adapter participant OOF participant Catalog_DB_Adapter participant ETSI_Catalog_Mgr participant Inventory_DB_Adapter participant AAI participant SOL003_Adapter participant VIM participant VNFM autonumber group Create NS SO -> SOL005_Adapter : Create NS SOL005_Adapter -> SOL005_NBI : Create NS SOL005_NBI -> NS_LCMGR : Create NS NS_LCMGR -> Resource_Mgr : Create NS record Resource_Mgr -> Inventory_DB_Adapter : Create NS record Inventory_DB_Adapter -> AAI : Create NS record AAI --> AAI : Create NS record AAI -> Inventory_DB_Adapter : Response for Create NS record Inventory_DB_Adapter -> Resource_Mgr: Response for Create NS record Resource_Mgr -> NS_LCMGR : Response for Create NS record NS_LCMGR -> SOL005_NBI : Response for Create NS record SOL005_NBI -> SOL005_Adapter : Response with NS Instance Id SOL005_Adapter -> SO : Response with NsInstance\n(including NS Instance Id) NS_LCMGR -> SOL005_NBI : Send\nNsIdentifierCreationNotification SOL005_NBI -> SOL005_Adapter : Send\nNsIdentifierCreationNotification SOL005_Adapter -> SO : Send\nNsIdentifierCreationNotification end group Instantiate NS NS_LCMGR -> Catalog_DB_Adapter : Read NS descriptor Catalog_DB_Adapter -> ETSI_Catalog_Mgr : Read NS descriptor ETSI_Catalog_Mgr -> Catalog_DB_Adapter : Return NS descriptor Catalog_DB_Adapter -> NS_LCMGR : Return NS descriptor NS_LCMGR --> NS_LCMGR : Parse & Decompose NS descriptor NS_LCMGR --> NS_LCMGR : Instantiate NS NS_LCMGR --> NS_LCMGR : Instantiate VLs between VNFs NS_LCMGR -> ResourceMultiCloud_MgrAdapter : Create Network ResourceMultiCloud_MgrAdapter -> VIM : Create Network VIM -> ResourceMultiCloud_MgrAdapter : Response for Create Network ResourceMultiCloud_MgrAdapter -> NS_LCMGR : Response for Create Network NS_LCMGR -> Resource_Mgr : Create VL record Resource_Mgr -> Inventory_DB_Adapter : Create VL record Inventory_DB_Adapter -> AAI : Create VL record AAI --> AAI : Create VL record AAI -> Inventory_DB_Adapter : Response for Create VL record Inventory_DB_Adapter -> Resource_Mgr : Response for Create VL record Resource_Mgr -> NS_LCMGR : Response for Create VL record NS_LCMGR -> ResourceRIM_Mgr : Request Homing Information\nfor Network Service ResourceRIM_Mgr -> OOF : Requests Homing Information\nfor Network Service OOF -> ResourceRIM_MgrMGR : Response with Homing Information\nfor Network Service ResourceRIM_Mgr --> ResourceRIM_Mgr : Persist Homing Information\nfor Network Service loop Go through each VNF NS_LCMGR -> SOL003_Adapter : Request for Instantiate VNF SOL003_Adapter -> VNFM : Request for Instantiate VNF VNFM -> SOL003_Adapter : Request Grant VNF resource SOL003_Adapter -> NS_LCMGR : Request Grant VNF resource NS_LCMGR -> ResourceRIM_Mgr : Request Homing Information ResourceRIM_Mgr -> NS_LCMGR : Return with Homing Information\nfor the VNF NS_LCMGR --> NS_LCMGR : Make a Grant decision NS_LCMGR -> SOL003_Adapter : Return with a Grant decision SOL003_Adapter -> VNFM: Return with a Grant decision VNFM --> VNFM : Instantiate VNF VNFM -> SOL003_Adapter : Notify the changes\nof VNF/VDUs/CPs SOL003_Adapter -> NS_LCMGR : Notify the changes\nof VNF/VUD/CPs end NS_LCMGR -> SOL005_NBI : Send\nnsLcmOperationOccurrenceNotification SOL005_NBI -> SOL005_Adapter : Send\nnsLcmOperationOccurrenceNotification SOL005_Adapter -> SO : Send\nnsLcmOperationOccurrenceNotification end @enduml |
Create NS
Request
CreateNsRequest
- nsdId
- nsName
- nsDescription
Response
NsInstance
- see NsInstance from ETSI GS NFV-SOL 005 v2.7.1
NS LCM Manager Design
VFC design
get nsdId, nsName and nsDescription, context (globalCustomerId, serivceType) parameters
- get a ns package by the given nsdId from ETSI Catalog Manager
- check if ns instance exists from the NFVO_NSINST database table
- if it exists, log it exists
- create an ns instance id (uuid) and store it with other nsd info, status (NOT_INSTANTIATED) to NFVO_NSINST database table
- create an ns instance record (service-instance-id, service-instance-name, service-type, service-role) in AAI
- get nsInstance from GetNSInfoService
- return 201 Created with the NsInstance
- Send NsIdentifierCreationNotification
...
The following diagram depicts the Create NS procedure.
Instantiate NS
Request
InstantiateRequest
Response
201 Accepted
NsLcmOperationOccurrenceNotification (Start/Processing/Completed)
NS LCM Manager Design
VFC Design
- Get an ns instance id from the parameter
- create a job for the ns instance id
- create an occ id for the ns instance id
- Update the ns instance id row of the NFVO_NSINST database table for status (= INSTANTIATING)
- get a ns instance data from the NFVO_NSINST for the ns instance id
- get and store additional Parameters for NS
- get an VIM id from the cloud owner and cloud region parameters
- get an VNF VIM from he location constraints
- set the job status with 'Start Query NSD'
- get and parse a nsd for the ns package id
- modify nsd state
- get VNF list from the nsd
- for each VNF,
- get vnfd_id, vnfm_type, vimId, s_vimId (with "cloud_owner"_"cloud_regionid")
- select VNFM by leveraging AAI ESR
- store VNF pararms in collection, with vnf info including vnfmInstanceId
- set vl vim id
- for each VNF
- if VNF has dependencies, for each dependency
- add VNF properties and id into vl_vnf array
- if VNF has dependencies, for each dependency
- for each VLs
- get vnfdId and vimId
- add vimId into VL array
- for each VNF
- update NFVO_NSINST with the nsd model
- get PNF parameters
- get VNF parameters (from VNF params above)
- set up Plan Input with job_id, ns_inst_id, tosca plan, additional NS params, VNF params, PNF params)
- start workflows with the job_id, ns_inst, plan_input, occ_id)
- get service template id from ETSI Catalog Manager
- get process id from ETSI Catalog Manager
- workflow run with data (process id, params = plan input)
- createVL
- createVNF
- createSFC (Service Function Chain)
...
The following diagram depicts the Instantiate NS.
Terminate / Delete NS
The following diagram depicts the Terminate / Delete NS.
...
PlantUML Macro | ||
---|---|---|
| ||
@startuml participant SO participant SOL005_Adapter participant SOL005_NBI participant NS_LCMGR participant ResourceRIM_Mgr participant MultiCloud_Adapter participant OOF participant Catalog_DB_Adapter participant ETSI_Catalog_Mgr participant Inventory_DB_Adapter participant AAI participant SOL003_Adapter participant VIM participant VNFM autonumber group Terminate NS SO -> SOL005_Adapter : Terminate NS SOL005_Adapter -> SOL005_NBI : Terminate NS SOL005_NBI -> NS_LCMGR : Terminate NS NS_LCMGR -> Resource_Mgr : Query all instances related to NS Resource_Mgr -> Inventory_DB_Adapter : Query all instances related to NS Inventory_DB_Adapter -> AAI : Query all instances related to NS AAI -> Inventory_DB_Adapter : Return all instances for NS Inventory_DB_Adapter -> Resource_Mgr : Return all instances for NS Resource_Mgr -> NS_LCMGR : Return all instances for NS NS_LCMGR --> NS_LCMGR : Start Delete NS instances NS_LCMGR -> ResourceRIM_Mgr : Request Homing Information\nfor Network Service ResourceRIM_Mgr -> OOF : Requests Homing Information\nfor Network Service OOF -> ResourceRIM_Mgr : Response with Homing Information\nfor Network Service ResourceRIM_Mgr --> ResourceRIM_Mgr : Persist Homing Information\nfor Network Service loop Go thru each VNF NS_LCMGR -> SOL003_Adapter : Delete VNF SOL003_Adapter -> VNFM : Delete VNF VNFM -> SOL003_Adapter : Request Grant resource for deletion SOL003_Adapter -> NS_LCMGR : Request Grant resource for deletion VNFM -> SOL003_Adapter : Request Grant VNF resource SOL003_Adapter -> NS_LCMGR : Request Grant VNF resource NS_LCMGR -> Resource_Mgr RIM_Mgr : Request Homing Information RIM_Mgr -> OOF : Request Homing Information OOF -> RIM_Mgr : Return with Homing Information\nfor the VNF ResourceRIM_Mgr -> NS_LCMGR : Return with Homing Information\nfor the VNF NS_LCMGR --> NS_LCMGR : Make a Grant decision NS_LCMGR -> SOL003_Adapter : Return with a Grant decision SOL003_Adapter -> VNFM: Return with a Grant decision VNFM --> VNFM : Delete Resources VNFM -> SOL003_Adapter : Notify changes of VNF/VDUs/CPs SOL003_Adapter -> NS_LCMGR : Notify changes of VNF/VDUs/CPs NS_LCMGR -> Resource_Mgr : Update records for Delete VNF/VDUs/CPs Resource_Mgr -> Inventory_DB_Adapter : Update records for Delete VNF/VDUs/CPs Inventory_DB_Adapter -> AAI : Update records for Delete VNF/VDUs/CPs AAI --> AAI : Update records for Delete VNF/VDUs/CPs AAI -> Inventory_DB_Adapter : Return with Delete VNF/VDUs/CPs Inventory_DB_Adapter -> Resource_Mgr : Return with Delete VNF/VDUs/CPs Resource_Mgr -> NS_LCMGR : Return with Delete VNF/VDUs/CPs end NS_LCMGR -> ResourceMultiCloud_MgrAdapter : Request for Delete VLs (if needed) ResourceMultiCloud_MgrAdapter -> VIM : Request for Delete VLs VIM --> VIM : Delete VLs NS_LCMGR -> Resource_Mgr : Update records for Delete VLs Resource_Mgr -> Inventory_DB_Adapter : Update records for Delete VLs Inventory_DB_Adapter -> AAI : Update records for Delete VLs AAI --> AAI : Update records for Delete VLs AAI -> Inventory_DB_Adapter : Return with Delete VLs Inventory_DB_Adapter -> Resource_Mgr : Return with Delete VLs Resource_Mgr -> NS_LCMGR : Return with Delete VLs NS_LCMGR -> SOL005_NBI : Send\nnsLcmOperationOccurrenceNotification SOL005_NBI -> SOL005_Adapter : Send\nnsLcmOperationOccurrenceNotification SOL005_Adapter -> SO : Send\nnsLcmOperationOccurrenceNotification end @enduml |
Terminate NS
Request
TerminateNsRequest
- terminateTime
Response
201 Accepted
NsLcmOperationOccurrenceNotification (Start/Processing/Completed)
NS LCM Manager Design
VFC Design
- Get an ns_inst_d, job_id and request_data from the parameters
- if there no matching ns_inst_id from the NFVO_NSINT database table, consider there is nothing to terminate, and return
- set job status as "Starting terminate..."
- update the ns_inst_id row from the NFVO_NSINST database table with the status = TERMINATING
- cancel SFC list
- get sfc inst array
- for each sfc inst
- DELETE /api/nslcm/v1/ns/sfcs/{instId}
- cancel VNF list
- get vnf inst list array from NFVO_NFINST
- for each vnf inst
- delete_vnf (nf_instid)
- POST /api/nslcm/v1/ns/terminateVnf/{instId}
- delete_vnf (nf_instid)
- for each vnf inst
- get vnf inst list array from NFVO_NFINST
- cancel VL list
- get VL Inst array
- for each VL inst
- DELETE /api/nslcm/v1/ns/vls/{instId}
- cancel PNF list
- get pnf inst array
- for each pnf inst
- DELETE /api/nslcm/v1/pnfs/{instId}
- modify the ns_inst_id row state from the NFVO_NSINST database table
- modify NFVO_NSINST status = NOT_INSTANTIATED
- set job status = NS terminate ends
- Update NsLcmOpOCC to COMPLETED
- Send nsLcmOperationOccurrenceNotification
...
The following diagram depicts the Terminate NS.
Delete NS
Request
- No; just parameter nsInstanceId
Response
- 204 No Content
Notification
- Send NsIdentifierDeletionNotification
NS LCM Manager Design
VFC_Design
- get ns_inst_id
- delete ns instance in AAI
- get ns_instances from NFVO_NSINST database table
- invoke delete_ns_aai with global_customer_id, service_type, ns_inst_id, resource_version
- formulate the resource url with parameters
- call_aaI (resource, "DELETE")
- delete ns_inst_id row from the NFVO_NSINST database table
- delete ns_inst_id row from the NFVO_INPutParamMapping database table
- delete ns_inst_id row from the DefPkgMapping database table
- delete ns_inst_id row from the ServiceBaseInfo database table
- return 204 No Content
- Send NsIdentifierDeletionNotification
...
The following diagram depicts the Delete NS.
Subscription NS
PlantUML Macro | ||
---|---|---|
| ||
@startuml participant SO participant SOL005_Adapter participant SOL005_NBI participant NS_LCMGR autonumber group Create Subscription NS SO -> SOL005_Adapter : Create Subscription NS SOL005_Adapter -> SOL005_NBI : Create Subscription NS SOL005_NBI -> NS_LCMGR : Create Subscription NS NS_LCMGR --> NS_LCMGR : Check Subscription Filter NS_LCMGR -> NS_LCMGR : Test subscription\nnotification (callbackUrl) endpoint NS_LCMGR --> NS_LCMGR : Save Subscription to Database NS_LCMGR -> SOL005_NBI : Response with LccnSubscription end group Delete Subscription NS SO -> SOL005_Adapter : Delete Subscription NS SOL005_Adapter -> SOL005_NBI : Delete Subscription NS SOL005_NBI -> NS_LCMGR : Delete Subscription NS NS_LCMGR --> NS_LCMGR : Delete Subscription NS NS_LCMGR -> SOL005_NBI : Response with 204 No Content SOL005_NBI -> SOL005_Adapter : Response for Delete Subscription NS SOL005_Adapter -> SO : Response for Delete Subscription NS end @enduml |
Subscription NS
Request
- LccnSubscriptionRequest
- subscriptionId. for GET and DELETE
Response
- 204 No Content
- 201 Created (LccnSubscription)
- 200 OK (LccnSubscription[])
- 200 OK (LccnSubscription)
Subscription Filter Request
The following table describes the Subscription filter request.
attribute name | data type | cardinality | description |
---|---|---|---|
nsdIds | Identifier | 0..N | If present, match NS instances that were created based on an NSD identified by one of the nsdId values listed in this attribute. See note 1. |
vnfdIds | Identifier | 0..N | If present, match NS instances that contain VNF instances that were created based on a VNFD identified by one of the vnfdId values listed in this attribute. See note 1. |
pnfdIds | Identifier | 0..N | If present, match NS instances that contain PNFs that are represented by a PNFD identified by one of the pnfdId values listed in this attribute. See note 1. |
nsInstanceId | Identifier | 0..N | If present, match NS instances with an instance identifier listed in this attribute. See note 2. |
nsInstanceNames | String | 0..N | If present, match NS instances with an NS Instance Name listed in this attribute. See note 2. |
NOTE 1: The attributes "nsdIds", "vnfdIds" and "pnfdIds" are alternatives to reference to NS instances that are created based on certain NSDs, or contain VNF instances that are based on certain VNFDs, or contain PNFs that are based on certain PNFDs in a filter. They should not be used together in the same filter instance, but one alternative should be chosen. NOTE 2: The attributes "nsInstanceIds" and "nsInstanceNames" are alternatives to reference to particular NS Instances in a filter. They should not be used both in the same filter instance, but one alternative should be chosen. |
NS LCM Manager Design
VFC Design
- create subscription id
- check callback Uri
- check filter types
- save subscription request to database
- return response with subscription
...
The following diagram depicts the Subscription NS.