5.1. ONAP TOSCA VNFD or PNFD Requirements

5.1.1. Introduction

The following sub-clauses describe the numbered requirements for VNF Descriptor (VNFD) and PNF Descriptor (PNFD) or in other words the VNF/PNF Service Template based on the most updated draft of ETSI NFV-SOL001 standard for VNF/PNF 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/PNF package are described as well and they are based on ETSI NFV-SOL004 standard.

5.1.2. References

  1. ETSI GS NFV-SOL001 v.2.5.1
  2. TOSCA SIMPLE Profile in YAML v.1.2
  3. ETSI GS NFV-SOL004 v.2.6.1 + NFV CR NFVSOL(18)000746r3.

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

ONAP implementations of Network Cloud supports TOSCA Templates, also referred to as TOSCA in this document.

ONAP requires the TOSCA Templates to follow a specific format. This document provides the mandatory, recommended, and optional requirements associated with this format.

5.1.5. Overview

The document includes three charters to help the VNF or PNF providers to use the VNF or PNF model design tools and understand the VNF or PNF package structure and VNF or PNF TOSCA templates.

In the ONAP, VNF or PNF Package and VNFD or PNFD template can be designed by manually or via model designer tools. VNF or PNF model designer tools can provide the GUI and CLI tools for the VNF or PNF provider to develop the VNF or PNF Package and VNFD or PNFD template.

The VNF or PNF package structure is align to the NFV TOSCA protocol, and supports CSAR

The VNFD or PNFD and VNF or PNF package are all align to the NFV TOSCA protocol, which supports multiple TOSCA template yaml files, and also supports self-defined node or other extensions.

5.1.6. VNF or PNF CSAR Package

5.1.6.1. 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.

5.1.6.2. VNF Package Structure and Format

Requirement: R-51347
updated: dublin
target: VNF or PNF
keyword: MUST
introduced: casablanca

The VNF or PNF CSAR package MUST be arranged as a CSAR archive as specified in TOSCA Simple Profile in YAML 1.2.

Requirement: R-87234
updated: dublin
target: VNF or PNF
keyword: MUST
introduced: casablanca

The VNF or PNF package provided by a VNF or PNF vendor MUST be with TOSCA-Metadata directory (CSAR Option 1) as specified in ETSI GS NFV-SOL004.

Note: SDC supports only the CSAR Option 1 in Dublin. The Option 2 will be considered in future ONAP releases.

Requirement: R-506221
target: VNF or PNF CSAR PACKAGE
keyword: MUST
introduced: dublin

The VNF or PNF TOSCA CSAR file MUST be a zip file with .csar extension.

5.1.6.3. VNF Package Contents

Requirement: R-10087
updated: dublin
target: VNF or PNF CSAR PACKAGE
keyword: MUST
introduced: casablanca

The VNF or PNF CSAR package MUST include all artifacts required by ETSI GS NFV-SOL004 including Manifest file, VNFD or PNFD (or Main TOSCA/YAML based Service Template) and other optional artifacts.

Requirement: R-01123
updated: dublin
target: VNF or PNF
keyword: MUST
introduced: casablanca

The VNF or PNF package Manifest file MUST contain: VNF or PNF 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.

Requirement: R-21322
target: VNF
keyword: MUST
introduced: casablanca

The VNF provider MUST provide their testing scripts to support testing as specified in ETSI NFV-SOL004 - Testing directory in CSAR

Requirement: R-40820
updated: dublin
target: VNF or PNF TOSCA PACKAGE
keyword: MUST
introduced: casablanca

The VNF or PNF TOSCA PACKAGE 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

Requirement: R-293901
target: VNF or PNF CSAR PACKAGE
keyword: MUST
introduced: dublin

The VNF or PNF CSAR PACKAGE with TOSCA-Metadata MUST include following additional keywords pointing to TOSCA files:

  • ETSI-Entry-Manifest
  • ETSI-Entry-Change-Log

