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:

  1. the node type of DF in the VNFD service template matches the one defined in substitution mapping of lower level DF service template.
  2. 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 / VnfDeploymentFlavour
Type Qualified Name / tosca: VnfDeploymentFlavour
Type URI / tosca.nodes.nfv.DF

6.10.x.15.9.7.1 Properties

Name / Required / Location / Constraints / Description
flavour_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”