1 .. Modifications Copyright © 2017-2018 AT&T Intellectual Property.
3 .. Licensed under the Creative Commons License, Attribution 4.0 Intl.
4 (the "License"); you may not use this documentation except in compliance
5 with the License. You may obtain a copy of the License at
7 .. https://creativecommons.org/licenses/by/4.0/
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.
16 ONAP TOSCA VNFD Requirements
17 -----------------------------
23 The following sub-clauses describe the numbered requirements
24 for VNF Descriptor (VNFD) or in other words the VNF Service Template
25 based on the most updated draft of ETSI NFV-SOL001 standard for VNF
26 Descriptor. The ETSI standard specifies a NFV specific data model using
27 TOSCA/YAML data model constructs specified in TOSCA Simple Profile in
30 The requirements for TOSCA/CSAR based VNF package are described as well
31 and they are based on ETSI NFV-SOL004 standard.
36 1. ETSI GS NFV-SOL001 draft v.0.10.0
37 2. TOSCA SIMPLE Profile in YAML v.1.2
38 3. ETSI GS NFV-SOL004 v.2.5.1
43 This document is intended for developers of VNF TOSCA templates that
44 will be orchestrated by ONAP. The document is also applicable for
45 creating RFP’s with the list of required TOSCA/YAML features
46 supported by VNF provider.
51 ONAP implementations of Network Cloud supports TOSCA Templates, also
52 referred to as TOSCA in this document.
54 ONAP requires the TOSCA Templates to follow a specific format. This
55 document provides the mandatory, recommended, and optional requirements
56 associated with this format.
61 The document includes three charters to help the VNF providers to use the
62 VNF model design tools and understand the VNF package structure and VNF
65 In the ONAP, VNF Package and VNFD template can be designed by manually
66 or via model designer tools. VNF model designer tools can provide the
67 GUI and CLI tools for the VNF provider to develop the VNF Package and VNFD
70 The VNF package structure is align to the NFV TOSCA protocol, and
73 The VNFD and VNF package are all align to the NFV TOSCA protocol, which
74 supports multiple TOSCA template yaml files, and also supports
75 self-defined node or other extensions.
83 TOSCA YAML CSAR file is an archive file using the ZIP file format whose
84 structure complies with the TOSCA Simple Profile YAML v1.2 Specification.
85 The CSAR file may have one of the two following structures:
87 - CSAR containing a TOSCA-Metadata directory, which includes the TOSCA.meta
88 metadata file providing an entry information for processing a CSAR file.
90 - CSAR containing a single yaml (.yml or .yaml) file at the root of the
91 archive. The yaml file is a TOSCA definition template that contains a
92 metadata section with template_name and template_version metadata. This
93 file is the CSAR Entry-Definitions file.
95 VNF Package Structure and Format
96 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
102 :introduced: casablanca
104 The VNF package **MUST** be arranged as a CSAR archive as specified in
105 TOSCA Simple Profile in YAML 1.2.
112 :introduced: casablanca
114 The VNF package provided by a VNF vendor **MAY** be either with
115 TOSCA-Metadata directory (CSAR Option 1) or without TOSCA-Metadata
116 directory (CSAR Option 2) as specified in ETSI GS NFV-SOL004. On-boarding
117 entity (ONAP SDC) must support both options.
119 **Note:** SDC supports only the CSAR Option 1 in Casablanca. The Option 2
120 will be considered in future ONAP releases,
124 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
130 :introduced: casablanca
132 The VNF package **MUST** contain all standard artifacts as specified in
133 ETSI GS NFV-SOL004 including Manifest file, VNFD (or Main TOSCA/YAML
134 based Service Template) and other optional artifacts. CSAR Manifest
135 file as per SOL004 - for example ROOT\\ **MainServiceTemplate.mf**
141 :introduced: casablanca
143 The VNF package Manifest file **MUST** contain: VNF package meta-data, a
144 list of all artifacts (both internal and external) entry’s including
145 their respected URI’s, an algorithm to calculate a digest and a digest
146 result calculated on the content of each artifacts, as specified in
147 ETSI GS NFV-SOL004. The VNF Package MUST include VNF Identification
148 Data to uniquely identify the resource for a given VNF provider. The
149 identification data must include: an identifier for the VNF, the name
150 of the VNF as was given by the VNF provider, VNF description, VNF
151 provider, and version.
157 :introduced: casablanca
159 The VNF provider **MUST** provide their testing scripts to support
160 testing as specified in ETSI NFV-SOL004 - Testing directory in CSAR
166 :introduced: casablanca
168 The VNF provider **MUST** provide the binaries and images needed to
169 instantiate the VNF (VNF and VNFC images) either as:
171 - Local artifact in CSAR: ROOT\\Artifacts\\ **VNF_Image.bin**
173 - externally referred (by URI) artifact in Manifest file (also may be
174 referred by VNF Descriptor)
176 Note: Currently, ONAP doesn't have the capability of Image management,
177 we upload the image into VIM/VNFM manually.
183 :introduced: casablanca
185 The VNF provider MUST enumerate all of the open source licenses
186 their VNF(s) incorporate. CSAR License directory as per ETSI SOL004.
188 for example ROOT\\Licenses\\ **License_term.txt**
191 VNF Package Authenticity
192 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
194 Will be added in future releases.
197 VNF Package ONAP Extensions
198 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
200 1. TOACA data type extension tosca.datatypes.nfv.injectFile is used for vCPE
202 2. ONAP extensions for VNF package that is currently proposed for Dublin
203 release is VES extension described below.
208 TOSCA defines a Meta model for defining IT services. This Meta model
209 defines both the structure of a service as well as how to manage it. A
210 Topology Template (also referred to as the topology model of a service)
211 defines the structure of a service. Plans define the process models that
212 are used to create and terminate a service as well as to manage a
213 service during its whole lifetime.
215 A Topology Template consists of a set of Node Templates and Relationship
216 Templates that together define the topology model of a service as a (not
217 necessarily connected) directed graph. A node in this graph is
218 represented by a *Node Template*. A Node Template specifies the
219 occurrence of a Node Type as a component of a service. A *Node Type*
220 defines the properties of such a component (via *Node Type Properties*)
221 and the operations (via *Interfaces*) available to manipulate the
222 component. Node Types are defined separately for reuse purposes and a
223 Node Template references a Node Type and adds usage constraints, such as
224 how many times the component can occur.
228 Figure 1: Structural Elements of Service Template and their Relations
230 TOSCA Modeling Principles & Data Model
231 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
233 This section describing TOSCA modeling principles and data model for
234 NFV, which shall be based on [TOSCA-1.0] and [TOSCA-Simple-Profile-YAML
235 V1.0], or new type based on ETSI NFV requirements, etc.
238 ^^^^^^^^^^^^^^^^^^^^^^^^^
247 :introduced: casablanca
249 The VNF Descriptor (VNFD) provided by VNF vendor **MUST** comply with
250 TOSCA/YAML based Service template for VNF descriptor specified in
253 **Note**: As the ETSI NFV-SOL001 is work in progress the below tables
254 summarizes the TOSCA definitions agreed to be part of current version
255 of NFV profile and that VNFD MUST comply with in ONAP Release 2+
263 :introduced: casablanca
265 The VNFD **MUST** comply with ETSI GS NFV-SOL001 document endorsing
266 the above mentioned NFV Profile and maintaining the gaps with the
267 requirements specified in ETSI GS NFV-IFA011 standard.
274 :introduced: casablanca
276 The VNFD **MAY** include TOSCA/YAML definitions that are not part of
277 NFV Profile. If provided, these definitions MUST comply with TOSCA
278 Simple Profile in YAML v.1.2.
284 :introduced: casablanca
286 A VNFD is a deployment template which describes a VNF in terms of
287 deployment and operational behavior requirements. It contains
288 virtualized resources (nodes) requirements as well as connectivity
289 and interfaces requirements and **MUST** comply with info elements
290 specified in ETSI GS NFV-IFA 011. The main parts of the VNFD are
293 - VNF topology: it is modeled in a cloud agnostic way using virtualized
294 containers and their connectivity. Virtual Deployment Units (VDU)
295 describe the capabilities of the virtualized containers, such as
296 virtual CPU, RAM, disks; their connectivity is modeled with VDU
297 Connection Point Descriptors (VduCpd), Virtual Link Descriptors
298 (VnfVld) and VNF External Connection Point Descriptors
301 - VNF deployment aspects: they are described in one or more
302 deployment flavours, including configurable parameters, instantiation
303 levels, placement constraints (affinity / antiaffinity), minimum and
304 maximum VDU instance numbers. Horizontal scaling is modeled with
305 scaling aspects and the respective scaling levels in the deployment
308 **Note**: The deployment aspects (deployment flavour etc.) are postponed
309 for future ONAP releases.
311 - VNF lifecycle management (LCM) operations: describes the LCM operations
312 supported per deployment flavour, and their input parameters;
313 Note, thatthe actual LCM implementation resides in a different layer,
314 namely referring to additional template artifacts.
320 :introduced: casablanca
322 The following table defines the major TOSCA Types specified in
323 ETSI NFV-SOL001 standard draft. The VNFD provided by a VNF vendor
324 **MUST** comply with the below definitions:
327 .. csv-table:: **TOSCA Definition**
328 :file: TOSCA_descriptor.csv
340 :introduced: casablanca
342 The below table includes the data types used by NFV node and is based
343 on TOSCA/YAML constructs specified in draft GS NFV-SOL 001. The node
344 data definitions/attributes used in VNFD **MUST** comply with the below
348 .. csv-table:: **NFV Data Types**
349 :file: NFV_data_type.csv
358 :introduced: casablanca
360 The below table describes the data types used for LCM configuration
361 and is based on TOSCA constructs specified in draft GS NFV-SOL 001.
362 The LCM configuration data elements used in VNFD **MUST** comply
363 with the below table.
365 .. csv-table:: **LCM Configuration**
366 :file: LCM_config.csv
373 ~~~~~~~~~~~~~~~~~~~~~~~~
375 No artifact type is currently supported in ONAP.
379 ~~~~~~~~~~~~~~~~~~~~~~~~
385 :introduced: casablanca
387 The VNFD provided by VNF vendor may use the below described TOSCA
388 capabilities. An on-boarding entity (ONAP SDC) **MUST** support them.
390 **tosca.capabilities.nfv.VirtualBindable**
392 A node type that includes the VirtualBindable capability indicates
393 that it can be pointed by **tosca.relationships.nfv.VirtualBindsTo**
396 **tosca.capabilities.nfv.VirtualLinkable**
398 A node type that includes the VirtualLinkable capability indicates
399 that it can be pointed by **tosca.relationships.nfv.VirtualLinksTo**
402 **tosca.capabilities.nfv.ExtVirtualLinkable**
404 A node type that includes the ExtVirtualLinkable capability
405 indicates that it can be pointed by
406 **tosca.relationships.nfv.VirtualLinksTo** relationship.
408 **Note**: This capability type is used in Casablanca how it does
409 not exist in the last SOL001 draft
411 **tosca.capabilities.nfv.VirtualCompute** and
412 **tosca.capabilities.nfv.VirtualStorage** includes flavours of VDU
416 ~~~~~~~~~~~~~~~~~~~~~~~~
422 :introduced: casablanca
424 The VNFD provided by VNF vendor may use the below described TOSCA
425 relationships. An on-boarding entity (ONAP SDC) **MUST** support them.
427 **tosca.relationships.nfv.VirtualBindsTo**
429 This relationship type represents an association relationship between
430 VDU and CP node types.
432 **tosca.relationships.nfv.VirtualLinksTo**
434 This relationship type represents an association relationship between
435 the VduCpd’s and VirtualLinkDesc node types.
439 ~~~~~~~~~~~~~~~~~~~~~~~~
445 :introduced: casablanca
447 The VNFD provided by VNF vendor may use the below described TOSCA
448 interface types. An on-boarding entity (ONAP SDC) **MUST** support them.
450 **tosca.interfaces.nfv.vnf.lifecycle.Nfv** supports LCM operations
453 +--------------------------------------------------------------------+
454 | +--------------------------------------------------------------+ |
455 | | tosca\_definitions\_version: tosca\_simple\_yaml\_1\_0 | |
457 | | description: VNFD TOSCA file demo | |
461 | | - TOSCA\_definition\_nfv\_1\_0.yaml | |
463 | | - TOSCA\_definition\_nfv\_ext\_1\_0.yaml | |
465 | | | **node\_types: | |
466 | | tosca.nodes.nfv.VNF.vOpenNAT: | |
467 | | derived\_from:** tosca.nodes.nfv.VNF | |
468 | | | **requirements: | |
469 | | **- **sriov\_plane: | |
470 | | capability:** tosca.capabilities.nfv.VirtualLinkable | |
471 | | | **node:** tosca.nodes.nfv.VnfVirtualLinkDesc | |
472 | | | **relationship:** tosca.relationships.nfv.VirtualLinksTo | |
473 | +--------------------------------------------------------------+ |
474 +====================================================================+
475 +--------------------------------------------------------------------+
481 1. SR-IOV Passthrought
483 Definitions of SRIOV\_Port are necessary if VDU supports SR-IOV. Here is
496 tosca\_name: SRIOV\_Port
500 virtual\_network\_interface\_requirements:
504 support\_mandatory: false
514 description: sriov port
516 layer\_protocol: ipv4
522 capability: virtual\_binding
528 type: tosca.relationships.nfv.VirtualBindsTo
532 node: tosca.nodes.Root
534 type: tosca.nodes.nfv.VduCpd
536 substitution\_mappings:
546 node\_type: tosca.nodes.nfv.VNF.vOpenNAT
551 Definitions of mem\_page\_size as one property shall be added to
552 Properties and set the value to large if one VDU node supports
553 huagepages. Here is an example.
565 tosca\_name: Huge\_pages\_demo
569 mem\_page\_size:large
574 Likewise, we shall add definitions of numa to
575 requested\_additional\_capabilities if we wand VUD nodes to support
576 NUMA. Here is an example.
596 virtual\_mem\_size: 2 GB
598 requested\_additional\_capabilities:
602 support\_mandatory: true
604 requested\_additional\_capability\_name: numa
606 target\_performance\_parameters:
610 hw:numa\_cpus.0: "0,1"
612 hw:numa\_mem.0: "1024"
614 hw:numa\_cpus.1: "2,3,4,5"
616 hw:numa\_mem.1: "1024"
621 Definitions of Hyper-Theading are necessary as one of
622 requested\_additional\_capabilities of one VUD node if that node
623 supports Hyper-Theading. Here is an example.
643 virtual\_mem\_size: 2 GB
645 requested\_additional\_capabilities:
649 support\_mandatory: true
651 requested\_additional\_capability\_name: hyper\_threading
653 target\_performance\_parameters:
655 hw:cpu\_sockets : "2"
657 hw:cpu\_threads : "2"
661 hw:cpu\_threads\_policy: "isolate"
666 Definitions of ovs\_dpdk are necessary as one of
667 requested\_additional\_capabilities of one VUD node if that node
668 supports dpdk. Here is an example.
688 virtual\_mem\_size: 2 GB
690 requested\_additional\_capabilities:
694 support\_mandatory: true
696 requested\_additional\_capability\_name: ovs\_dpdk
698 target\_performance\_parameters:
704 ^^^^^^^^^^^^^^^^^^^^^^^^^
706 **Note: ONAP proprietary extensions in ETSI SOL004 standards for VES support
707 in CSAR package need to be manually loaded in R3 (Casablanca) for VNF and
708 PNFs. Platform support will be developed for this in upcoming releases.**
711 NFV TOSCA Type Definition
712 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
714 tosca.capabilites.nfv.VirtualCompute
715 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
717 This capability is used with the properties specified in ETSI SOL001 draft.
719 tosca.nodes.nfv.VDU.Compute
720 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
722 The NFV Virtualization Deployment Unit (VDU) compute node type
723 represents a VDU entity which it describes the deployment and
724 operational behavior of a VNF component (VNFC), as defined by **[ETSI
727 +-----------------------+-------------------------------+
728 | Shorthand Name | VDU.Compute |
729 +=======================+===============================+
730 | Type Qualified Name | tosca:VDU.Compute |
731 +-----------------------+-------------------------------+
732 | Type URI | tosca.nodes.nfv.VDU.Compute |
733 +-----------------------+-------------------------------+
734 | derived\_from | tosca.nodes.Compute |
735 +-----------------------+-------------------------------+
748 +------------+--------------------+------------+------------------------------+
749 | Name | Type | Constraints| Description |
750 +============+====================+============+==============================+
751 | virtual\ | tosca.\ | | Describes virtual compute |
752 | _compute | capabilities.nfv.\ | | resources capabilities. |
753 | | VirtualCompute | | |
754 +------------+--------------------+------------+------------------------------+
755 | monitoring\| tosca.\ | None | Monitoring parameter, which |
756 | _parameter | capabilities.nfv.\ | | can be tracked for a VNFC |
757 | | Metric | | based on this VDU |
759 | | | | Examples include: |
760 | | | | memory-consumption, |
761 | | | | CPU-utilisation, |
762 | | | | bandwidth-consumption, VNFC |
763 | | | | downtime, etc. |
764 +------------+--------------------+------------+------------------------------+
765 | Virtual\ | tosca.\ | | Defines ability of |
766 | _binding | capabilities.nfv.\ | | VirtualBindable |
767 | | VirtualBindable | | |
769 | | editor note: need | | |
770 | | to create a | | |
771 | | capability type | | |
772 +------------+--------------------+------------+------------------------------+
781 tosca.nodes.nfv.VDU.Compute:
783 derived\_from: tosca.nodes.Compute
801 type: list # explicit index (boot index) not necessary, contrary to IFA011
819 configurable\_properties:
825 type: tosca.datatypes.nfv.VnfcConfigurableProperties
851 type: tosca.capabilities.nfv.VirtualCompute
855 type: tosca.capabilities.nfv.VirtualBindable
857 #monitoring\_parameter:
859 # modeled as ad hoc (named) capabilities in VDU node template
865 # cpu\_load: tosca.capabilities.nfv.Metric
867 # memory\_usage: tosca.capabilities.nfv.Metric
869 host: #Editor note: FFS. How this capabilities should be used in NFV Profile|
871 type: *tosca.capabilities.Container*
873 valid\_source\_types:
874 [*tosca.nodes.SoftwareComponent*]
876 occurrences: [0,UNBOUNDED]
887 #Editor note: FFS. How this capabilities should be used in NFV Profile
889 type: *tosca.capabilities.Scalable*
893 occurrences: [0,UNBOUND]
899 capability: tosca.capabilities.nfv.VirtualStorage
901 relationship: tosca.relationships.nfv.VDU.AttachedTo
903 node: tosca.nodes.nfv.VDU.VirtualStorage
905 occurences: [ 0, UNBOUNDED ]
907 - local\_storage: #For NFV Profile, this requirement is deprecated.
917 type: tosca.artifacts.nfv.SwImage
923 Note: currently not supported.
925 +--------+---------+----------------+------------+------------------------+
926 | Name | Required| Type | Constraints| Description |
927 +========+=========+================+============+========================+
928 | SwImage| Yes | tosca.\ | | Describes the software |
929 | | | artifacts.nfv.\| | image which is directly|
930 | | | SwImage | | realizing this virtual |
932 +--------+---------+----------------+------------+------------------------+
939 tosca.nodes.nfv.VDU.VirtualStorage
940 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
942 The NFV VirtualStorage node type represents a virtual storage entity
943 which it describes the deployment and operational behavior of a virtual
944 storage resources, as defined by **[ETSI NFV IFA011].**
946 **[editor note]** open issue: should NFV profile use the current storage
947 model as described in YAML 1.1. Pending on Shitao proposal (see
948 NFVIFA(17)000110 discussion paper)
950 **[editor note]** new relationship type as suggested in Matt
951 presentation. Slide 8. With specific rules of “valid\_target\_type”
953 +---------------------------+--------------------------------------+
954 | **Shorthand Name** | VirtualStorage |
955 +===========================+======================================+
956 | **Type Qualified Name** | tosca: VirtualStorage |
957 +---------------------------+--------------------------------------+
958 | **Type URI** | tosca.nodes.nfv.VDU.VirtualStorage |
959 +---------------------------+--------------------------------------+
960 | **derived\_from** | tosca.nodes.Root |
961 +---------------------------+--------------------------------------+
963 tosca.artifacts.nfv.SwImage
964 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
966 +---------------------------+------------------------------------+
967 | **Shorthand Name** | SwImage |
968 +===========================+====================================+
969 | **Type Qualified Name** | tosca:SwImage |
970 +---------------------------+------------------------------------+
971 | **Type URI** | tosca.artifacts.nfv.SwImage |
972 +---------------------------+------------------------------------+
973 | **derived\_from** | tosca.artifacts.Deployment.Image |
974 +---------------------------+------------------------------------+
979 +-----------------+---------+----------+------------+-------------------------+
980 | Name | Required| Type | Constraints| Description |
981 +=================+=========+==========+============+=========================+
982 | name | yes | string | | Name of this software |
984 +-----------------+---------+----------+------------+-------------------------+
985 | version | yes | string | | Version of this software|
987 +-----------------+---------+----------+------------+-------------------------+
988 | checksum | yes | string | | Checksum of the software|
989 | | | | | image file |
990 +-----------------+---------+----------+------------+-------------------------+
991 | container\ | yes | string | | The container format |
992 | _format | | | | describes the container |
993 | | | | | file format in which |
994 | | | | | software image is |
995 | | | | | provided. |
996 +-----------------+---------+----------+------------+-------------------------+
997 | disk\_format | yes | string | | The disk format of a |
998 | | | | | software image is the |
999 | | | | | format of the underlying|
1000 | | | | | disk image |
1001 +-----------------+---------+----------+------------+-------------------------+
1002 | min\_disk | yes | scalar-\ | | The minimal disk size |
1003 | | | unit.size| | requirement for this |
1004 | | | | | software image. |
1005 +-----------------+---------+----------+------------+-------------------------+
1006 | min\_ram | no | scalar-\ | | The minimal RAM |
1007 | | | unit.size| | requirement for this |
1008 | | | | | software image. |
1009 +-----------------+---------+----------+------------+-------------------------+
1010 | Size | yes | scalar-\ | | The size of this |
1011 | | | unit.size| | software image |
1012 +-----------------+---------+----------+------------+-------------------------+
1013 | sw\_image | yes | string | | A reference to the |
1014 | | | | | actual software image |
1015 | | | | | within VNF Package, or |
1017 +-----------------+---------+----------+------------+-------------------------+
1018 | operating\ | no | string | | Identifies the operating|
1019 | _system | | | | system used in the |
1020 | | | | | software image. |
1021 +-----------------+---------+----------+------------+-------------------------+
1022 | supported\ | no | list | | Identifies the |
1023 | _virtualization\| | | | virtualization |
1024 | _enviroment | | | | environments (e.g. |
1025 | | | | | hypervisor) compatible |
1026 | | | | | with this software image|
1027 +-----------------+---------+----------+------------+-------------------------+
1033 .. code-block:: yaml
1035 tosca.artifacts.nfv.SwImage:
1037 derived\_from: tosca.artifacts.Deployment.Image
1039 properties or metadata:
1077 type: scalar-unit.size # Number
1083 type: scalar-unit.size # Number
1089 type: scalar-unit.size # Number
1105 supported\_virtualisation\_environments:
1116 .. |image1| image:: ../Image1.png
1120 .. |image2| image:: ../Image2.png