Note: For a CSAR containing a TOSCA-Metadata directory, which includes the TOSCA.meta metadata file. The TOSCA.meta metadata file includes block_0 with the Entry-Definitions keyword pointing to a TOSCA definitions YAML file used as entry for parsing the contents of the overall CSAR archive.

Requirement: R-146092
target: VNF or PNF TOSCA PACKAGE
keyword: MUST
introduced: dublin

If one or more non-MANO artifact(s) is included in the VNF or PNF TOSCA CSAR package, the Manifest file in this CSAR package MUST contain: non-MANO artifact set which MAY contain following ONAP public tag.

  • onap_ves_events: contains VES registration files
  • onap_pm_dictionary: contains the PM dictionary files
  • onap_yang_modules: contains Yang module files for configurations
  • onap_ansible_playbooks: contains any ansible_playbooks
  • onap_others: contains any other non_MANO artifacts, e.g. informational documents
Requirement: R-221914
target: VNF or PNF
keyword: MUST
introduced: dublin

The VNF or PNF package MUST contain a a human-readable change log text file. The Change Log file keeps a history describing any changes in the VNF or PNF package. The Change Log file is kept up to date continuously from the creation of the CSAR package.

Requirement: R-57019
target: PNF CSAR PACKAGE
keyword: MUST
introduced: dublin

The PNF TOSCA CSAR PACKAGE Manifest file MUST start with the PNF package metadata in the form of a name-value pairs. Each pair shall appear on a different line. The name is specified as following:

  • pnfd_provider
  • pnfd_name
  • pnfd_release_date_time
  • pnfd_archive_version
Requirement: R-795126
target: VNF CSAR PACKAGE
keyword: MUST
introduced: dublin

The VNF TOSCA CSAR package Manifest file MUST start with the VNF package metadata in the form of a name-value pairs. Each pair shall appear on a different line. The name is specified as following:

  • vnf_provider_id
  • vnf_product_name
  • vnf_release_date_time
  • vnf_package_version

5.1.6.4. VNF or PNF Package Authenticity and Integrity

VNF or PNF CSAR package shall support a method for authenticity and integrity assurance. According to ETSI SOL004 the onboarding package shall be secured. ETSI SOL004 provides two options:

Option 1 - One Digest for each components of the VNF or PNF package. The table of hashes is included in the manifest file, which is signed with the VNF or PNF provider private key. A signing certificate including the provider’s public key shall be included in the package.

Option 2 - The complete CSAR file shall be digitally signed with the provider private key. The provider delivers one zip file consisting of the CSAR file, a signature file and a certificate file that includes the VNF provider public key.

Dublin release note

  • VNFSDK pre-onboarding validation procedure: - Option 1: specified in ETSI SOL004 is supported. - Option 2: Will be supported in the future releases.
  • SDC onboarding procedure: - Option 1: Will be supported in the future releases. - Option 2: specified in ETSI SOL004 is supported.
Requirement: R-787965
target: VNF or PNF CSAR PACKAGE
keyword: MUST
introduced: dublin

If the VNF or PNF CSAR Package utilizes Option 2 for package security, then the complete CSAR file MUST be digitally signed with the VNF or PNF provider private key. The VNF or PNF provider delivers one zip file consisting of the CSAR file, a signature file and a certificate file that includes the VNF or PNF provider public key. The certificate may also be included in the signature container, if the signature format allows that. The VNF or PNF provider creates a zip file consisting of the CSAR file with .csar extension, signature and certificate files. The signature and certificate files must be siblings of the CSAR file with extensions .cms and .cert respectively.

Requirement: R-130206
target: VNF or PNF CSAR PACKAGE
keyword: MUST
introduced: dublin

