TOSCA Simple Profile in YAML

Modelling of InstantiationLevel in NFV profile

Source:Arturo Martin de >

Calin Curescu <>

Date: March19, 2018

Type: Discussion

Purpose: Consultation within Simple YAML WG

Discussion:

This discussion paper describes a preliminary proposal to be adopted by SOL001 as long as no equivalent for instantiation level is natively supported by the Simple Porfile in YAML.

Revision History:

R1 – initial proposal

Introduction

In ETSI NFV IFA011 (VNFD), the VNF deployment flavour IE contains a property (attribute in IFA011 terms) called instantiationLevel. A VNF DF may contain 1 or multiple instantiationLevels.

Each instantiationLevel specifies:

  • The number of instances to deploy of each constituent VDU at VNF instantiation
  • The bit rate requirementsof each constituent virtualLink at VNF instantiation
  • The scaling level within the scaling range for each so-called scalingAspect that corresponds to thisinstantiationLevel

It is recognized within the TOSCA YAML group that the Simple Profile in YAML does not support a mechanism that corresponds to the instantiationLevel, and it may be of general interest to add it to version 1.3.

This discussion paper describes a preliminary proposal to be adopted by SOL001 as long as no equivalent for instantiation level is natively supported by the Simple Profile in YAML.

VNFD IEs in IFA011

To facilitate the reading, relevant IEs are listed below.

Table 7.1.8.2.2-1: Attributes of the VnfDf information element

Attribute / Qualifier / Cardinality / Content / Description
flavourId / M / 1 / Identifier / Identifier of this DF within the VNFD.
description / M / 1 / String / Human readable description of the DF.
vduProfile / M / 1..N / VduProfile / Describes additional instantiation data for the VDUs used in this flavour.
virtualLinkProfile / M / 0..N / VirtualLinkProfile / Defines the internal VLD along with additional data which is used in this DF. See notes 1 and 2.
instantiationLevel / M / 1..N / InstantiationLevel / Describes the various levels of resources that can be used to instantiate the VNF using this flavour. Examples: Small, Medium, Large.
If there is only one "instantiationLevel" entry, it shall be treated as the default instantiation level for this DF.
defaultInstantiationLevelId / M / 0..1 / Identifier / This attribute references the "instantiationLevel" entry which defines the default instantiation level for this DF. It shall be present if there are multiple "instantiationLevel" entries.
supportedOperation / M / 0..N / Enum / Indicates which operations are available for this DF via the VNF LCM interface.
Instantiate VNF, Query VNF and Terminate VNF are supported in all DF and therefore need not be included in this list.
vnfLcmOperationsConfiguration / M / 1 / VnfLcmOperationsConfiguration / Configuration parameters for the VNF Lifecycle Management operations.
affinityOrAntiAffinityGroup / M / 0..N / AffinityOrAntiAffinityGroup / Specifies affinity or anti-affinity relationship applicable between the virtualisation containers (e.g. virtual machines) to be created using different VDUs or internal VLsto be created usingdifferent VnfVirtualLinkDesc(s) in the same affinity or anti-affinity group. See clause 7.1.8.12.
(See note 3).
vnfIndicator / M / 0..N / VnfIndicator / Declares the VNF indicators that are supported by this VNF (specific to this DF).
monitoringParameter / M / 0..N / MonitoringParameter / Specifies the virtualised resource related performance metrics to be tracked by the VNFM. MonitoringParameter is defined in clause7.1.11.3.
scalingAspect / M / 0..N / ScalingAspect / The scaling aspects supported by this DF of the VNF. scalingAspect shall be present if the VNF supports scaling.
initialDelta / M / 0..1 / ScalingDelta / Represents the minimum size of the VNF (i.e. scale level zero for all scaling aspects).
Shall be present if the "aspectDeltaDetails" attribute is present in the "ScalingAspect" information element.
NOTE 1:This allows for different VNF internal topologies between DFs.
NOTE 2:virtualLinkProfile needs to be provided for all VLs that the CPs of the VDUs in the VDU profiles connect to.
NOTE 3:In the present document, including either VDU(s) or VnfVirtualLinkDesc(s) into the same affinity or anti-affinity group is supported. Extension to support including both VDU(s) andVnfVirtualLinkDesc(s) into the same affinity or anti-affinity group is left for future specification.

Table 7.1.8.7.2-1: Attributes of the InstantiationLevel information element

