diff options
Diffstat (limited to 'docs/Chapter5.rst')
-rw-r--r-- | docs/Chapter5.rst | 1538 |
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 ======= |