If the VNF or PNF CSAR Package utilizes Option 2 for package security, then the complete CSAR file MUST contain a Digest (a.k.a. hash) for each of the components of the VNF or PNF package. The table of hashes is included in the package manifest file, which is signed with the VNF or PNF provider private key. In addition, the VNF or PNF provider MUST include a signing certificate that includes the VNF or PNF provider public key, following a TOSCA pre-defined naming convention and located either at the root of the archive or in a predefined location specified by the TOSCA.meta file with the corresponding entry named “ETSI-Entry-Certificate”.

5.1.6.5. VNF Package ONAP Extensions

  1. TOACA data type extension tosca.datatypes.nfv.injectFile is used for vCPE use case.
  2. ONAP extensions for VNF package that is currently proposed for Dublin release is VES extension described below.

5.1.7. TOSCA Introduction

TOSCA defines a Meta model for defining IT services. This Meta model defines both the structure of a service as well as how to manage it. A Topology Template (also referred to as the topology model of a service) defines the structure of a service. Plans define the process models that are used to create and terminate a service as well as to manage a service during its whole lifetime.

A Topology Template consists of a set of Node Templates and Relationship Templates that together define the topology model of a service as a (not necessarily connected) directed graph. A node in this graph is represented by a Node Template. A Node Template specifies the occurrence of a Node Type as a component of a service. A Node Type defines the properties of such a component (via Node Type Properties) and the operations (via Interfaces) available to manipulate the component. Node Types are defined separately for reuse purposes and a Node Template references a Node Type and adds usage constraints, such as how many times the component can occur.

image1

Figure 1: Structural Elements of Service Template and their Relations

5.1.8. TOSCA Modeling Principles & Data Model

This section describing TOSCA modeling principles and data model for NFV, which shall be based on [TOSCA-1.0] and [TOSCA-Simple-Profile-YAML V1.0], or new type based on ETSI NFV requirements, etc.

5.1.9. TOSCA VNF Descriptor

5.1.9.1. General

Requirement: R-35854
target: VNF
keyword: MUST
introduced: casablanca

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.

Requirement: R-65486
updated: dublin
target: VNF
keyword: MUST
introduced: casablanca

The VNFD MUST comply with ETSI GS NFV-SOL001 specification endorsing the above mentioned NFV Profile and maintaining the gaps with the requirements specified in ETSI GS NFV-IFA011 standard.

Requirement: R-17852
target: VNF
keyword: MAY
introduced: casablanca

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.

Requirement: R-46527
target: VNF
keyword: MUST
introduced: casablanca

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, thatthe actual LCM implementation resides in a different layer, namely referring to additional template artifacts.
Requirement: R-15837
target: VNF
keyword: MUST
introduced: casablanca

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:

TOSCA Definition

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.Root 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 providerMUSTdescribe scaling capabilities to manage scaling characteristics of the VNF.

tosca.datatypes.nfv.ScalingAspect tosca.datatypes.Root TBD in ETSI NFV-SOL001 N

5.1.9.2. Data Types

Requirement: R-54356
target: VNF
keyword: MUST
introduced: casablanca

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.

NFV Data Types
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
Requirement: R-54876
target: VNF
keyword: MUST
introduced: casablanca

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.

LCM Configuration

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

5.1.9.3. Artifact Types

No artifact type is currently supported in ONAP.

5.1.9.4. Capability Types

Requirement: R-67895
target: VNF
keyword: MUST
introduced: casablanca

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

5.1.9.5. Relationship Types

Requirement: R-95321
target: VNF
keyword: MUST
introduced: casablanca

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.

5.1.9.6. Interface Types

Requirement: R-32155
target: VNF
keyword: MUST
introduced: casablanca

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

tosca_definitions_version: tosca_simple_yaml_1_0

description: VNFD TOSCA file demo

imports:

  • TOSCA_definition_nfv_1_0.yaml
  • TOSCA_definition_nfv_ext_1_0.yaml
node_types: tosca.nodes.nfv.VNF.vOpenNAT: derived_from: tosca.nodes.nfv.VNF
requirements: **- **sriov_plane: capability: tosca.capabilities.nfv.VirtualLinkable
node: tosca.nodes.nfv.VnfVirtualLinkDesc
relationship: tosca.relationships.nfv.VirtualLinksTo
 