Attribute / Qualifier / Cardinality / Content / Description
levelId / M / 1 / Identifier / Uniquely identifies a level with the DF.
description / M / 1 / String / Human readable description of the level.
vduLevel / M / 1..N / VduLevel / Indicates the number of instance of this VDU to deploy for this level.
virtualLinkBitRateLevel / M / 0..N / VirtualLinkBitRateLevel / Specifies bitrate requirements applicable to virtual links created from particular virtual link descriptors for this level.
See note.
scaleInfo / M / 0..N / ScaleInfo / Represents for each aspect the scale level that corresponds to this instantiation level. scaleInfo shall be present if the VNF supports scaling.
NOTE:If not present, it is assumed that the bitrate requirements can be derived from those specified in the VduCpd instances applicable to the internal VL. If present in both the InstantiationLevel and the VduCpd instances applicable to the internal VL, the highest value takes precedence.

Table 7.1.8.9.2-1: Attributes of the VduLevel information element

Attribute / Qualifier / Cardinality / Content / Description
vduId / M / 1 / Identifier (Reference to Vdu) / Uniquely identifies a VDU.
numberOf Instances / M / 1 / Integer / Number of instances of VNFC based on this VDU to deploy for an instantiation level or for a scaling delta.

Table 7.1.10.5.2-1: Attributes of the VirtualLinkBitRateLevel information element

Attribute / Qualifier / Cardinality / Content / Description
vnfVirtualLinkDescId / M / 1 / Identifier
(Reference to VnfVirtualLinkDesc) / Uniquely identifies a VnfVirtualLinkDesc.
bitrateRequirements / M / 1 / LinkBitrateRequirements / Bitrate requirements for an instantiation level or bitrate delta for a scaling step.

Table 7.1.8.6.2-1: Attributes of the LinkBitrateRequirements information element

Attribute / Qualifier / Cardinality / Content / Description
root / M / 1 / Number / Throughput requirement of the link
(e.g. bitrate of E-Line, root bitrate of E-Tree, aggregate capacity of E-LAN).
leaf / M / 0..1 / Number / Throughput requirement of leaf connections to the link when applicable to the connectivity type (e.g. for E-Tree and ELAN branches).
See note.
NOTE:The present document does not specify the means to declare different bitrate requirements for leaf connections (e.g. E-LAN leaves).

Table 7.1.8.8.2-1: Attributes of the ScaleInfo information element

Attribute / Qualifier / Cardinality / Content / Description
aspectId / M / 1 / Identifier
(Reference to ScalingAspect) / Reference to the scaling aspect.
scaleLevel / M / 1 / Integer / The scale level, greater than or equal to 0.
NOTE:Vertical scaling (scale up, scale down) is not supported in the present document.

Use of instantiationLevel in ETSI NFV

When requesting an instantiation of a VNF, it is expected that the consumer of the operation will indicate the desired instantiationLevel. If nothing is indicated, the defaultInstantiationLevel will apply,

VNFD model in NFV Profile (SOL001)

The VNFD in NFV Profile (SOL001) will consist at least of:

  • an abstract VNF node type definition including properties defined in IFA011 VNFD IE (vnfProvider, vnfProductName, etc. )
  • One or more service templates, each with a topology template, that represents a particular deployment flavour. The service template will contain node template definitions for constituent Vdus, virtual links, connection points, etc. The service template is able to substitute for a node template of the abstract VNF node type mentioned in the first bullet.

Basics of the proposal

  • The VNF node type definition includes an instantiation_level property which is a list of tosca.datatypes.nfv.IntantiationLevels
  • The service template including the node template of abstract VNF type receives the desired instantiation level as input.
  • The implementation scripts associated to the ‘create’ operation of the Vdu and VirtualLink node templates use as input the element of the list of instantiation levels which has been selected
  • get_property is used to pass information from the VNF node template to the Vdu and VirtualLink node templates.

Potential issues:

- The node template that contains the instantiation_levels property (VNF_A) and the node templates that need this information (VDU_A, VDU_B, VL_1, VL_2) are in different service templates: VNF_A is in the top level service template, while Vdus and VirtualLink nodes are in the low level service templates.

- Given the certain complexity of the InstantiationLevel datatype the grammar of the get_property function becomes cumbersome.

- How to pass the value of the chosen instantiation_level (which is not a static property) from the VNF node template to the Vdus and VirtualLink node templates.

Example

Top level service template:

