TOSCA NFV/SDN Adhoc
Source:Priya T.G, , NetCracker
Date: October, 2017
Type: Discussion & Decision
Purpose: Proposal with example for mapping VNF Deployment FlavorIE to IFA011
Discussion:
VNF Deployment Flavor IE as per section 7.1.8.2.2 in IFA 11.
Revision History:
R1 – Changes to the entire document with clarification regarding which entities are modelled in which template (i.e. either top level or lower level service templates):
Updated properties section - third column indicates where the Deployment flavour entities are described
Updated examples illustrating description of connection point, VDU Compute, Virtual links, Instantiation Level, Scaling Aspect and Scale info in appropriate templates
R2 – Removed the requirements/capabilities and substitution mappings section part in top level service template as per comments received in the meeting to facilitate ease of understanding of the substitution mapping concept for deployment flavour
R3 – Added diagrams to illustrate the substitution mapping concept , updated the examples
Change #1
6.2 VNFD based on OASIS TOSCA
6.2.xVNF deployment flavour model design
The VNF Deployment Flavour describes a specific deployment version of a VNF. There shall be one top level service template serves as the ‘entry point’ and optionally one or multiple lower level service templates each corresponding to a deployment flavour in a VNF package. Figure 6.2.x-1 illustrates the main TOSCA model design for VNF deployment flavour. The proposed grammar for substitution mappings is available in TOSCA Simple Profile Specifications v1.2 ( Section 14.4.1 Matching a node filter target against a type catalog with substitution )
Figure 6.2.x-1 TOSCA model design for VNF deployment flavour
6.2.x.1Top level service template design
If multiple deployment flavours are needed for a VNFD design, in the top level service template, deployment flavour shall be represented as a node template with the flavour_ID property. The value of the flavour_ID can come from the external request as defined by IFA007 and IFA008 through input section.
6.2.x.2Lower level deployment flavour service template design
Each specific deployment flavour shall be designed as a separate service template in the lower level. The substitution mappings key name shall be used in the lower level deployment flavour service template
6.2.x.3Matching concept
The matching from the top level service template to a specific lower level deployment flavour service template shall be based on the following rules:
- the node type of DF in the VNFD service template matches the one defined in substitution mapping of lower level DF service template.
- When flavour_id property is fed as input during run time (get_input), selection of appropriate lower level service template is achieved through matching the flavour_id value based on the “property constraint” of substitution mappings
The VNF Deployment Flavour describes a specific deployment version of a VNF. Deployment Flavour is represented as a node type
There can be multiple service templates each corresponding to a deployment flavour
A top level service template serves as the “entry point” for the TOSCA orchestrator.
When flavour_id is fed as input during run time (get_input), selection of appropriate lower level service template is achieved through matching of “property constraint” of substitution mappings
The proposed grammar for substitution mappings is available in TOSCA Simple Profile Specifications v1.2 ( Section 14.4.1 Matching a node filter target against a type catalog with substitution )
Change #2
6.10.x5.9.7 tosca.nodes.nfv.DF
Shorthand Name / VnfDeploymentFlavourType Qualified Name / tosca: VnfDeploymentFlavour
Type URI / tosca.nodes.nfv.DF
6.10.x.15.9.7.1 Properties
Name / Required / Location / Constraints / Descriptionflavour_id / yes / In top level service template and topology template / Deployment Flavour identifier within the VNFD.
description / yes / In DF topology template / Human readable description of Deployment Flavour
vdu_profile / yes / Described in DF topology template / Describes additional instantiation data for VDUs specific to this Deployment Flavour
vl_profile / no / Described in DF topology template / Defines the internal VLD along with additional data specific to this Deployment Flavour
instantiation_levels / yes / Described as a Policy** in DF topology template / 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_id / yes / isDefault Property in InstantiationLevel ** inDescribed in DF topology template / This property references the "instantiationLevel" entry which defines the default instantiation level for this DF. Present if there are multiple "instantiationLevel" entries.
supported_operations / no / Described in DF topology template / Indicates which operations are available for this Deployment Flavour via the VNF LCM interface (other than
Instantiate VNF, Query VNF and Terminate VNF which are supported in all flavours)
lcm_operations_configuration / no / Described in DF topology template / Configuration parameters for the VNF Lifecycle Management operations.
affinity_or_anti_affinity_groups / no / Described in DF topology template / Specifies affinity or anti-affinity relationship applicable between the virtualization containers (e.g. virtual machines) to be created using different VDUs or internal VLs to be created using different VnfVirtualLinkDesc(s) in the same affinity or anti-affinity group.
Monitoring_parameters / no / Described in DF topology template and top level service template / Monitoring parameters of VNF for this Deployment Flavour
scaling_aspects / no / Described as a Policy ** in DF topology template / The scaling aspects supported by this Deployment Flavour of the VNF. Present if the VNF supports scaling.
6.10.x.2 Definition
tosca.nodes.nfv.DF:derived_from: tosca.nodes.Root
properties:
flavour_id:
type: string # Identifier
Change #3
A.x Example
A.x.1 Top Level Service Template
tosca_definitions_version: tosca_simple_yaml_1_2
description: Top level service template
node_types:
tosca.nodes.nfv.vnfd
requirements:
- connect:
capability: tosca.capabilities.nfv.VirtualLinkable
relationship: tosca.relationships.nfv.VirtualLinksTo
node: tosca.nodes.nfv.VnfVirtualLinkDesc
capabilities:
forwarder_connect:
type: tosca.capabilities.nfv.Forwarder
VNFC_1_VNF_host:
type: tosca.capabilities.Container
topology_template:
inputs:
deployment_flavour:
type: string
required: true
---
---
node_templates:
#Deployment Flavour as node type
DF:
type: test.nodes.nfv.VNF.DF
directives: [ substitutable ]
properties:
flavour_id: { get_input: deployment_flavour }
#Internal and External Connection Points of VNF
InternalCp_1:
type: tosca.nodes.nfv.VduCpd
properties:
layer_protocol: ipv4
description: Internal connection point
requirements:
- virtual_binding:
node: DF
capability: virtual_binding
- dependency: InternalCp_2
- virtual_link: InternalVL_1
node: DF
capability: InternalVL_1_virtual_linkable
ExternalCp_1:
type: tosca.nodes.nfv.VnfExtCpd
properties:
layer_protocol: ipv4
---
---
requirements:
---
InternalVL_1:
type: tosca.nodes.nfv.VnfVirtualLinkDesc
properties:
connectivity_type:
layer_protocol: …
flow_pattern: …
-----
requirements:
- vl_profile:
node: DF
capability: vl_profile
# VNF Components:
VNFC_1:
type: tosca.nodes.nfv.VDU.Compute
properties:
name: …
description: …
configurable_properties:
capabilities:
virtual_compute:
virtual_memory:
virtual_mem_size: …
virtual_cpu:
num_virtual_cpu: …
cpu_architecture: …
virtual_cpu_clock: ….
artifacts:
sw_image:
type: tosca.artifacts.nfv.SwImage
file: …
properties:
name: …
version: …
checksum: …
container_format: …
disk_format: …
min_disk: …
size: …
supported_virtualisation_environments:
- …
configuration:
------
requirements:
- vdu_profile:
node: DF
capability: vdu_profile
- The VNF Descriptor serves as the top level main service template. This service template describes the Vnfd node type with certain properties (as described in IFA 11, section 7.1.2.2).
- The value of deployment flavour is fed as input during run time using get_input
- Deployment Flavour is a node type with directives “substitutable”
- Based on this directive and the value of flavour id fed as input, the TOSCA orchestrator looks for the appropriate lower level service template with matching flavour _id property. Two deployment flavours exist – “flavour1” and “flavour2” which are modelled in two different service templates which act as lower level service templates.
- An appropriate topology template with matching flavour_id is substituted by the TOSCA orchestrator for the for DF node type during run time
- The top level service template describes the external and internal connection points of the VNF and “static” parts of Virtual Links and VDUs that don’t change between Deployment Flavours
A.x.2 Lower Level Service Template with Deployment Flavour “flavour1”
tosca_definitions_version: tosca_simple_yaml_1_2
description: Lower level service template for deployment flavour “flavour1”
test.nodes.nfv.VNF.DF:
derived_from: tosca.nodes.nfv.DF
properties:
…………………………
…………………………
capabilities:
virtual_binding:
type: tosca.capabilities.nfv.VirtualBinding
VNFC_1_VNF_host:
type: tosca.capabilities.Container
InternalVL_1_virtual_linkable:
type: tosca.nodes.nfv.VnfVirtualLinkDesc
vdu_Profile:
type: tosca.capabilities.nfv.VDUProfile
vl_Profile:
type: tosca.capabilities.nfv.VLProfile
topology_template:
substitution_mappings:
node_type: test.nodes.nfv.VNF.DF
properties:
flavour_id: flavour1
capabilities:
VNFC_1_VNF_host: [VNFC_1, host]
virtual_binding: [VNFC_1, virtual_binding]
vl_Profile: [VL_Profile, vl_Profile]
vdu_profile: [VDU_Profile, vdu_Profile]
InternalVL_1_virtual_linkable: [InternalVL_1, virtual_link]
node_templates:
# VNF Components:
VNFC_1:
type: tosca.nodes.nfv.VDU.Compute
properties:
name: …
description: …
configurable_properties:
capabilities:
virtual_compute:
virtual_memory:
virtual_mem_size: …
virtual_cpu:
num_virtual_cpu: …
cpu_architecture: …
virtual_cpu_clock: ….
artifacts:
sw_image:
type: tosca.artifacts.nfv.SwImage
file: …
properties:
name: …
version: …
checksum: …
container_format: …
disk_format: …
min_disk: …
size: …
supported_virtualisation_environments:
- …
configuration:
------
# Virtual Links:
InternalVL_1:
type: tosca.nodes.nfv.VnfVirtualLinkDesc
properties:
connectivity_type:
layer_protocol: …
flow_pattern: …
test_access: …
description: ..
vl_flavours: …
VL_Profile:
type: tosca.nodes.nfv.vlprofile
vl_flavours: …
VDU_Profile:
type: tosca.nodes.nfv.vduprofile
minNumberOfInstances:
maxNumberOfInstances:
# Scaling associatedGroups:
VNFC_1_ScalingGroup:
type: tosca.groups.nfv.VnfdElementGroup
description:
members: [ VNFC_1 ]
# Instantiation Levels:
- instantiationLevel1:
type: tosca.policies.nfv.instantiationlevel
properties:
description:
isDefault: true
vduLevels:
VNFC_1:
numberOfInstances: 2
scaleInfo:
VNFC_1_ScaleAspect:
scaleLevel: 0
# Scaling Aspects:
------
------
- VNFC_1_ScaleAspect:
type: tosca.policies.nfv.scalingAspect
properties:
name:
description:
maxScaleLevel: 5
targets: [ VNFC_1_ScalingGroup ]
workflows:
instantiate:
description:
inputs:
some_custom_parameter:
type: boolean
default: false
---
----
scale:
description:
inputs:
scaling_by_more_than_one_step_supported:
type: boolean
default: false
constraints:
- valid_values: [ false ]
---
---
scale_to_level:
description:
inputs:
arbitrary_target_vevels_supported:
type: boolean
default: true
constraints:
- valid_values: [ true ]
---
---
heal:
description:
inputs:
cause:
type: string
constraints:
- valid_values: [failure, maintenance]
-----
------
terminate:
description:
inputs:
min_graceful_termination_timeout:
type: integer
default: 60
max_recommended_graceful_termination_timeout:
type: integer
----
-----
- The lower service template has the same node type as the DF node type in top level service template and describes VDU profile, Virtual Link profile, Scaling Aspect, Scale Info and Instantiation Level
- The flavour_id is “flavour1”
A.x.3 Lower Level Service Template with Deployment Flavour “flavour2”
tosca_definitions_version: tosca_simple_yaml_1_2
description: Lower level service template for deployment flavour “flavour2”
test.nodes.nfv.VNF.DF:
derived_from: tosca.nodes.nfv.DF
properties:
…………………………
capabilities:
virtual_binding:
type: tosca.capabilities.nfv.VirtualBinding
VNFC_1_VNF_host:
type: tosca.capabilities.Container
vl_Profile:
type: tosca.capabilities.nfv.VLProfile
vdu_profile:
type: tosca.capabilities.nfv.VDUProfile
InternalVL_1_virtual_linkable:
type: tosca.nodes.nfv.VnfVirtualLinkDesc
topology_template:
substitution_mappings:
node_type: test.nodes.nfv.VNF.DF
properties:
flavour_id: flavour2
capabilities:
VNFC_1_VNF_host: [VNFC_1, host]
virtual_binding: [VNFC_1, virtual_binding]
vl_profile: [VL_Profile, vl_profile]
vdu_profile: [VDU_Profile, vdu_profile]
InternalVL_1_virtual_linkable: [InternalVL_1, virtual_link]
node_templates:
# VNF Components:
VNFC_1:
type: tosca.nodes.nfv.VDU.Compute
properties:
name: …
description: …
configurable_properties:
capabilities:
virtual_compute:
virtual_memory:
virtual_mem_size: …
virtual_cpu:
num_virtual_cpu: …
cpu_architecture: …
virtual_cpu_clock: ….
artifacts:
sw_image:
type: tosca.artifacts.nfv.SwImage
file: …
properties:
name: …
version: …
checksum: …
container_format: …
disk_format: …
min_disk: …
size: …
supported_virtualisation_environments:
- …
configuration:
------
# Virtual Links:
InternalVL_1:
type: tosca.nodes.nfv.VnfVirtualLinkDesc
properties:
connectivity_type:
layer_protocol: …
flow_pattern: …
test_access: …
description: ..
vl_flavours: …
VL_Profile:
type: tosca.nodes.nfv.vlprofile
vl_flavours: …
VDU_Profile:
type: tosca.nodes.nfv.vduprofile
minNumberOfInstances: …
maxNumberOfInstances:…..
groups:
# Scaling associatedGroups:
VNFC_1_ScalingGroup:
type: tosca.groups.nfv.VnfdElementGroup
description:
members: [ VNFC_1 ]
policies:
# Instantiation Levels:
- instantiationLevel1:
type: tosca.policies.nfv.instantiationlevel
properties:
description:
isDefault: true
vduLevels:
VNFC_1:
numberOfInstances: 1
scaleInfo:
VNFC_1_ScaleAspect:
scaleLevel: 1
- instantiationLevel2:
type: tosca.policies.nfv.instantiationlevel
properties:
description:
isDefault: false
vduLevels:
VNFC_1:
numberOfInstances: 2
scaleInfo:
VNFC_1_ScaleAspect:
scaleLevel: 2
# Scaling Aspects:
- VNFC_1_ScaleAspect:
type: tosca.policies.nfv.scalingAspect
properties:
name:
description:
maxScaleLevel: 5
targets: [ VNFC_1_ScalingGroup ]
workflows:
instantiate:
description:
inputs:
some_custom_parameter:
type: boolean
default: false
---
scale:
description:
inputs:
scaling_by_more_than_one_step_supported:
type: boolean
default: false
constraints:
- valid_values: [ false ]
---
---
scale_to_level:
description:
inputs:
arbitrary_target_vevels_supported:
type: boolean
default: true
constraints:
- valid_values: [ true ]
---
---
heal:
description:
inputs:
cause:
type: string
constraints:
- valid_values: [ failure, maintenance ]
----
----
terminate:
description:
inputs:
min_graceful_termination_timeout:
type: integer
default: 60
max_recommended_graceful_termination_timeout:
type: integer
---
- The lower service template has the same node type as the DF node type in top level service template and describes VDU profile, Virtual Link profile, Scaling Aspect, Scale Info and Instantiation Level
- The flavour_id is “flavour2”