5.1.10. TOSCA PNF Descriptor

5.1.10.1. General

Requirement: R-24632
target: PNF
keyword: MUST
introduced: dublin

The PNF Descriptor (PNFD) provided by PNF vendor MUST comply with TOSCA/YAML based Service template for PNF descriptor specified in ETSI NFV-SOL001.

5.1.10.2. Data Types

Requirement: R-484843
target: PNF
keyword: MUST
introduced: dublin

The PNFD provided by a PNF vendor MUST comply with the following Data Types as specified in ETSI NFV-SOL001 standard:

  • tosca.datatypes.nfv.CpProtocolData
  • tosca.datatypes.nfv.AddressData
  • tosca.datatypes.nfv.L2AddressData
  • tosca.datatypes.nfv.L3AddressData
  • tosca.datatypes.nfv.LocationInfo
  • tosca.datatypes.nfv.CivicAddressElement

5.1.10.3. Artifact Types

No artifact type is currently supported in ONAP.

5.1.10.4. Capability Types

Requirement: R-177937
target: PNF
keyword: MUST
introduced: dublin

The PNFD provided by a PNF vendor MUST comply with the following Capabilities Types as specified in ETSI NFV-SOL001 standard:

  • tosca.datatypes.nfv.VirtualLinkable

5.1.10.5. Requirements Types

5.1.10.6. Relationship Types

Requirement: R-64064
target: PNF
keyword: MUST
introduced: dublin

The PNFD provided by a PNF vendor MUST comply with the following Relationship Types as specified in ETSI NFV-SOL001 standard:

  • tosca.datatypes.nfv.VirtualLinksTo

5.1.10.7. Interface Types

No interface type is currently supported in ONAP.

5.1.10.8. Node Types

Requirement: R-535009
target: PNF
keyword: MUST
introduced: dublin

The PNFD provided by a PNF vendor MUST comply with the following Node Types as specified in ETSI NFV-SOL001 standard:

  • tosca.nodes.nfv.PNF
  • tosca.nodes.nfv.PnfExtCp
  • tosca.nodes.nfv.Cp

5.1.10.9. Group Types

No group type is currently supported in ONAP.

5.1.10.10. Policy Types

Requirement: R-596064
target: PNF
keyword: MUST
introduced: dublin

The PNFD provided by a PNF vendor MUST comply with the following Policy Types as specified in ETSI NFV-SOL001 standard:

  • tosca.datatypes.nfv.SecurityGroupRule

5.1.11. HPA Requirements

  1. SR-IOV Passthrought

Definitions of SRIOV_Port are necessary if VDU supports SR-IOV. Here is an example.

node\_templates:

vdu\_vNat:

SRIOV\_Port:

attributes:

tosca\_name: SRIOV\_Port

properties:

virtual\_network\_interface\_requirements:

- name: sriov

support\_mandatory: false

description: sriov

requirement:

SRIOV: true

role: root

description: sriov port

layer\_protocol: ipv4

requirements:

- virtual\_binding:

capability: virtual\_binding

node: vdu\_vNat

relationship:

type: tosca.relationships.nfv.VirtualBindsTo

- virtual\_link:

node: tosca.nodes.Root

type: tosca.nodes.nfv.VduCpd

substitution\_mappings:

requirements:

sriov\_plane:

- SRIOV\_Port

- virtual\_link

node\_type: tosca.nodes.nfv.VNF.vOpenNAT
  1. Hugepages

Definitions of mem_page_size as one property shall be added to Properties and set the value to large if one VDU node supports huagepages. Here is an example.

node\_templates:

vdu\_vNat:

Hugepages:

attributes:

tosca\_name: Huge\_pages\_demo

properties:

mem\_page\_size:large
  1. NUMA (CPU/Mem)

Likewise, we shall add definitions of numa to requested_additional_capabilities if we wand VUD nodes to support NUMA. Here is an example.