tosca_definitions_version: tosca_simple_profile_yaml v 1.2
node_types:
tosca.nodes.nfv.VNF_A
derived from:
properties:
instantiation_levels:
type: list
entry_schema:
type: tosca.datatypes.nfv.InstatiationLevel
required: true
default_instantiation_level
type: integer
required: false
# other properties and requirements omitted for brevity
topology template:
inputs:
instantiation_level:
type: integer
description: instantiation_level received from the API
constraints:
- valid_values: [ 1, 2]
node_templates:
VNF_A:
type: tosca.nodes.nfv.VNF_A
properties:
instantiation_levels:
- >
description: "Basic Level", vdu_levels: {VDU_A: 1, VDU_B: 2}, virtual_link_bit_rate_levels: {VL_1: {root: 1000000}, VL_2: {root: 1000000}}
- >
description: "Power Level", vdu_levels: {VDU_A: 4, VDU_B: 2}, virtual_link_bit_rate_levels: {VL_1: {root: 1000000}, VL_2: {root: 1000000}}
default_instantiation_level: 1
# other properties, requirements and capabilities omitted for brevity

Low level service template:

tosca_definitions_version: tosca_simple_profile_yaml v 1.2
topology template:
substitution_mappings:
node_type: tosca.nodes.nfv.VNF_A
# requirements mapping omitted for brevity
VDU_A:
type:tosca.nodes.nfv.Vdu.Compute
properties:
# omitted for brevity
requirements:
# omitted for brevity
capabilities:
# omitted for brevity
interfaces:
Standard:
create:
implementation: instantiateVDU_A.sh
inputs:
instantiation_level: # integer value, populated from API or from default_instantiation_level
vdu_A_level: {get_property:[ VNF_A, instantiation_levels, instantiation_level , vdu_level, VDU_A ]}
VDU_B:
type:tosca.nodes.nfv.Vdu.Compute
properties:
# omitted for brevity
requirements:
# omitted for brevity
capabilities:
# omitted for brevity
interfaces:
Standard:
create:
implementation: instantiateVDU_B.sh
inputs:
instantiation_level: # integer value, populated from API or from default_instantiation_level
vdu_B_level: {get_property:[ VNF_A, instantiation_levels, instantiation_level , vdu_level, VDU_B ]}
VL_1:
type: tosca.nodes.nfv.VnfVirtualLink
properties:
# omitted for brevity
requirements:
# omitted for brevity
capabilities:
# omitted for brevity
interfaces:
Standard:
create:
implementation: instantiateVL_1.sh
inputs:
instantiation_level: # integer valu,e populated from API or from default_instantiation_level
vl_1_bitrate_level: {get_property:[ VNF_A, instantiation_levels, instantiation_level , virtualLink_bit_rate_level, VDU_B ]}

Supporting type definitions

tosca.nodes.vnf.VNF_A

Properties

(Other properties omitted)
Name / Required / Type / Constraints / Description
instantiation_levels / yes / list of tosca.datatypes.nfv.InstantiationLevel / Describes the various levels of resources that can be used to instantiate the VNF using this flavour. Examples: Small, Medium, Large.
If there is only one "instantiationLevel" entry, it shall be treated as the default instantiation level for this DF.
default_instantiation_level / no / Integer / This property references the "instantiationLevel" entry which defines the default instantiation level for this DF. It shall be present if there are multiple "instantiationLevel" entries.
Its value is the index of the element in the above list that holds the defaultInstantiationLevel.

tosca.datatypes.nfv.InstantiationLevel

Properties

Name / Required / Type / Constraints / Description
description / yes / String / Human readable description of the level.
vdu_levels / yes / Map of tosca.datatypes.nfv.VduLevel / Indicates the number of instances of each VDU to deploy for this level.
virtual_link_bit_rate_levels / no / Map of tosca.datatypes.nfv.LinkBitRequirements / Specifies bitrate requirements applicable to virtual links created from particular virtual link descriptors for this level.
scale_info / no / Map of tosca.datatypes.nfv.ScaleInfo / Represents for each aspect the scale level that corresponds to this instantiation level. scaleInfo shall be present if the VNF supports scaling.

Note: VDU node template names are used as key in the vdu_levels map. VirtualLink node template names are used as key in the virtual_link_bit_rate_levels map.

tosca.datatypes.nfv.VduLevel

Properties

Name / Required / Type / Constraints / Description
number_of_instances / Yes / Integer / Number of instances of VNFC based on this VDU to deploy for this level.

tosca.datatypes.nfv.LinkBitRequirements

Properties

Name / Required / Type / Constraints / Description
root / yes / Integer / Specifies the throughput requirement of the link
(e.g. bitrate of E-Line, root bitrate of E-Tree, aggregate capacity of E-LAN).
leaf / no / Integer / Specifies the throughput requirement of leaf connections to the link when applicable to the connectivity type (e.g. for E-Tree and ELAN branches).