1 .. This work is licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/by/4.0
3 .. Copyright 2017 AT&T Intellectual Property. All rights reserved.
12 This reference document is the VNF TOSCA Template Requirements for
13 ONAP, which provides recommendations and standards for building VNF
14 TOSCA templates compatible with ONAP initial implementations of
15 Network Cloud. It has the following features:
17 1. VNF TOSCA template designer supports GUI and CLI.
19 2. VNF TOSCA template is aligned to the newest TOSCA protocol, “Working
20 Draft 04-Revision 06”.
22 3. VNF TOSCA template supports HPA features, such as NUMA, Hyper
23 Threading, SRIOV, etc.
28 This document is intended for persons developing VNF TOSCA templates
29 that will be orchestrated by ONAP.
34 ONAP implementations of Network Cloud supports TOSCA Templates, also
35 referred to as TOSCA in this document.
37 ONAP requires the TOSCA Templates to follow a specific format. This
38 document provides the mandatory, recommended, and optional requirements
39 associated with this format.
44 The document includes three charters to help the VNF providers to use the
45 VNF model design tools and understand the VNF package structure and VNF
48 In the ONAP, VNF Package and VNFD template can be designed by manually
49 or via model designer tools. VNF model designer tools can provide the
50 GUI and CLI tools for the VNF provider to develop the VNF Package and VNFD
53 The VNF package structure is align to the NFV TOSCA protocol, and
56 The VNFD and VNF package are all align to the NFV TOSCA protocol, which
57 supports multiple TOSCA template yaml files, and also supports
58 self-defined node or other extensions.
63 TOSCA templates supported by ONAP must follow the requirements
64 enumerated in this section.
69 TOSCA defines a Meta model for defining IT services. This Meta model
70 defines both the structure of a service as well as how to manage it. A
71 Topology Template (also referred to as the topology model of a service)
72 defines the structure of a service. Plans define the process models that
73 are used to create and terminate a service as well as to manage a
74 service during its whole lifetime.
76 A Topology Template consists of a set of Node Templates and Relationship
77 Templates that together define the topology model of a service as a (not
78 necessarily connected) directed graph. A node in this graph is
79 represented by a *Node Template*. A Node Template specifies the
80 occurrence of a Node Type as a component of a service. A *Node Type*
81 defines the properties of such a component (via *Node Type Properties*)
82 and the operations (via *Interfaces*) available to manipulate the
83 component. Node Types are defined separately for reuse purposes and a
84 Node Template references a Node Type and adds usage constraints, such as
85 how many times the component can occur.
89 Figure 1: Structural Elements of Service Template and their Relations
91 TOSCA Modeling Principles & Data Model
92 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
94 This section describing TOSCA modeling principles and data model for
95 NFV, which shall be based on [TOSCA-1.0] and [TOSCA-Simple-Profile-YAML
96 V1.0], or new type based on ETSI NFV requirements, etc.
98 VNF Descriptor Template
99 ^^^^^^^^^^^^^^^^^^^^^^^^^
101 The VNF Descriptor (VNFD) describes the topology of the VNF by means of
102 ETSI NFV IFA011 [IFA011] terms such as VDUs, Connection Points, Virtual
103 Links, External Connection Points, Scaling Aspects, Instantiation Levels
104 and Deployment Flavours.
106 The VNFD (VNF Descriptor) is read by both the NFVO and the VNFM. It
107 represents the contract & interface of a VNF and ensures the
108 interoperability across the NFV functional blocks.
110 The main parts of the VNFD are the following:
112 - VNF topology: it is modeled in a cloud agnostic way using virtualized
113 containers and their connectivity. Virtual Deployment Units (VDU)
114 describe the capabilities of the virtualized containers, such as
115 virtual CPU, RAM, disks; their connectivity is modeled with VDU
116 Connection Point Descriptors (VduCpd), Virtual Link Descriptors (Vld)
117 and VNF External Connection Point Descriptors (VnfExternalCpd);
119 - VNF deployment aspects: they are described in one or more deployment
120 flavours, including instantiation levels, supported LCM operations,
121 VNF LCM operation configuration parameters, placement constraints
122 (affinity / antiaffinity), minimum and maximum VDU instance numbers,
123 and scaling aspect for horizontal scaling.
125 The following table defines the TOSCA Type “derived from” values that
126 SHALL be used when using the TOSCA Simple Profile for NFV version 1.0
127 specification [TOSCA-Simple-Profile-NFV-v1.0] for NFV VNFD with aggreed
128 changes from ETSI SOL001 draft.
130 +---------------------+------------------------------------+-----------------+
131 | **ETSI NFV Element**| **TOSCA VNFD** | **Derived from**|
133 | **[IFA011]** | **[TOSCA-Simple-Profile-NFV-v1.0]**| |
134 +=====================+====================================+=================+
135 | VNF | tosca.nodes.nfv.VNF | tosca.nodes.Root|
136 +---------------------+------------------------------------+-----------------+
137 | Cpd (Connection | tosca.nodes.nfv.Cp | tosca.nodes.Root|
138 | Point) | tosca.nodes.nfv.Cp | tosca.nodes.Root|
139 +---------------------+------------------------------------+-----------------+
140 | VduCpd (internal | tosca.nodes.nfv.VduCp | tosca.nodes.\ |
141 | connection point) | | nfv.Cp |
142 +---------------------+------------------------------------+-----------------+
143 | VnfVirtualLinkDesc | tosca.nodes.nfv.VnfVirtualLink | tosca.nodes.Root|
144 | (Virtual Link) | | |
145 +---------------------+------------------------------------+-----------------+
146 | VDU Virtual Storage | tosca.nodes.nfv.VDU.VirtualStorage | tosca.nodes.Root|
147 +---------------------+------------------------------------+-----------------+
148 | VDU Virtual Compute | tosca.nodes.nfv.VDU.Compute | tosca.nodes.Root|
149 +---------------------+------------------------------------+-----------------+
150 | Software Image | | |
151 +---------------------+------------------------------------+-----------------+
152 | Deployment Flavour | | |
153 +---------------------+------------------------------------+-----------------+
154 | Scaling Aspect | | |
155 +---------------------+------------------------------------+-----------------+
156 | Element Group | | |
157 +---------------------+------------------------------------+-----------------+
158 | Instantiation | | |
160 +---------------------+------------------------------------+-----------------+
163 +--------------------------------------------------------------------+
164 | +--------------------------------------------------------------+ |
165 | | tosca\_definitions\_version: tosca\_simple\_yaml\_1\_0 | |
167 | | description: VNFD TOSCA file demo | |
171 | | - TOSCA\_definition\_nfv\_1\_0.yaml | |
173 | | - TOSCA\_definition\_nfv\_ext\_1\_0.yaml | |
175 | | | **node\_types: | |
176 | | tosca.nodes.nfv.VNF.vOpenNAT: | |
177 | | derived\_from:** tosca.nodes.nfv.VNF | |
178 | | | **requirements: | |
179 | | **- **sriov\_plane: | |
180 | | capability:** tosca.capabilities.nfv.VirtualLinkable | |
181 | | | **node:** tosca.nodes.nfv.VnfVirtualLinkDesc | |
182 | | | **relationship:** tosca.relationships.nfv.VirtualLinksTo | |
183 | +--------------------------------------------------------------+ |
184 +====================================================================+
185 +--------------------------------------------------------------------+
191 1. SR-IOV Passthrought
193 Definitions of SRIOV\_Port are necessary if VDU supports SR-IOV. Here is
206 tosca\_name: SRIOV\_Port
210 virtual\_network\_interface\_requirements:
214 support\_mandatory: false
224 description: sriov port
226 layer\_protocol: ipv4
232 capability: virtual\_binding
238 type: tosca.relationships.nfv.VirtualBindsTo
242 node: tosca.nodes.Root
244 type: tosca.nodes.nfv.VduCpd
246 substitution\_mappings:
256 node\_type: tosca.nodes.nfv.VNF.vOpenNAT
261 Definitions of mem\_page\_size as one property shall be added to
262 Properties and set the value to large if one VDU node supports
263 huagepages. Here is an example.
275 tosca\_name: Huge\_pages\_demo
279 mem\_page\_size:large
284 Likewise, we shall add definitions of numa to
285 requested\_additional\_capabilities if we wand VUD nodes to support
286 NUMA. Here is an example.
306 virtual\_mem\_size: 2 GB
308 requested\_additional\_capabilities:
312 support\_mandatory: true
314 requested\_additional\_capability\_name: numa
316 target\_performance\_parameters:
320 hw:numa\_cpus.0: "0,1"
322 hw:numa\_mem.0: "1024"
324 hw:numa\_cpus.1: "2,3,4,5"
326 hw:numa\_mem.1: "1024"
331 Definitions of Hyper-Theading are necessary as one of
332 requested\_additional\_capabilities of one VUD node if that node
333 supports Hyper-Theading. Here is an example.
353 virtual\_mem\_size: 2 GB
355 requested\_additional\_capabilities:
359 support\_mandatory: true
361 requested\_additional\_capability\_name: hyper\_threading
363 target\_performance\_parameters:
365 hw:cpu\_sockets : "2"
367 hw:cpu\_threads : "2"
371 hw:cpu\_threads\_policy: "isolate"
376 Definitions of ovs\_dpdk are necessary as one of
377 requested\_additional\_capabilities of one VUD node if that node
378 supports dpdk. Here is an example.
398 virtual\_mem\_size: 2 GB
400 requested\_additional\_capabilities:
404 support\_mandatory: true
406 requested\_additional\_capability\_name: ovs\_dpdk
408 target\_performance\_parameters:
413 NFV TOSCA Type Definition
414 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
416 tosca.capabilites.nfv.VirtualCompute
417 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
419 This capability is used with the properties specified in ETSI SOL001 draft.
421 tosca.nodes.nfv.VDU.Compute
422 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
424 The NFV Virtualization Deployment Unit (VDU) compute node type
425 represents a VDU entity which it describes the deployment and
426 operational behavior of a VNF component (VNFC), as defined by **[ETSI
429 +-----------------------+-------------------------------+
430 | Shorthand Name | VDU.Compute |
431 +=======================+===============================+
432 | Type Qualified Name | tosca:VDU.Compute |
433 +-----------------------+-------------------------------+
434 | Type URI | tosca.nodes.nfv.VDU.Compute |
435 +-----------------------+-------------------------------+
436 | derived\_from | tosca.nodes.Compute |
437 +-----------------------+-------------------------------+
450 +------------+--------------------+------------+------------------------------+
451 | Name | Type | Constraints| Description |
452 +============+====================+============+==============================+
453 | virtual\ | tosca.\ | | Describes virtual compute |
454 | _compute | capabilities.nfv.\ | | resources capabilities. |
455 | | VirtualCompute | | |
456 +------------+--------------------+------------+------------------------------+
457 | monitoring\| tosca.\ | None | Monitoring parameter, which |
458 | _parameter | capabilities.nfv.\ | | can be tracked for a VNFC |
459 | | Metric | | based on this VDU |
461 | | | | Examples include: |
462 | | | | memory-consumption, |
463 | | | | CPU-utilisation, |
464 | | | | bandwidth-consumption, VNFC |
465 | | | | downtime, etc. |
466 +------------+--------------------+------------+------------------------------+
467 | Virtual\ | tosca.\ | | Defines ability of |
468 | _binding | capabilities.nfv.\ | | VirtualBindable |
469 | | VirtualBindable | | |
471 | | editor note: need | | |
472 | | to create a | | |
473 | | capability type | | |
474 +------------+--------------------+------------+------------------------------+
483 tosca.nodes.nfv.VDU.Compute:
485 derived\_from: tosca.nodes.Compute
503 type: list # explicit index (boot index) not necessary, contrary to IFA011
521 configurable\_properties:
527 type: tosca.datatypes.nfv.VnfcConfigurableProperties
553 type: tosca.capabilities.nfv.VirtualCompute
557 type: tosca.capabilities.nfv.VirtualBindable
559 #monitoring\_parameter:
561 # modeled as ad hoc (named) capabilities in VDU node template
567 # cpu\_load: tosca.capabilities.nfv.Metric
569 # memory\_usage: tosca.capabilities.nfv.Metric
571 host: #Editor note: FFS. How this capabilities should be used in NFV Profile|
573 type: *tosca.capabilities.Container*
575 valid\_source\_types:
576 [*tosca.nodes.SoftwareComponent*]
578 occurrences: [0,UNBOUNDED]
589 #Editor note: FFS. How this capabilities should be used in NFV Profile
591 type: *tosca.capabilities.Scalable*
595 occurrences: [0,UNBOUND]
601 capability: tosca.capabilities.nfv.VirtualStorage
603 relationship: tosca.relationships.nfv.VDU.AttachedTo
605 node: tosca.nodes.nfv.VDU.VirtualStorage
607 occurences: [ 0, UNBOUNDED ]
609 - local\_storage: #For NFV Profile, this requirement is deprecated.
619 type: tosca.artifacts.nfv.SwImage
625 Note: currently not supported.
627 +--------+---------+----------------+------------+------------------------+
628 | Name | Required| Type | Constraints| Description |
629 +========+=========+================+============+========================+
630 | SwImage| Yes | tosca.\ | | Describes the software |
631 | | | artifacts.nfv.\| | image which is directly|
632 | | | SwImage | | realizing this virtual |
634 +--------+---------+----------------+------------+------------------------+
641 tosca.nodes.nfv.VDU.VirtualStorage
642 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
644 The NFV VirtualStorage node type represents a virtual storage entity
645 which it describes the deployment and operational behavior of a virtual
646 storage resources, as defined by **[ETSI NFV IFA011].**
648 **[editor note]** open issue: should NFV profile use the current storage
649 model as described in YAML 1.1. Pending on Shitao proposal (see
650 NFVIFA(17)000110 discussion paper)
652 **[editor note]** new relationship type as suggested in Matt
653 presentation. Slide 8. With specific rules of “valid\_target\_type”
655 +---------------------------+--------------------------------------+
656 | **Shorthand Name** | VirtualStorage |
657 +===========================+======================================+
658 | **Type Qualified Name** | tosca: VirtualStorage |
659 +---------------------------+--------------------------------------+
660 | **Type URI** | tosca.nodes.nfv.VDU.VirtualStorage |
661 +---------------------------+--------------------------------------+
662 | **derived\_from** | tosca.nodes.Root |
663 +---------------------------+--------------------------------------+
665 tosca.artifacts.nfv.SwImage
666 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
668 +---------------------------+------------------------------------+
669 | **Shorthand Name** | SwImage |
670 +===========================+====================================+
671 | **Type Qualified Name** | tosca:SwImage |
672 +---------------------------+------------------------------------+
673 | **Type URI** | tosca.artifacts.nfv.SwImage |
674 +---------------------------+------------------------------------+
675 | **derived\_from** | tosca.artifacts.Deployment.Image |
676 +---------------------------+------------------------------------+
681 +-----------------+---------+----------+------------+-------------------------+
682 | Name | Required| Type | Constraints| Description |
683 +=================+=========+==========+============+=========================+
684 | name | yes | string | | Name of this software |
686 +-----------------+---------+----------+------------+-------------------------+
687 | version | yes | string | | Version of this software|
689 +-----------------+---------+----------+------------+-------------------------+
690 | checksum | yes | string | | Checksum of the software|
691 | | | | | image file |
692 +-----------------+---------+----------+------------+-------------------------+
693 | container\ | yes | string | | The container format |
694 | _format | | | | describes the container |
695 | | | | | file format in which |
696 | | | | | software image is |
697 | | | | | provided. |
698 +-----------------+---------+----------+------------+-------------------------+
699 | disk\_format | yes | string | | The disk format of a |
700 | | | | | software image is the |
701 | | | | | format of the underlying|
702 | | | | | disk image |
703 +-----------------+---------+----------+------------+-------------------------+
704 | min\_disk | yes | scalar-\ | | The minimal disk size |
705 | | | unit.size| | requirement for this |
706 | | | | | software image. |
707 +-----------------+---------+----------+------------+-------------------------+
708 | min\_ram | no | scalar-\ | | The minimal RAM |
709 | | | unit.size| | requirement for this |
710 | | | | | software image. |
711 +-----------------+---------+----------+------------+-------------------------+
712 | Size | yes | scalar-\ | | The size of this |
713 | | | unit.size| | software image |
714 +-----------------+---------+----------+------------+-------------------------+
715 | sw\_image | yes | string | | A reference to the |
716 | | | | | actual software image |
717 | | | | | within VNF Package, or |
719 +-----------------+---------+----------+------------+-------------------------+
720 | operating\ | no | string | | Identifies the operating|
721 | _system | | | | system used in the |
722 | | | | | software image. |
723 +-----------------+---------+----------+------------+-------------------------+
724 | supported\ | no | list | | Identifies the |
725 | _virtualization\| | | | virtualization |
726 | _enviroment | | | | environments (e.g. |
727 | | | | | hypervisor) compatible |
728 | | | | | with this software image|
729 +-----------------+---------+----------+------------+-------------------------+
737 tosca.artifacts.nfv.SwImage:
739 derived\_from: tosca.artifacts.Deployment.Image
741 properties or metadata:
779 type: scalar-unit.size # Number
785 type: scalar-unit.size # Number
791 type: scalar-unit.size # Number
807 supported\_virtualisation\_environments:
818 .. |image1| image:: ../Image1.png
822 .. |image2| image:: ../Image2.png