Draft
This following is a working draft, and the contents can be changed as needed. The ETSI-based hierarchical orchestration is a concept, and it is not committed for the Guilin release.
This proposal conforms to the SOL005 and SOL003 v2.7.1 specifications.
- https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/005/02.07.01_60/gs_NFV-SOL005v020701p.pdf
- https://www.etsi.org/deliver/etsi_gs/NFV-SOL/001_099/003/02.06.01_60/gs_NFV-SOL003v020601p.pdf
Architecture
NFVO Architecture & Functions
The following diagram depicts the NFVO component architecture
Requirements For Guilin
ONAP SO NFVO
- ONAP SO NFVO provides an 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 and VNF-FG
- VLs
- VNF-FGs
- 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
- 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 the lifecycle of Network Service (NS)
- 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
NFVO Microservice Plugin Framework
- Provides the NFVO function Microservice plugin framework for supporting:
- 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 Adapter
- Camunda Workflow Engine
- NS Workflows and Logic
- Resource Manager
- K8S Client
- Configuration Manager
- MultiCloud Adapter
- Inventory DB Adapter
- Notification Manager
- FM/PM Event Manager
- Substitution of existing function plugins
- Registration of a new substitution Microservice with version control (leverage a mechanism like AAI ESR/MSR/API Fabric/MSB - 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
- Default function plugins support (following default plugins will be registered to the Framework; routing will be configured)
SOL005 NBI (API Handler)
- 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 goal
- Heal 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%20jobs/job/NFV%20-%20Network%20Functions%20Virtualisation/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
- Provides Workflow engines (stand-along/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
- 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
TBD
SOL003 Adapter for SVNFMs
- 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 Manager
- 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
Container Image Management (stretch goal)
- Virtualized Resources Information Management
Virtualized Resources Capacity Management
- Virtualized Resources Management
Virtualized Resources Change Management
- Virtualized Resources Reservation Management
Virtualized Resource Quota Management
- Virtualized Resource Performance Management
Virtualized Resource Fault Management
- Network Forwarding Path (NFP) Management
Notification Manager
- Supports NS lifecycle management notification to its clients such as ONAP SO or SOL005 compliant clients
- TBD
FM/PM Manager
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 Manager |
VNF Adapter | Not Applicable (SOL003 Adapter delegates VNF operations to SVNFM) |
K8S Client (PoC) | K8S Client |
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 Handler |
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.
Create NS
Request
CreateNsRequest
- nsdId
- nsName
- nsDescription
Response
NsInstance
- see NsInstance from ETSI GS NFV-SOL 005 v2.7.1
Design
VFC design
- get nsdId, nsName and nsDescription parameter
- 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
- return 201 Created with the NsInstance
- Send NsIdentifierCreationNotification
Proposal
TBD
Instantiate NS
Request
InstantiateRequest
Response
201 Accepted
NsLcmOperationOccurrenceNotification (Start/Processing/Completed)
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
TBD
Terminate / Delete NS
The following diagram depicts the Terminate / Delete NS.
Terminate NS
Request
TerminateNsRequest
- terminateTime
Response
201 Accepted
NsLcmOperationOccurrenceNotification (Start/Processing/Completed)
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
TBD
Delete NS
Request
- No; just parameter nsInstanceId
Response
- 204 No Content
Notification
- Send NsIdentifierDeletionNotification
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
TBD