topology\_template:

node\_templates:

vdu\_vNat:

capabilities:

virtual\_compute:

properties:

virtual\_memory:

numa\_enabled: true

virtual\_mem\_size: 2 GB

requested\_additional\_capabilities:

numa:

support\_mandatory: true

requested\_additional\_capability\_name: numa

target\_performance\_parameters:

hw:numa\_nodes: "2"

hw:numa\_cpus.0: "0,1"

hw:numa\_mem.0: "1024"

hw:numa\_cpus.1: "2,3,4,5"

hw:numa\_mem.1: "1024"
  1. Hyper-Theading

Definitions of Hyper-Theading are necessary as one of requested_additional_capabilities of one VUD node if that node supports Hyper-Theading. Here is an example.

topology\_template:

node\_templates:

vdu\_vNat:

capabilities:

virtual\_compute:

properties:

virtual\_memory:

numa\_enabled: true

virtual\_mem\_size: 2 GB

requested\_additional\_capabilities:

hyper\_threading:

support\_mandatory: true

requested\_additional\_capability\_name: hyper\_threading

target\_performance\_parameters:

hw:cpu\_sockets : "2"

hw:cpu\_threads : "2"

hw:cpu\_cores : "2"

hw:cpu\_threads\_policy: "isolate"
  1. OVS+DPDK

Definitions of ovs_dpdk are necessary as one of requested_additional_capabilities of one VUD node if that node supports dpdk. Here is an example.

topology\_template:

node\_templates:

vdu\_vNat:

capabilities:

virtual\_compute:

properties:

virtual\_memory:

numa\_enabled: true

virtual\_mem\_size: 2 GB

requested\_additional\_capabilities:

ovs\_dpdk:

support\_mandatory: true

requested\_additional\_capability\_name: ovs\_dpdk

target\_performance\_parameters:

sw:ovs\_dpdk: "true"

5.1.12. NFV TOSCA Type Definition

5.1.12.1. tosca.capabilites.nfv.VirtualCompute

This capability is used with the properties specified in ETSI SOL001 draft.

5.1.12.2. tosca.nodes.nfv.VDU.Compute

The NFV Virtualization Deployment Unit (VDU) compute node type represents a VDU entity which it describes the deployment and operational behavior of a VNF component (VNFC), as defined by [ETSI NFV IFA011].

Shorthand Name VDU.Compute
Type Qualified Name tosca:VDU.Compute
Type URI tosca.nodes.nfv.VDU.Compute
derived_from tosca.nodes.Compute

5.1.12.2.1. Attributes

None

5.1.12.2.2. Capabilities

Name Type Constraints Description
virtual_compute tosca.capabilities.nfv.VirtualCompute   Describes virtual compute resources capabilities.
monitoring_parameter tosca.capabilities.nfv.Metric None

Monitoring parameter, which can be tracked for a VNFC based on this VDU

Examples include: memory-consumption, CPU-utilisation, bandwidth-consumption, VNFC downtime, etc.

Virtual_binding

tosca.capabilities.nfv.VirtualBindable

editor note: need to create a capability type

  Defines ability of VirtualBindable

5.1.12.2.3. Definition

tosca.nodes.nfv.VDU.Compute:

derived\_from: tosca.nodes.Compute

properties:

name:

type: string

required: true

description:

type: string

required: true

boot\_order:

type: list # explicit index (boot index) not necessary, contrary to IFA011

entry\_schema:

type: string

required: false

nfvi\_constraints:

type: list

entry\_schema:

type: string

required: false

configurable\_properties:

type: map

entry\_schema:

type: tosca.datatypes.nfv.VnfcConfigurableProperties

required: true

attributes:

private\_address:

status: deprecated

public\_address:

status: deprecated

networks:

status: deprecated

ports:

status: deprecated

capabilities:

virtual\_compute:

type: tosca.capabilities.nfv.VirtualCompute

virtual\_binding:

