summaryrefslogtreecommitdiffstats
path: root/docs/Chapter5.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/Chapter5.rst')
-rw-r--r--docs/Chapter5.rst1538
1 files changed, 1538 insertions, 0 deletions
diff --git a/docs/Chapter5.rst b/docs/Chapter5.rst
index 9484b95..5dbc6fe 100644
--- a/docs/Chapter5.rst
+++ b/docs/Chapter5.rst
@@ -4,6 +4,1544 @@
a. TOSCA YAML
=============
+
+Introduction
+-------------
+
+This reference document is the VNF TOSCA Template Requirements for
+OpenO, which provides recommendations and standards for building VNF
+TOSCA templates compatible with OpenO– initial implementations of
+Network Cloud. It has the following features:
+
+1. VNF TOSCA template designer supports GUI and CLI.
+
+2. VNF TOSCA template is aligned to the newest TOSCA protocol, “Working
+ Draft 04-Revision 06”.
+
+3. VNF TOSCA template supports EPA features, such as NUMA, Hyper
+ Threading, SRIOV, etc.
+
+Intended Audience
+-----------------
+
+This document is intended for persons developing VNF TOSCA templates
+that will be orchestrated by OpenO.
+
+Scope
+------
+
+OpenO implementations of Network Cloud supports TOSCA Templates, also
+referred to as TOSCA in this document.
+
+OpenO requires the TOSCA Templates to follow a specific format. This
+document provides the mandatory, recommended, and optional requirements
+associated with this format.
+
+Overview
+---------
+
+The document includes three charters to help the VNF vendors to use the
+VNF model design tools and understand the VNF package structure and VNF
+TOSCA templates.
+
+In the OPENO, VNF Package and VNFD template can be designed by manually
+or via model designer tools. VNF model designer tools can provide the
+GUI and CLI tools for the VNF vendor to develop the VNF Package and VNFD
+template.
+
+The VNF package structure is align to the NFV TOSCA protocol, and
+supports CSAR
+
+The VNFD and VNF 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.
+
+NFV TOSCA Template
+------------------
+
+TOSCA templates supported by OPENO must follow the requirements
+enumerated in this section.
+
+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
+
+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.
+
+VNF Descriptor Template
+-----------------------
+
+The VNF Descriptor (VNFD) describes the topology of the VNF by means of
+ETSI NFV IFA011 [IFA011] terms such as VDUs, Connection Points, Virtual
+Links, External Connection Points, Scaling Aspects, Instantiation Levels
+and Deployment Flavours.
+
+The VNFD (VNF Descriptor) is read by both the NFVO and the VNFM. It
+represents the contract & interface of a VNF and ensures the
+interoperability across the NFV functional blocks.
+
+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 (Vld)
+ and VNF External Connection Point Descriptors (VnfExternalCpd);
+
+- VNF deployment aspects: they are described in one or more deployment
+ flavours, including instantiation levels, supported LCM operations,
+ VNF LCM operation configuration parameters, placement constraints
+ (affinity / antiaffinity), minimum and maximum VDU instance numbers,
+ and scaling aspect for horizontal scaling.
+
+The following table defines the TOSCA Type “derived from” values that
+SHALL be used when using the TOSCA Simple Profile for NFV version 1.0
+specification [TOSCA-Simple-Profile-NFV-v1.0] for NFV VNFD.
+
++-----------------------------------------+---------------------------------------+-----------------------+
+| **ETSI NFV Element** | **TOSCA VNFD** | **Derived from** |
+| | | |
+| **[IFA011]** | **[TOSCA-Simple-Profile-NFV-v1.0]** | |
++=========================================+=======================================+=======================+
+| VNF | tosca.nodes.nfv.VNF | tosca.nodes.Root |
++-----------------------------------------+---------------------------------------+-----------------------+
+| VDU | tosca.nodes.nfv.VDU | tosca.nodes.Root |
++-----------------------------------------+---------------------------------------+-----------------------+
+| Cpd (Connection Point) | tosca.nodes.nfv.Cpd | tosca.nodes.Root |
++-----------------------------------------+---------------------------------------+-----------------------+
+| VduCpd (internal connection point) | tosca.nodes.nfv.VduCpd | tosca.nodes.nfv.Cpd |
++-----------------------------------------+---------------------------------------+-----------------------+
+| VnfVirtualLinkDesc (Virtual Link) | tosca.nodes.nfv.VnfVirtualLinkDesc | tosca.nodes.Root |
++-----------------------------------------+---------------------------------------+-----------------------+
+| VnfExtCpd (External Connection Point) | tosca.nodes.nfv.VnfExtCpd | tosca.nodes.Root |
++-----------------------------------------+---------------------------------------+-----------------------+
+| Virtual Storage | | |
++-----------------------------------------+---------------------------------------+-----------------------+
+| Virtual Compute | | |
++-----------------------------------------+---------------------------------------+-----------------------+
+| Software Image | | |
++-----------------------------------------+---------------------------------------+-----------------------+
+| Deployment Flavour | | |
++-----------------------------------------+---------------------------------------+-----------------------+
+| Scaling Aspect | | |
++-----------------------------------------+---------------------------------------+-----------------------+
+| Element Group | | |
++-----------------------------------------+---------------------------------------+-----------------------+
+| Instantiation Level | | |
++-----------------------------------------+---------------------------------------+-----------------------+
+
++--------------------------------------------------------------------+
+| +--------------------------------------------------------------+ |
+| | 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 | |
+| +--------------------------------------------------------------+ |
++====================================================================+
++--------------------------------------------------------------------+
+
+EPA 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 |
++------------------------------------------------+
+
+2. 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 |
++==================================+
++----------------------------------+
+
+3. 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" |
++-------------------------------------------------+
+
+4. 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" |
++-------------------------------------------------------------+
+
+5. 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" |
++------------------------------------------------------+
+
+NFV TOSCA Type Definition
+-------------------------
+
+tosca.capabilites.nfv.VirtualCompute
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
++---------------------------+-----------------------------------------+
+| **Shorthand Name** | VirtualCompute |
++===========================+=========================================+
+| **Type Qualified Name** | tosca: VirtualCompute |
++---------------------------+-----------------------------------------+
+| **Type URI** | tosca.capabilities.nfv.VirtualCompute |
++---------------------------+-----------------------------------------+
+| **derived from** | tosca.nodes.Root |
++---------------------------+-----------------------------------------+
+
+Properties
+^^^^^^^^^^
+
++-------------------------------------+------------+-----------------------------------------------------+---------------+---------------------------------------------------------+
+| Name | Required | Type | Constraints | Description |
++=====================================+============+=====================================================+===============+=========================================================+
+| request\_additional\_capabilities | No | tosca.datatypes.nfv.RequestedAdditionalCapability | | Describes additional capability for a particular VDU. |
++-------------------------------------+------------+-----------------------------------------------------+---------------+---------------------------------------------------------+
+| virtual\_memory | yes | tosca.datatypes.nfv.VirtualMemory | | Describes virtual memory of the virtualized compute |
++-------------------------------------+------------+-----------------------------------------------------+---------------+---------------------------------------------------------+
+| virtual\_cpu | yes | tosca.datatypes.nfv.VirtualCpu | | Describes virtual CPU(s) of the virtualized compute. |
++-------------------------------------+------------+-----------------------------------------------------+---------------+---------------------------------------------------------+
++-------------------------------------+------------+-----------------------------------------------------+---------------+---------------------------------------------------------+
+| name | yes | | | |
++-------------------------------------+------------+-----------------------------------------------------+---------------+---------------------------------------------------------+
+
+Definition
+^^^^^^^^^^
+
++-----------------------------------------------------------+
+| tosca.capabilities.nfv.VirtualCompute: |
+| |
+| derived\_from: tosca.capabilities.Root |
+| |
+| properties: |
+| |
+| requested\_additional\_capabilities: |
+| |
+| type: map |
+| |
+| entry\_schema: |
+| |
+| type: tosca.datatypes.nfv.RequestedAdditionalCapability |
+| |
+| required: false |
+| |
+| virtual\_memory: |
+| |
+| type: tosca.datatypes.nfv.VirtualMemory |
+| |
+| required: true |
+| |
+| virtual\_cpu: |
+| |
+| type: tosca.datatypes.nfv.VirtualCpu |
+| |
+| required: true |
++-----------------------------------------------------------+
+
+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 |
++-----------------------+-------------------------------+
+
+
+
+Attributes
+^^^^^^^^^^
+
+None
+
+
+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 | | Defines ability of VirtualBindable |
+| | | | |
+| | editor note: need to create a capability type | | |
++-------------------------+-------------------------------------------------+---------------+-----------------------------------------------------------------------------------------------------+
+
+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* <#DEFN_TYPE_CAPABILITIES_CONTAINER>`__ |
+| |
+| valid\_source\_types: [`*tosca.nodes.SoftwareComponent* <#DEFN_TYPE_NODES_SOFTWARE_COMPONENT>`__] |
+| |
+| 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* <#DEFN_TYPE_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 |
++-----------------------------------------------------------------------------------------------------+
+
+Artifact
+^^^^^^^^
++-----------+------------+-------------------------------+---------------+------------------------------------------------+
+| Name | Required | Type | Constraints | Description |
++===========+============+===============================+===============+================================================+
+| SwImage | Yes | tosca.artifacts.nfv.SwImage | | Describes the software image which is |
+| | | | | directly realizing this virtual storage |
++-----------+------------+-------------------------------+---------------+------------------------------------------------+
+
+
+|image2|
+
+
+
+tosca.nodes.nfv.Cpd
+~~~~~~~~~~~~~~~~~~~
+
+The TOSCA Cpd node represents network connectivity to a compute resource
+or a VL as defined by [ETSI GS NFV-IFA 011]. This is an abstract type
+used as parent for the various Cpd types.
+
++-----------------------+-----------------------+
+| Shorthand Name | Cpd |
++=======================+=======================+
+| Type Qualified Name | tosca:Cpd |
++-----------------------+-----------------------+
+| Type URI | tosca.nodes.nfv.Cpd |
++-----------------------+-----------------------+
+
+
+Attributes
+^^^^^^^^^^
+
++--------+------------+--------+---------------+---------------+
+| Name | Required | Type | Constraints | Description |
++========+============+========+===============+===============+
++--------+------------+--------+---------------+---------------+
+
+Requirements
+^^^^^^^^^^^^
+
+None
+
+Capabilities
+^^^^^^^^^^^^
+
+None
+
+Definition
+^^^^^^^^^^
+
++----------------------------------------------------------------------+
+| tosca.nodes.nfv.Cpd: |
+| |
+| derived\_from: tosca.nodes.Root |
+| |
+| properties: |
+| |
+| layer\_protocol: |
+| |
+| type:string |
+| |
+| constraints: |
+| |
+| - valid\_values: [ethernet, mpls, odu2, ipv4, ipv6, pseudo\_wire ] |
+| |
+| required:true |
+| |
+| role: #Name in ETSI NFV IFA011 v0.7.3 cpRole |
+| |
+| type:string |
+| |
+| constraints: |
+| |
+| - valid\_values: [ root, leaf ] |
+| |
+| required:flase |
+| |
+| description: |
+| |
+| type: string |
+| |
+| required: false |
+| |
+| address\_data: |
+| |
+| type: list |
+| |
+| entry\_schema: |
+| |
+| type: tosca.datatype.nfv.AddressData |
+| |
+| required:false |
++----------------------------------------------------------------------+
+
+Additional Requirement
+^^^^^^^^^^^^^^^^^^^^^^
+
+None.
+
+tosca.nodes.nfv.VduCpd
+~~~~~~~~~~~~~~~~~~~~~~
+
+The TOSCA node VduCpd represents a type of TOSCA Cpd node and describes
+network connectivity between a VNFC instance (based on this VDU) and an
+internal VL as defined by [ETSI GS NFV-IFA 011].
+
++-----------------------+--------------------------+
+| Shorthand Name | VduCpd |
++=======================+==========================+
+| Type Qualified Name | tosca: VduCpd |
++-----------------------+--------------------------+
+| Type URI | tosca.nodes.nfv.VduCpd |
++-----------------------+--------------------------+
+
+Properties
+^^^^^^^^^^
+
+
++-------------------------------+------------+------------------------------------------+---------------+----------------------------------------------------------+
+| Name | Required | Type | Constraints | Description |
++===============================+============+==========================================+==========================================================================+
+| bitrate_requirement | no | integer | | Bitrate requirement on this connection point. |
++-------------------------------+------------+------------------------------------------+---------------+----------------------------------------------------------+
+| virtual\_network\_interface_\ | no | VirtualNetworkInterfaceRequirements | | Specifies requirements on a virtual network |
+| requirements | | | | realising the CPs instantiated from this CPD |
++-------------------------------+------------+------------------------------------------+---------------+----------------------------------------------------------+
+
+Attributes
+^^^^^^^^^^
+
+None
+
+Requirements
+^^^^^^^^^^^^
+
++--------------------+------------+------------------------------------------+---------------+----------------------------------------------------------+
+| Name | Required | Type | Constraints | Description |
++====================+============+==========================================+===============+==========================================================+
+| virtual\_binding | yes | tosca.capabilities.nfv.VirtualBindable | | Describe the requirement for binding with VDU |
++--------------------+------------+------------------------------------------+---------------+----------------------------------------------------------+
+| virtual\_link | no | tosca.capabilities.nfv.VirtualLinkable | | Describes the requirements for linking to virtual link |
++--------------------+------------+------------------------------------------+---------------+----------------------------------------------------------+
+
+Definition
+^^^^^^^^^^
+
++----------------------------------------------------------------+
+| tosca.nodes.nfv.VduCpd: |
+| |
+| derived\_from: tosca.nodes.nfv.Cpd |
+| |
+| properties: |
+| |
+| bitrate\_requirement: |
+| |
+| type: integer |
+| |
+| required:false |
+| |
+| virtual\_network\_interface\_requirements |
+| |
+| type: list |
+| |
+| entry\_schema: |
+| |
+| type: VirtualNetworkInterfaceRequirements |
+| |
+| required:false |
+| |
+| requirements: |
+| |
+| - virtual\_link: |
+| |
+| capability: tosca.capabilities.nfv.VirtualLinkable |
+| |
+| relationship: tosca.relationships.nfv.VirtualLinksTo |
+| |
+| node: tosca.nodes.nfv.VnfVirtualLinkDesc - virtual\_binding: |
+| |
+| capability: tosca.capabilities.nfv.VirtualBindable |
+| |
+| relationship: tosca.relationships.nfv.VirtualBindsTo |
+| |
+| node: tosca.nodes.nfv.VDU |
++----------------------------------------------------------------+
+
+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 |
++---------------------------+--------------------------------------+
+
+tosca.artifacts.nfv.SwImage
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
++---------------------------+------------------------------------+
+| **Shorthand Name** | SwImage |
++===========================+====================================+
+| **Type Qualified Name** | tosca:SwImage |
++---------------------------+------------------------------------+
+| **Type URI** | tosca.artifacts.nfv.SwImage |
++---------------------------+------------------------------------+
+| **derived\_from** | tosca.artifacts.Deployment.Image |
++---------------------------+------------------------------------+
+
+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 |
++------------------------------------------+------------+--------------------+---------------+----------------------------------------------------------------------------------------------------+
+
+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 |
++-----------------------------------------------------+
+
+vNAT Example
+------------
+
+openovnf\_\_vOpenNAT.yaml
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
++-------------------------------------------------------------+
+| imports: |
+| |
+| - openonfv\_\_tosca.capabilities.Scalable.yaml |
+| |
+| - openonfv\_\_tosca.capabilities.nfv.Metric.yaml |
+| |
+| - openonfv\_\_tosca.capabilities.network.Bindable.yaml |
+| |
+| - openonfv\_\_tosca.capabilities.Attachment.yaml |
+| |
+| - openonfv\_\_tosca.capabilities.nfv.VirtualBindable.yaml |
+| |
+| - openonfv\_\_tosca.requirements.nfv.VirtualStorage.yaml |
+| |
+| - openonfv\_\_tosca.nodes.nfv.VDU.VirtualStorage.yaml |
+| |
+| - openonfv\_\_tosca.relationships.nfv.VirtualBindsTo.yaml |
+| |
+| - openonfv\_\_tosca.nodes.nfv.VDU.Compute.yaml |
+| |
+| - openonfv\_\_tosca.artifacts.nfv.SwImage.yaml |
+| |
+| - openonfv\_\_tosca.capabilities.nfv.VirtualCompute.yaml |
+| |
+| - openonfv\_\_tosca.capabilities.Container.yaml |
+| |
+| - openonfv\_\_tosca.capabilities.nfv.VirtualStorage.yaml |
+| |
+| - openonfv\_\_tosca.requirements.nfv.VirtualBinding.yaml |
+| |
+| - openovnf\_\_tosca.nodes.nfv.VNF.vOpenNAT.yaml |
+| |
+| - openonfv\_\_tosca.capabilities.Endpoint.Admin.yaml |
+| |
+| - openonfv\_\_tosca.capabilities.OperatingSystem.yaml |
+| |
+| - openonfv\_\_tosca.nodes.nfv.VduCpd.yaml |
+| |
+| - openonfv\_\_tosca.relationships.nfv.VDU.AttachedTo.yaml |
+| |
+| metadata: |
+| |
+| vnfProductName: openNAT |
+| |
+| vnfdVersion: 1.0.0 |
+| |
+| vnfProvider: intel |
+| |
+| vnfmInfo: GVNFM |
+| |
+| csarVersion: 1.0.0 |
+| |
+| vnfdId: openNAT-1.0 |
+| |
+| csarProvider: intel |
+| |
+| vnfProductInfoDescription: openNAT |
+| |
+| version: 1.0.0 |
+| |
+| csarType: NFAR |
+| |
+| vendor: intel |
+| |
+| localizationLanguage: '[english, chinese]' |
+| |
+| id: openNAT-1.0 |
+| |
+| defaultLocalizationLanguage: english |
+| |
+| vnfProductInfoName: openNAT |
+| |
+| vnfSoftwareVersion: 1.0.0 |
+| |
+| topology\_template: |
+| |
+| node\_templates: |
+| |
+| vdu\_vNat: |
+| |
+| artifacts: |
+| |
+| vNatVNFImage: |
+| |
+| file: /swimages/xenial-snat.qcow2 |
+| |
+| type: tosca.artifacts.nfv.SwImage |
+| |
+| properties: |
+| |
+| name: vNatVNFImage |
+| |
+| version: "1.0" |
+| |
+| checksum: "5000" |
+| |
+| container\_format: bare |
+| |
+| disk\_format: qcow2 |
+| |
+| min\_disk: 10 GB |
+| |
+| min\_ram: 1 GB |
+| |
+| size: 10 GB |
+| |
+| sw\_image: /swimages/xenial-snat.qcow2 |
+| |
+| operating\_system: unbantu |
+| |
+| attributes: |
+| |
+| tosca\_name: 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" |
+| |
+| 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" |
+| |
+| ovs\_dpdk: |
+| |
+| support\_mandatory: true |
+| |
+| requested\_additional\_capability\_name: ovs\_dpdk |
+| |
+| target\_performance\_parameters: |
+| |
+| sw:ovs\_dpdk: "true" |
+| |
+| virtual\_cpu: |
+| |
+| cpu\_architecture: X86 |
+| |
+| num\_virtual\_cpu: 2 |
+| |
+| properties: |
+| |
+| configurable\_properties: |
+| |
+| test: |
+| |
+| additional\_vnfc\_configurable\_properties: |
+| |
+| aaa: 1 |
+| |
+| name: vNat |
+| |
+| descrption: the virtual machine of vNat |
+| |
+| boot\_order: |
+| |
+| - vNAT\_Storage |
+| |
+| requirements: |
+| |
+| - virtual\_storage: |
+| |
+| capability: virtual\_storage |
+| |
+| node: vNAT\_Storage |
+| |
+| relationship: |
+| |
+| properties: |
+| |
+| location: /mnt/volume\_0 |
+| |
+| type: tosca.relationships.nfv.VDU.AttachedTo |
+| |
+| - local\_storage: |
+| |
+| node: tosca.nodes.Root |
+| |
+| type: tosca.nodes.nfv.VDU.Compute |
+| |
+| 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 |
+| |
+| vNAT\_Storage: |
+| |
+| attributes: |
+| |
+| tosca\_name: vNAT\_Storage |
+| |
+| properties: |
+| |
+| id: vNAT\_Storage |
+| |
+| size\_of\_storage: 10 GB |
+| |
+| rdma\_enabled: false |
+| |
+| type\_of\_storage: volume |
+| |
+| type: tosca.nodes.nfv.VDU.VirtualStorage |
+| |
+| substitution\_mappings: |
+| |
+| requirements: |
+| |
+| sriov\_plane: |
+| |
+| - SRIOV\_Port |
+| |
+| - virtual\_link |
+| |
+| node\_type: tosca.nodes.nfv.VNF.vOpenNAT |
+| |
+| tosca\_definitions\_version: tosca\_simple\_yaml\_1\_0 |
++-------------------------------------------------------------+
+
+openonfv\_\_tosca.nodes.nfv.VDU.VirtualStorage.yaml
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
++------------------------------------------------------------+
+| imports: |
+| |
+| - openonfv\_\_tosca.capabilities.nfv.VirtualStorage.yaml |
+| |
+| node\_types: |
+| |
+| tosca.nodes.nfv.VDU.VirtualStorage: |
+| |
+| capabilities: |
+| |
+| virtual\_storage: |
+| |
+| type: tosca.capabilities.nfv.VirtualStorage |
+| |
+| derived\_from: tosca.nodes.Root |
+| |
+| properties: |
+| |
+| id: |
+| |
+| type: string |
+| |
+| size\_of\_storage: |
+| |
+| type: string |
+| |
+| rdma\_enabled: |
+| |
+| required: false |
+| |
+| type: boolean |
+| |
+| type\_of\_storage: |
+| |
+| type: string |
+| |
+| tosca\_definitions\_version: tosca\_simple\_yaml\_1\_0 |
++------------------------------------------------------------+
+
+openonfv\_\_tosca.nodes.nfv.VduCpd.yaml
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
++-----------------------------------------------------------------+
+| data\_types: |
+| |
+| tosca.datatypes.nfv.L3AddressData: |
+| |
+| properties: |
+| |
+| number\_of\_ip\_address: |
+| |
+| required: false |
+| |
+| type: integer |
+| |
+| ip\_address\_assignment: |
+| |
+| type: boolean |
+| |
+| ip\_address\_type: |
+| |
+| constraints: |
+| |
+| - valid\_values: |
+| |
+| - ipv4 |
+| |
+| - ipv6 |
+| |
+| required: false |
+| |
+| type: string |
+| |
+| floating\_ip\_activated: |
+| |
+| type: string |
+| |
+| tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements: |
+| |
+| properties: |
+| |
+| name: |
+| |
+| required: false |
+| |
+| type: string |
+| |
+| support\_mandatory: |
+| |
+| type: boolean |
+| |
+| description: |
+| |
+| required: false |
+| |
+| type: string |
+| |
+| requirement: |
+| |
+| entry\_schema: |
+| |
+| type: string |
+| |
+| type: map |
+| |
+| tosca.datatype.nfv.AddressData: |
+| |
+| properties: |
+| |
+| address\_type: |
+| |
+| constraints: |
+| |
+| - valid\_values: |
+| |
+| - mac\_address |
+| |
+| - ip\_address |
+| |
+| type: string |
+| |
+| l2\_address\_data: |
+| |
+| required: false |
+| |
+| type: tosca.datatypes.nfv.L2AddressData |
+| |
+| l3\_address\_data: |
+| |
+| required: false |
+| |
+| type: tosca.datatypes.nfv.L3AddressData |
+| |
+| tosca.datatypes.nfv.L2AddressData: {} |
+| |
+| imports: |
+| |
+| - openonfv\_\_tosca.requirements.nfv.VirtualBinding.yaml |
+| |
+| - openonfv\_\_tosca.requirements.nfv.VirtualBinding.yaml |
+| |
+| node\_types: |
+| |
+| tosca.nodes.nfv.VduCpd: |
+| |
+| derived\_from: tosca.nodes.Root |
+| |
+| properties: |
+| |
+| virtual\_network\_interface\_requirements: |
+| |
+| entry\_schema: |
+| |
+| type: tosca.datatypes.nfv.VirtualNetworkInterfaceRequirements |
+| |
+| required: false |
+| |
+| type: list |
+| |
+| role: |
+| |
+| constraints: |
+| |
+| - valid\_values: |
+| |
+| - root |
+| |
+| - leaf |
+| |
+| required: false |
+| |
+| type: string |
+| |
+| bitrate\_requirement: |
+| |
+| required: false |
+| |
+| type: integer |
+| |
+| description: |
+| |
+| required: false |
+| |
+| type: string |
+| |
+| layer\_protocol: |
+| |
+| constraints: |
+| |
+| - valid\_values: |
+| |
+| - ethernet |
+| |
+| - mpls |
+| |
+| - odu2 |
+| |
+| - ipv4 |
+| |
+| - ipv6 |
+| |
+| - pseudo\_wire |
+| |
+| type: string |
+| |
+| address\_data: |
+| |
+| entry\_schema: |
+| |
+| type: tosca.datatype.nfv.AddressData |
+| |
+| required: false |
+| |
+| type: list |
+| |
+| requirements: |
+| |
+| - virtual\_binding: |
+| |
+| capability: tosca.capabilities.nfv.VirtualBindable |
+| |
+| occurrences: |
+| |
+| - 0 |
+| |
+| - UNBOUNDED |
+| |
+| - virtual\_link: |
+| |
+| capability: tosca.capabilities.nfv.VirtualBindable |
+| |
+| occurrences: |
+| |
+| - 0 |
+| |
+| - UNBOUNDED |
+| |
+| tosca\_definitions\_version: tosca\_simple\_yaml\_1\_0 |
++-----------------------------------------------------------------+
+
+.. |image1| image:: Image1.png
+ :width: 5.76806in
+ :height: 4.67161in
+.. |image2| image:: Image2.png
+ :width: 5.40486in
+ :height: 2.46042in
+
+
b. Heat
=======