5.1. ONAP TOSCA VNFD Requirements
5.1.1. Introduction
The following sub-clauses describe the numbered requirements for VNF Descriptor (VNFD) or in other words the VNF Service Template based on the most updated draft of ETSI NFV-SOL001 standard for VNF Descriptor. The ETSI standard specifies a NFV specific data model using TOSCA/YAML data model constructs specified in TOSCA Simple Profile in YAML v.1.2.
The requirements for TOSCA/CSAR based VNF package are described as well and they are based on ETSI NFV-SOL004 standard.
5.1.2. References
- ETSI GS NFV-SOL001 draft v.0.10.0
- TOSCA SIMPLE Profile in YAML v.1.2
- ETSI GS NFV-SOL004 v.2.5.1
5.1.3. Intended Audience
This document is intended for developers of VNF TOSCA templates that will be orchestrated by ONAP. The document is also applicable for creating RFP’s with the list of required TOSCA/YAML features supported by VNF provider.
5.1.4. Scope and Overview
5.1.5. VNF CSAR Package
CSAR Overview
TOSCA YAML CSAR file is an archive file using the ZIP file format whose structure complies with the TOSCA Simple Profile YAML v1.2 Specification. The CSAR file may have one of the two following structures:
- CSAR containing a TOSCA-Metadata directory, which includes the TOSCA.meta metadata file providing an entry information for processing a CSAR file.
- CSAR containing a single yaml (.yml or .yaml) file at the root of the archive. The yaml file is a TOSCA definition template that contains a metadata section with template_name and template_version metadata. This file is the CSAR Entry-Definitions file.
VNF Package Structure and Format
R-XXXXX: The VNF package MUST be arranged as a CSAR archive as specified in TOSCA Simple Profile in YAML 1.2.
R-XXXXX: The VNF package provided by a VNF vendor MAY be either with TOSCA-Metadata directory (CSAR Option 1) or without TOSCA-Metadata directory (CSAR Option 2) as specified in ETSI GS NFV-SOL004. On-boarding entity (ONAP SDC) must support both options.
Note: SDC supports only the CSAR Option 1 in Casablanca. The Option 2 will be considered in future ONAP releases,
VNF Package Contents
R-77707: The VNF package MUST contain all standard artifacts as specified in ETSI GS NFV-SOL004 including Manifest file, VNFD (or Main TOSCA/YAML based Service Template) and other optional artifacts. CSAR Manifest file as per SOL004 - for example ROOT\ MainServiceTemplate.mf
R-66070: The VNF package Manifest file MUST contain: VNF package meta-data, a list of all artifacts (both internal and external) entry’s including their respected URI’s, an algorithm to calculate a digest and a digest result calculated on the content of each artifacts, as specified in ETSI GS NFV-SOL004. The VNF Package MUST include VNF Identification Data to uniquely identify the resource for a given VNF provider. The identification data must include: an identifier for the VNF, the name of the VNF as was given by the VNF provider, VNF description, VNF provider, and version.
R-04298: The VNF provider MUST provide their testing scripts to support testing as specified in ETSI NFV-SOL004 - Testing directory in CSAR
R-26881: The VNF provider MUST provide the binaries and images needed to instantiate the VNF (VNF and VNFC images) either as:
- Local artifact in CSAR: ROOT\Artifacts\ VNF_Image.bin
- externally referred (by URI) artifact in Manifest file (also may be referred by VNF Descriptor)
Note: Currently , ONAP doesn't have the capability of Image management, we upload the image into VIM/VNFM manually.
R-40827: The VNF provider MUST enumerate all of the open source licenses their VNF(s) incorporate. CSAR License directory as per ETSI SOL004
for example ROOT\Licenses\ License_term.txt
VNF Package Authenticity
tbd.
VNF Package ONAP Extensions
- TOACA data type extension tosca.datatypes.nfv.injectFile is used for vCPE use case
- ONAP extensions for VNF package that is currently proposed for Dublin release is VES extension described below.
5.1.6. TOSCA Introduction
5.1.7. TOSCA Modeling Principles & Data Model
5.1.8. TOSCA VNF Descriptor
General
R-XXXXX: The VNF Descriptor (VNFD) provided by VNF vendor MUST comply with TOSCA/YAML based Service template for VNF descriptor specified in ETSI NFV-SOL001.
Note: As the ETSI NFV-SOL001 is work in progress the below tables summarizes the TOSCA definitions agreed to be part of current version of NFV profile and that VNFD MUST comply with in ONAP Release 2+ Requirements.
R-XXXXX: The VNFD MUST comply with ETSI GS NFV-SOL001 document endorsing the above mentioned NFV Profile and maintaining the gaps with the requirements specified in ETSI GS NFV-IFA011 standard.
R-XXXXX: The VNFD MAY include TOSCA/YAML definitions that are not part of NFV Profile. If provided, these definitions MUST comply with TOSCA Simple Profile in YAML v.1.2.
R-35851: A VNFD is a deployment template which describes a VNF in terms of deployment and operational behavior requirements. It contains virtualized resources (nodes) requirements as well as connectivity and interfaces requirements and MUST comply with info elements specified in ETSI GS NFV-IFA 011. The main parts of the VNFD are the following:
- VNF topology: it is modeled in a cloud agnostic way using virtualized containers and their connectivity. Virtual Deployment Units (VDU) describe the capabilities of the virtualized containers, such as virtual CPU, RAM, disks; their connectivity is modeled with VDU Connection Point Descriptors (VduCpd), Virtual Link Descriptors (VnfVld) and VNF External Connection Point Descriptors (VnfExternalCpd);
- VNF deployment aspects: they are described in one or more deployment flavours, including configurable parameters, instantiation levels, placement constraints (affinity / antiaffinity), minimum and maximum VDU instance numbers. Horizontal scaling is modeled with scaling aspects and the respective scaling levels in the deployment flavours;
Note: The deployment aspects (deployment flavour etc.) are postponed for future ONAP releases.
- VNF lifecycle management (LCM) operations: describes the LCM operations supported per deployment flavour, and their input parameters; Note, that the actual LCM implementation resides in a different layer, namely referring to additional template artifacts.
R-35851:: The following table defines the major TOSCA Types specified in ETSI NFV-SOL001 standard draft. The VNFD provided by a VNF vendor MUST comply with the below definitions:
Info Element From ETSI GS NFV-IFA 011 | Implementation in TOSCA NFV Profile and Endorsement in ETSI GS NFV-SOL001 | Derived from | Description | Supported in ONAP Casablanca release |
VNFD | tosca.nodes.nfv.VNF | tosca.nodes.Root | TOSCA main service template and describes a VNF in terms of deployment and operational behavior requirements, connectivity, interfaces and virtualized resource requirements | Y |
VDU Compute Descriptor R-09467 | tosca.nodes.nfv.VDU.Compute | tosca.nodes.Root | Represents VNF-C (or VM) with deployment flavours. Represents the virtual compute part of a VDU entity which it mainly describes the deployment and operational behavior of a VNFC Note: Currently not directly supported but allowed via tosca.capabilities.nfv.VirtualCompute | Y but different way |
VDU VirtualCompute Descriptor | tosca.capabilities.nfv.VirtualCompute | tosca.capabilities.Root | Represents the virtual compute part of a VDU entity which it mainly describes the deployment and operational behavior of a VNFC | Y |
VDU VirtualStorage Descriptor R-09467 | tosca.nodes.nfv.VDU.VirtualStorage | tosca.nodes.Root | Represents a virtual storage entity which it describes the deployment and operational behavior of a virtual storage resources Note: This node type is split into three in latest SOL001 draft how the data model uses an older version for Casablanca release | Y |
Cpd - Connection Point Descriptor | tosca.nodes.nfv.Cp | tosca.nodes.Root | Represents network connectivity to a compute resource or a VL - abstract type used as parent for the various Cpd types. | Y |
VduCpd R-35851 | tosca.nodes.nfv.VduCp | tosca.nodes.nfv.Cp | Represents a type of TOSCA Cpd node and describes network connectivity between a VNFC instance (based on this VDU) and an internal VL | Y |
VnfVirtualLinkDesc R-35851 | tosca.nodes.nfv.VnfVirtualLink | tosca.nodes.Root | Node type represents a logical internal virtual link | Y |
VnfExtCpd (External Connection Point) R-35851 | tosca.nodes.nfv.VnfExtCp | tosca.nodes.nfv.Cp | Represents a logical external connection point, exposed by this VNF enabling connecting with Virtual Link, | N |
SwImageDesc R-02454 | tosca.artifacts.nfv.SwImage | tosca.artifacts.Deployment.Image | Artifact type describes the software image which is directly loaded on the Virtualisation container of the VDU or is to be loaded on a virtual storage resource Note: Currently not supported in Casablanca release as well as SW image artifact in CSAR | N |
DeploymentFlavour VnfDf info element R-41215 | tosca.capabilities.nfv.DeploymentFlavour | tosca.capabilities.Root | Note: Current ONAP release support a single deployment flavour | N |
Scaling Aspect R-96634 The VNF provider MUST describe scaling capabilities to manage scaling characteristics of the VNF. | tosca.datatypes.nfv.ScalingAspect | tosca.datatypes.Root | TBD in ETSI NFV-SOL001 | N |
Data Types
R-XXXXX: The below table includes the data types used by NFV node and is based on TOSCA/YAML constructs specified in draft GS NFV-SOL 001. The node data definitions/attributes used in VNFD MUST comply with the below table.
Info Element From ETSI GS NFV-IFA 011 | Implementation in ETSI NFV-SOL001 | Derived from | Description | Supported in ONAP Casablanca release |
l2AddressData | tosca.datatype.nfv.L2AddressData | tosca.datatypes.Root | Describes the information on the MAC addresses to be assigned to the connection point(s) instantiated from the parent Connection Point Descriptor | Y |
L3AddressData | tosca.datatypes.nfv.L3AddressData | tosca.datatypes.Root | A complex TOSCA data type describe L3AddressData information element, it provides the information on the IP addresses to be assigned to the connection point instantiated from the parent Connection Point Descriptor | Y |
AddressData | tosca.datatypes.nfv.AddressData | tosca.datatypes.Root | A complex TOSCA data type describe AddressData information elemen, it provides information on the addresses to be assigned to the connection point(s) instantiated from a Connection Point | Y |
VirtualNetworkInterfaceRequirements | tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements | tosca.datatypes.Root | A complex TOSCA data type describe VirtualNetworkInterfaceRequirements information element, it provides the information to specify requirements on a virtual network interface realizing the CPs instantiated from this CPD | Y |
ConnectivityType | tosca.datatypes.nfv.ConnectivityType | tosca.datatypes.Root | A complex TOSCA data type used to describe ConnectivityType information element | Y |
RequestedAdditionalCapabilityData | tosca.datatypes.nfv.RequestedAdditionalCapability | tosca.datatypes.Root | Describes additional capability for a particular VDU e.g. acceleration | Y |
VirtualMemoryData | tosca.datatypes.nfv.VirtualMemory | tosca.datatypes.Root | Describes virtual memory for virtualized compute descriptor | Y |
VirtualCpuData | tosca.datatypes.nfv.VirtualCpu | tosca.datatypes.Root | Describes virtual CPU (s) for virtualized compute descriptor | Y |
VirtualCpuPinning | tosca.datatypes.nfv.VirtualCpuPinning | tosca.datatypes.Root | Describes CPU pinning configuration for a particular CPU | Y |
VnfcConfigurableProperties | tosca.datatypes.nfv.VnfcConfigurableProperties | tosca.datatypes.Root | Describes additional configurable properties of a VNFC | Y |
VduProfile | tosca.datatypes.nfv.VduProfile | tosca.datatypes.Root | Describes additional instantiation data for a given VDU used in the a specific deployment flavour Note: Deployment flavour is not supported in Casablanca release | N |
VirtualLinkProfile | tosca.datatypes.nfv.VlProfile | tosca.datatypes.Root | Describes additional instantiation data for a given VL used in the a specific deployment flavour Note: Deployment flavour is not supported in Casablanca release | N |
InstantiationLevel | tosca.datatypes.nfv.InstantiationLevel | tosca.datatypes.Root | Describes a given level of resources to be instantiated within a deployment flavour in term of the number VNFC instances to be created from each VDU Note: Deployment flavour is not supported in Casablanca release | N |
VduLevel | tosca.datatypes.nfv.VduLevel | tosca.datatypes.Root | Indicates for a given VDU in a given level the number of instances to deploy | Y |
ScaleInfo | tosca.datatypes.nfv.ScaleInfo | tosca.datatypes.Root | Indicates for a given Scaling Aspect the corresponding Scaling Level | Y |
Inject File | tosca.datatypes.nfv.injectFile | tosca.datatypes.Root | Note: ONAP extension used for vCPE use case | Y |
Scaling Aspect | tosca.datatypes.nfv.ScalingAspect | tosca.datatypes.Root | Y | |
Link Bit Rate Requirements | tosca.datatypes.nfv.LinkBitRateRequirements | tosca.datatypes.Root | Y | |
Quality of service data (loss ratio etc.) | tosca.datatypes.nfv.Qos | tosca.datatypes.Root | Y | |
Connection point protocol | tosca.datatypes.nfv.CpProtocolData | tosca.datatypes.Root | Y | |
VNF Configurable Properties | tosca.datatypes.nfv.VnfConfigurableProperties | tosca.datatypes.Root | Y | |
VNF Additional Configurable Properties | tosca.datatypes.nfv.VnfAdditionalConfigurableProperties | tosca.datatypes.Root | Y? | |
VnfInfo Modifiable Attributes | tosca.datatypes.nfv.VnfInfoModifiableAttributes | tosca.datatypes.Root | Y | |
VnfInfo Modifiable Attributes Extension | tosca.datatypes.nfv.VnfInfoModifiableAttributesExtensions | tosca.datatypes.Root | Y | |
VnfInfo Modifiable Attributes Metadata | tosca.datatypes.nfv.VnfInfoModifiableAttributesMetadata | tosca.datatypes.Root | Y |
R-XXXXX: The below table describes the data types used for LCM configuration and is based on TOSCA constructs specified in draft GS NFV-SOL 001. The LCM configuration data elements used in VNFD MUST comply with the below table.
Info Element From ETSI GS NFV-IFA 011 | Implementation in ETSI NFV-SOL001 | Derived from | Description | Supported in ONAP Casablanca release |
VnfLcmOperationsConfiguration | tosca.datatypes.nfv.VnfLcmOperationsConfiguration | tosca.datatypes.Root | Represents information to configure lifecycle management operations. Each VNF LCM operation configuration represent as a container for all attributes that effect the invocation of the VNF Lifecycle Management operations – see below per LCM operation | Y |
InstantiateVnfOpConfig | tosca.datatypes.nfv.VnfInstantiateOperationConfiguration | tosca.datatypes.Root | Represents information that affect the invocation of the InstantiateVnf operation | Y |
ScaleVnfOpConfig | tosca.datatypes.nfv.VnfScaleOperationConfiguration | tosca.datatypes.Root | Represents information that affect the invocation of the ScaleVnf operation | Y |
ScaleVnfToLevelOpConfig | tosca.datatypes.nfv.VnfScaleToLevelOperationConfiguration | tosca.datatypes.Root | Represents information that affect the invocation of the ScaleVnfToLevel operation | Y |
HealVnfOpConfig | tosca.datatypes.nfv.VnfHealOperationConfiguration | tosca.datatypes.Root | Represents information that affect the invocation of the HealVnf operation | Y |
TerminateVnfOpConfig | tosca.datatypes.nfv.VnfTerminateOperationConfiguration | tosca.datatypes.Root | Represents information that affect the invocation of the TerminateVnf | Y |
OperateVnfOpConfig | tosca.datatypes.nfv.VnfOperateOperationConfiguration | tosca.datatypes.Root | Represents information that affect the invocation of the OperateVnf operation | Y |
ChangeVnfFlavourOpConfig | tosca.datatypes.nfv.VnfChangeFlavourOperationConfiguration | tosca.datatypes.Root | Defines attributes for invocation of ChangeVnfFlavour operation | N |
ChangeExtVnfConnectivityOpConfig | tosca.datatypes.nfv.VnfExtConnectivityOperationConfiguration | tosca.datatypes.Root | Defines attributes for invocation of ChangeExtVnfConnectivty operation Note: External VNF connectivity is postponed to future ONAP releases | N |
Artifact Types
No artifact type is currently supported in ONAP.
Capability Types
R-XXXXX: The VNFD provided by VNF vendor may use the below described TOSCA capabilities. An on-boarding entity (ONAP SDC) MUST support them.
tosca.capabilities.nfv.VirtualBindable
A node type that includes the VirtualBindable capability indicates that it can be pointed by tosca.relationships.nfv.VirtualBindsTo relationship type.
tosca.capabilities.nfv.VirtualLinkable
A node type that includes the VirtualLinkable capability indicates that it can be pointed by tosca.relationships.nfv.VirtualLinksTo relationship
tosca.capabilities.nfv.ExtVirtualLinkable
A node type that includes the ExtVirtualLinkable capability indicates that it can be pointed by tosca.relationships.nfv.VirtualLinksTo relationship
Note: This capability type is used in Casablanca how it does not exist in the last SOL001 draft
tosca.capabilities.nfv.VirtualCompute and tosca.capabilities.nfv.VirtualStorage includes flavours of VDU
Relationship Types
R-XXXXX: The VNFD provided by VNF vendor may use the below described TOSCA relationships. An on-boarding entity (ONAP SDC) MUST support them.
tosca.relationships.nfv.VirtualBindsTo
This relationship type represents an association relationship between VDU and CP node types.
tosca.relationships.nfv.VirtualLinksTo
This relationship type represents an association relationship between the VduCpd’s and VirtualLinkDesc node types.
Interface Types
R-XXXXX: The VNFD provided by VNF vendor may use the below described TOSCA interface types. An on-boarding entity (ONAP SDC) MUST support them.
tosca.interfaces.nfv.vnf.lifecycle.Nfv supports LCM operations
5.1.9. HPA Requirements
(existing text remains)
5.1.10. VES Requirements
Note: ONAP proprietary extensions in ETSI SOL004 standards for VES support in CSAR package need to be manually loaded in R3 (Casablanca) for VNF and PNFs. Platform support will be developed for this in upcoming releases.
17 Comments
Weitao Gao
Hi Andrei?
After I reviewed this page, i don't think this page is the scope of VNFSDK. Seems like you want to propose the new requirements? could you move this page into VNFRequirement project page for consistence.
BR
Victor
Andrei Kojukhov
Hi Victor,
In what part the requirements do not comply with Casablanca release?
VNF-D requirements are in sync with ONAP R2+ Design-Time Resource DM clean version
CSAR requirements are in sync with what we agreed for VNF package in VNF Package Requirement Testability for Casablanca.
Weitao Gao
Andrei,
I'm not saying these requirements do not comply with C release. because i think this is Vnfreqts project and modeling subcommittee scope. my suggestion is to move this page into vnfreqts project wiki page or modeling subcommittee wiki page cause everything is about requirements.
Victor
Andrei Kojukhov
Hi Victor,
Yes. The intent is definitely that this page will be moved to VNF Requirements read the doc wiki page.
Andrei
Andy Mayer
Weitao Gao, Andrei Kojukhov: We are working these VNF Requirements jointly with the VNF Requirements project. This page is a working draft space that we are refining during the VNF SDK Package Modeling call. We are planning on moving it to the VNF Requirements space once the requirements are refined and reviewed by the VNF SDK team.
Trevor Lovett
With regards to "|R-XXXXX: The VNF package provided by a VNF vendor MAY be either with TOSCA-Metadata directory (CSAR Option 1) or without TOSCA-Metadata directory (CSAR Option 2) as specified in ETSI GS NFV-SOL004. On-boarding entity (ONAP SDC) must support both options."
It's important to note that the audience is the VNF provider and the document serves as a guide for provider. We do not include requirements or direction for the ONAP components in the document as we did with SDC here. Instead we need to document what SDC supports. If SDC doesn't support one of the models or both, then this would be something we'll need to make a future looking requirement.
Andrei Kojukhov
The initial idea for SDC was to support both options. As we lately discussed with Michael currently (Casablanca release) the SDC supports. only the Option 1. So I agree the Note should be added regarding a future looking requirement.
Andrei Kojukhov
To Weitao Gao comment received by e-mail:
Ok, I reviewed this yesterday evening and I found following issue:
My answers:
(1) I propose putting a note mentioning this feature is not applicable for Casablanca
(3) ChangeVnfFlavourOpConfig and ChangeExtVnfConnectivityOpConfig are already of red color meaning they need more exploration so I propose also adding a note.
(2) is up to VNFReq group to decide
Andrei Kojukhov
As agreed in the NFV modeling call I made the following changes to create a first draft of TOSCA VNFD Requirements for Casablanca
Steven Wright
from the VNFRQTS call on 10/2/18:
existing text under section 5.1.9 should remain.
text under 5.1.10 does not apply for Casablanca - this should be set up as a JIRA for Dublin, and replaced with some forward-looking explanatory text.
Other Proposed requirements with Notes indicating they are not supported until Dublin release ( e.g. package authenticity) should be deleted from here and captured as candidate feature for Dublin in JIRA.
Steven Wright
Steven Wright
Steven Wright
proposed text for 5.1.10 from Ben Cheung
Note: ONAP proprietary extensions in ETSI SOL004 standards for VES support in CSAR package need to be manually loaded in R3 (Casablanca) for VNF and PNFs. Platform support will be developed for this in upcoming releases.
Jessie S Jewitt
Here are my review comments. When I reference SOL001, I mean the version you specified in your reference v0.10.0
Andrei Kojukhov
Hi Jessy, Tks for your review.
My answers respectively:
Jessie S Jewitt
HI Andrei-
1- I don't quite agree. Any "technical spec" that references another spec should put the referenced spec in the "references" section.
3b - Then you should not be stating that you used SOL001 v0.10.0 as a reference. You should use the SOL001 version on which the R2 data model was designed, or else it is very confusing. Actually, looking at R2 DM I can't find it listed which version of SOL001 they conform to.
3d - You didn't address this comment![(smile)](/s/z10khv/8804/xgjkrn/_/images/icons/emoticons/smile.svg)
4a - I probably shouldn't have used the word "artifact". I was referring to some of the TOSCA types that are in the table R-35951, like tosca.datatypes.nfv.VlProfile that should contain a property "virtual_link_protocol_data" which references a list of tosca.datatypes.nfv.VirtualLinkProtocolData, at least according to SOL001 v0.10.0. Again, if you are not in accordance with this spec, please list as a reference the spec that corresponds to your model.
A different example. tosca.capabilites.nfv.VirtualCompute has a property "logical_node" of type tosca.datatypes.nfv.LogicalNodeData. This data type is not included in your supported list, although it is supported in R2.
Thanks!
Jessie
Andrei Kojukhov
Hi Jessie,
The ETSI SOL001 is a future proof standard and we agreed to support it in our VNF DM but for Casablanca only a subset of it is agreed to be used. Even some TOSCA constructs are from older draft releases that I agreed to explicitly mention in notes.
In general our current agreement is to maintain the same text for all ONAP releases and for each release refer a last version of SOL001 draft with explicitly stating the agreed deviations. Anyway the SOL001 is high and we agreed to describe in the requirements list what specific sub-set of constructs are used.
IFA011 is not TOSCA DM and more relevant for IM and I showed it only for information similar to how it is presented in SOL001. Anybody wants to figure out its version can look at the last applicable SOL001 draft. It is not used for VNF-D testability requirements.
Your 3d statement is correct however we do not use a Deployment flavour feature in Casablanca.
Your 4a is not quite clear to me. By the way a "logical_node" approach was mentioned as deprecated by Alex Vul when he reviewed the text. So I removed it.