type: tosca.capabilities.nfv.VirtualBindable

#monitoring\_parameter:

# modeled as ad hoc (named) capabilities in VDU node template

# for example:

#capabilities:

# cpu\_load: tosca.capabilities.nfv.Metric

# memory\_usage: tosca.capabilities.nfv.Metric

host: #Editor note: FFS. How this capabilities should be used in NFV Profile|

type: *tosca.capabilities.Container*

valid\_source\_types:
[*tosca.nodes.SoftwareComponent*]

occurrences: [0,UNBOUNDED]

endpoint:

occurrences: [0,0]

os:

occurrences: [0,0]

scalable:
#Editor note: FFS. How this capabilities should be used in NFV Profile

type: *tosca.capabilities.Scalable*

binding:

occurrences: [0,UNBOUND]

requirements:

- virtual\_storage:

capability: tosca.capabilities.nfv.VirtualStorage

relationship: tosca.relationships.nfv.VDU.AttachedTo

node: tosca.nodes.nfv.VDU.VirtualStorage

occurences: [ 0, UNBOUNDED ]

- local\_storage: #For NFV Profile, this requirement is deprecated.

occurrences: [0,0]

artifacts:

- sw\_image:

file:

type: tosca.artifacts.nfv.SwImage

5.1.12.2.4. Artifact

Note: currently not supported.

Name Required Type Constraints Description
SwImage Yes tosca.artifacts.nfv.SwImage   Describes the software image which is directly realizing this virtual storage

image2

5.1.12.3. tosca.nodes.nfv.VDU.VirtualStorage

The NFV VirtualStorage node type represents a virtual storage entity which it describes the deployment and operational behavior of a virtual storage resources, as defined by [ETSI NFV IFA011].

[editor note] open issue: should NFV profile use the current storage model as described in YAML 1.1. Pending on Shitao proposal (see NFVIFA(17)000110 discussion paper)

[editor note] new relationship type as suggested in Matt presentation. Slide 8. With specific rules of “valid_target_type”

Shorthand Name VirtualStorage
Type Qualified Name tosca: VirtualStorage
Type URI tosca.nodes.nfv.VDU.VirtualStorage
derived_from tosca.nodes.Root

5.1.12.4. tosca.artifacts.nfv.SwImage

Shorthand Name SwImage
Type Qualified Name tosca:SwImage
Type URI tosca.artifacts.nfv.SwImage
derived_from tosca.artifacts.Deployment.Image

5.1.12.4.1. Properties

Name Required Type Constraints Description
name yes string   Name of this software image
version yes string   Version of this software image
checksum yes string   Checksum of the software image file
container_format yes string   The container format describes the container file format in which software image is provided.
disk_format yes string   The disk format of a software image is the format of the underlying disk image
min_disk yes scalar-unit.size   The minimal disk size requirement for this software image.
min_ram no scalar-unit.size   The minimal RAM requirement for this software image.
Size yes scalar-unit.size   The size of this software image
sw_image yes string   A reference to the actual software image within VNF Package, or url.
operating_system no string   Identifies the operating system used in the software image.
supported_virtualization_enviroment no list   Identifies the virtualization environments (e.g. hypervisor) compatible with this software image

5.1.12.4.2. Definition

tosca.artifacts.nfv.SwImage:

  derived\_from: tosca.artifacts.Deployment.Image

  properties or metadata:

    #id:

      # node name

    name:

      type: string

required: true

    version:

      type: string

required: true

    checksum:

      type: string

required: true

    container\_format:

      type: string

required: true

    disk\_format:

      type: string

required: true

    min\_disk:

      type: scalar-unit.size # Number

required: true

    min\_ram:

      type: scalar-unit.size # Number

required: false

    size:

      type: scalar-unit.size # Number

required: true

    sw\_image:

      type: string

required: true

    operating\_system:

      type: string

required: false

    supported\_virtualisation\_environments:

      type: list

      entry\_schema:

        type: string

required: false