...
- ETSI NSD to ONAP service descriptor translation by Anatoly Katzman
Materials to discuss:
Recommendations from the last DM call: ONAP NSD discussion v0_9.pptx, the deck also incorporates vCPE using SOL001.docx and service-VcpeWithAll-template.yml (by Thinh Nguyenphu (Unlicensed) and Michela Bevilacqua ):
Recommendation A: - SDC update VL type based on SOL001 v2.5.1. Avoid, vendor specific type
Recommendation B: - Deprecate the use of the capabilities to represent properties on the node
Recommendation C: - Deprecate all the type definition and adopt ETSI NSD model which is node type properties and in case extend ETSI model for ONAP specific properties (i.e. ONAP configuration properties)
Recommendation D: - Deprecate all the type definition and define a new (E2E) Service model that can be in the future adopt by ETSI and ONAP.
Reminder:
Dual nature of the ONAP data model:
Outside: support for SOL001, HEAT, and, possibly, other external data models – onboarding, integrations
Inside: ONAP has its own internal DM:
- org.openecomp.*
- tosca.*.nfv.*
The existing ONAP logic depends on the current ONAP internal model. "Deprecate everything" will break everything.
Alternative recommendations:
Recommendation 1:
Usage of capabilities and requirements - better judgement to be applied when adding capabilities and requirements to PNFs, VNFs, and Services. Today, the node types generated by SDC during PNF/VNF/Service composition include HUNDREDs of capabilities and requirements:
- During VNF/PNF/Service composition - SDC gathers ALL vacant capabilities and unfulfilled requirements of ALL internal nodes of the type VNF/PNF/Service implementing topology and exposes them through substitution_mapping as capabilities/requirements of the created VNF/PNF/Service type
- During ServiceProxy generation – SDC copies ALL vacant capabilities and unfulfilled requirements from the source service to the generated service proxy type.
The service designer should be able to specify which capabilities/requirements are RELEVANT for exposure on the created type.
Recommendation 2:
Deprecate Replace the tosca.*.nfv.* type definitions, and replace them with SOL001 v2.5.1. Retain the org.openecomp.* type definitions.
Recommendation 3:
When onboarding ETSI models (VNFDs, PNFDs, NSDs), apply the following translation rules:
- Zero translation for all tosca.*.nfv.* objects (nodes, capabilities, interfaces, properties, etc.) – including all CPs and VLs - for the exception of tosca.nodes.nfv.VNF, tosca.nodes.nfv.PNF, and tosca.nodes.nfv.NS
- Translate tosca.nodes.nfv.VNF into org.openecomp.resource.abstract.nodes.VF (as we do now)
- Translate tosca.nodes.nfv.PNF into org.openecomp.resource.abstract.nodes.PNF
- Translate tosca.nodes.nfv.NS into org.openecomp.resource.abstract.nodes.service
Recommendations slide presented to the Modeling sub-committee
Example:
Code Block | ||||
---|---|---|---|---|
| ||||
tosca_definitions_version: tosca_simple_yaml_1_2
metadata:
nsd_invariant_id: c3887fb3-d1b2-477f-86c4-fd641ee9a7cf
nsd_name: vcpe
nsd_file_structure_version: "1.0.0"
nsd_designer: ONAP
nsd_release_date_time: "2018-11-05 12:00:00"
description: VCPE Network Service
imports:
- Definitions/etsi_nfv_sol001_nsd_2_5_1_types.yaml
node_types:
onap.vcpe.NS:
# derived_from: tosca.nodes.nfv.NS
derived_from: org.openecomp.resource.abstract.nodes.service
properties:
vendor_provided_properties:
descriptor_id:
type: string
constraints: [ valid_values: [ b1bb0ce7-ebca-4fa7-95ed-4840d70a1111 ] ]
default: b1bb0ce7-ebca-4fa7-95ed-4840d70a1111
designer:
type: string
constraints: [ valid_values: [ MyServiceONAP] ]
default: MyServiceONAP
name:
type: string
constraints: [ valid_values: [ VCPEService ] ]
default: VCPEService
version:
type: string
constraints: [ valid_values: [ '1.0.0' ] ]
default: '1.0.0'
invariant_id:
type: string
constraints: [ valid_values: [ c3887fb3-d1b2-477f-86c4-fd641ee9a7cf] ]
default: c3887fb3-d1b2-477f-86c4-fd641ee9a7cf
flavour_id:
type: string
constraints: [ valid_values: [ simple ] ]
default: simple
onap.demo.vnfs.vCPE_Infrastructure_GW_VNF:
type: org.openecomp.resource.abstract.nodes.VF
## caps & reqs & props specific for this VNF type
onap.demo.vnfs.vCPE_Infrastructure_vGMUX_VNF:
type: org.openecomp.resource.abstract.nodes.VF
## caps & reqs & props specific for this VNF type
onap.demo.vnfs.vCPE_Infrastructure_VNF:
type: org.openecomp.resource.abstract.nodes.VF
## caps & reqs & props specific for this VNF type
onap.demo.vnfs.vCPE_Infrastructure_Metro_vBNG_VNF:
type: org.openecomp.resource.abstract.nodes.VF
## caps & reqs & props specific for this VNF type
onap.demo.vnfs.vCPE_Infrastructure_BGREMU_VNF:
type: org.openecomp.resource.abstract.nodes.VF
## caps & reqs & props specific for this VNF type
topology_template:
substitution_mappings:
node_type: onap.vcpe.NS
requirements:
#virtual_link: #what is external connection of the VNF?
node_templates:
vcpe_service:
type: onap.vcpe.NS
properties:
descriptor_id: b1bb0ce7-ebca-4fa7-95ed-4840d70a1111
designer: MyServiceONAP
name: VCPEService
version: '1.0.0'
invariant_id: c3887fb3-d1b2-477f-86c4-fd641ee9a7cf
flavour_id: simple
interfaces:
Nslcm:
instantiate:
implementation: instantiate.workflow.yaml
terminate:
implementation: terminate.workflow.yaml
vCPE_Infrastructure_GW_demo_app:
# type: tosca.nodes.nfv.VNF
type: onap.demo.vnfs.vCPE_Infrastructure_GW_VNF
properties:
descriptor_id: 3fca3543-07f5-492f-812c-ed462e4f94f4
provider: onap
product_name: vcpe_vgw
software_version: '1.0.0'
descriptor_version: '1.0.0'
flavour_id: simple
flavour_description: simple
vnfm_info: ['etsivnfm:v2.5.1']
vnf_profile:
instantiation_Level: level_1
min_number_of_instances: 1
max_number_of_instances: 3
requirements:
- virtual_link: vcpe_public_net
vCPE_Infrastructure_vGMUX_demo_app:
# type: tosca.nodes.nfv.VNF
type: onap.demo.vnfs.vCPE_Infrastructure_vGMUX_VNF
properties:
descriptor_id: 0408f076-e6c0-4c82-9940-272fddbb82de
provider: onap
product_name: vcpe_vgmux
software_version: '1.0.0'
descriptor_version: '1.0.0'
flavour_id: simple
flavour_description: simple
vnfm_info: ['etsivnfm:v2.5.1']
vnf_profile:
instantiation_Level: level_1
min_number_of_instances: 1
max_number_of_instances: 3
requirements:
- virtual_link: vcpe_public_net
vCPE_Infrastructure_demo_app:
# type: tosca.nodes.nfv.VNF
type: onap.demo.vnfs.vCPE_Infrastructure_VNF
properties:
descriptor_id: b1bb0ce7-2222-4fa7-95ed-4840d70a1100
provider: onap
product_name: vcpe_infra
software_version: '1.0.0'
descriptor_version: '1.0.0'
flavour_id: simple
flavour_description: simple
vnfm_info: ['etsivnfm:v2.5.1']
vnf_profile:
instantiation_Level: level_1
min_number_of_instances: 1
max_number_of_instances: 3
requirements:
- virtual_link: vcpe_public_net
vCPE_Infrastructure_Metro_vBNG_demo_app:
# type: tosca.nodes.nfv.VNF
type: onap.demo.vnfs.vCPE_Infrastructure_Metro_vBNG_VNF
properties:
descriptor_id: b1bb0ce7-2222-4fa7-95ed-4840d70a1101
provider: onap
product_name: vcpe_vbng
software_version: '1.0.0'
descriptor_version: '1.0.0'
flavour_id: simple
flavour_description: simple
vnfm_info: ['etsivnfm:v2.5.1']
vnf_profile:
instantiation_Level: level_1
min_number_of_instances: 1
max_number_of_instances: 3
requirements:
- virtual_link: vcpe_public_net
vCPE_Infrastructure_BGREMU_demo_app:
# type: tosca.nodes.nfv.VNF
type: onap.demo.vnfs.vCPE_Infrastructure_BGREMU_VNF
properties:
descriptor_id: b1bb0ce7-2222-4fa7-95ed-4840d70a1102
provider: onap
product_name: vcpe_vbrgemu
software_version: '1.0.0'
descriptor_version: '1.0.0'
flavour_id: simple
flavour_description: simple
vnfm_info: ['etsivnfm:v2.5.1']
vnf_profile:
instantiation_Level: level_1
min_number_of_instances: 1
max_number_of_instances: 3
requirements:
- virtual_link: vcpe_public_net
vcpe_public_net:
type: tosca.nodes.nfv.NsVirtualLink
properties:
connectivity_type:
layer_protocol: ipv4
# version: 1.0.0 #not defined in SOL001 v2.5.1
vl_profile:
max_bit_rate_requirements:
root: 10000000
leaf: 10000000
min_bit_rate_requirements:
root: 10000000
leaf: 10000000
# networkName: oam-zte #not defined in SOL001 v2.5.1
# cidr: 172.30.23.0/24 #not defined in SOL001 v2.5.1
# dhcpEnabled: false #not defined in SOL001 v2.5.1
|