VNF Model - vSBC

This page demonstrates a possible implementation of the VSBC VNF using the new ONAP DM.

Huawei vSBC CSAR (based on an intermediary version of SOL001)



The ONAP DM provides two techniques to model abstractions - through dangling requirements and abstract nodes, and this page shows how to use each of them:



Model Using Dangling Requirements



VNF Template
node_types: vendorXXX.nodes.vfc.HRU: derived_from: onap.nodes.NetworkFunctionComponent artifacts: image: description: deployment image type: tosca.artifacts.Deployment.Image file: HRU_Image.iso properties: aaa: type: string required: false requirements: - storage_attachment_1: capability: onap.capabilities.StorageAttachment occurrences: [1, 1] capabilities: bind_intra_1: type: onap.capabilities.Bindable occurrences: [1, 1] bind_intra_2: type: onap.capabilities.Bindable occurrences: [1, 1] bind_ext_1: type: onap.capabilities.Bindable occurrences: [1, 1] bind_ext_2: type: onap.capabilities.Bindable occurrences: [1, 1] vendorXXX.nodes.vfc.CCU: derived_from: onap.nodes.NetworkFunctionComponent artifacts: image: description: deployment image type: tosca.artifacts.Deployment.Image file: CCU_Image.iso properties: bbb: type: integer constraints: - valid_values: [1, 5, 11] required: false capabilities: bind_1: type: onap.capabilities.Bindable occurrences: [1, 1] vendorXXX.nodes.vfc.VPU: derived_from: onap.nodes.NetworkFunctionComponent artifacts: image: description: deployment image type: tosca.artifacts.Deployment.Image file: VPU_Image.iso properties: ccc: type: string required: false requirements: - storage_attachment_1: capability: onap.capabilities.StorageAttachment occurrences: [1, 1] capabilities: bind_intra_1: type: onap.capabilities.Bindable occurrences: [1, 1] bind_intra_2: type: onap.capabilities.Bindable occurrences: [1, 1] topology_template: inputs: node_templates: hru: type: vendorXXX.nodes.vfc.HRU properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' aaa: 'lalala' requirements: - host: node_filter: capabilities: onap.capabilities.Compute: properties: - num_cpus: {greater_or_equal: 2} - mem_size: {greater_or_equal: 1GB} - local_storage_size: {greater_or_equal: 16GB} - storage_attachment_1: node_filter: capabilities: onap.capabilities.StorageAttachment: properties: - storage_size: {greater_or_equal: 100GB} hru_ext_cp1: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: hru capability: bind_ext_1 - link: node_filter: capabilities: onap.capabilities.Linkable: properties: - protocol: {equal: Ethernet} - bitrate: {greater_or_equal: 10 Kbps} hru_ext_cp2: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: hru capability: bind_ext_2 - link: node_filter: capabilities: onap.capabilities.Linkable: properties: - protocol: {equal: Ethernet} - bitrate: {greater_or_equal: 10 Kbps} hru_int_cp1: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: hru capability: bind_intra_1 - link: node: intra1 capability: link hru_int_cp2: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: hru capability: bind_intra_2 - link: node: intra2 capability: link ccu: type: vendorXXX.nodes.vfc.CCU properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' bbb: 5 requirements: - host: node_filter: capabilities: onap.capabilities.Compute: properties: - num_cpus: {greater_or_equal: 2} - mem_size: {greater_or_equal: 1GB} - local_storage_size: {greater_or_equal: 16GB} ccu_cp1: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: ccu capability: bind_1 - link: node: intra1 capability: link vpu: type: vendorXXX.nodes.vfc.VPU properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' ccc: 'lalala' requirements: - host: node_filter: capabilities: onap.capabilities.Compute: properties: - num_cpus: {greater_or_equal: 2} - mem_size: {greater_or_equal: 1GB} - local_storage_size: {greater_or_equal: 16GB} - storage_attachment_1: node_filter: capabilities: onap.capabilities.StorageAttachment: properties: - storage_size: {greater_or_equal: 100GB} vpu_cp1: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: vpu capability: bind_intra_1 - link: node: intra1 capability: link vpu_cp2: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: vpu capability: bind_intra_2 - link: node: intra2 capability: link intra1: type: onap.nodes.VL properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' capabilities: link: properties: protocols: TCP bitrate: 10 Kbps intra2: type: onap.nodes.VL properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' capabilities: link: properties: protocols: Ethernet bitrate: 10 Kbps substitution_mappings: type: vendorXXX.nodes.vnf.vSBC requirements: ext_link_1: [hru_ext_cp1, link] ext_link_2: [hru_ext_cp2, link] hru.host: [hru, host] hru.storage_attachment_1: [hru, storage_attachment_1] ccu.host: [ccu, host] vpu.host: [vpu, host] vpu.storage_attachment_1: [vpu, storage_attachment_1]





vSCB VNF Type
node_types: vendorXXX.nodes.vnf.vSBC: derived_from: onap.nodes.NetworkFunction requirements: - ext_link_1: node_filter: capabilities: onap.capabilities.Linkable: properties: - protocol: {equal: Ethernet} - bitrate: {greater_or_equal: 10 Kbps} - ext_link_2: node_filter: capabilities: onap.capabilities.Linkable: properties: - protocol: {equal: Ethernet} - bitrate: {greater_or_equal: 10 Kbps} - hru.host: node_filter: capabilities: onap.capabilities.Compute: properties: - num_cpus: {greater_or_equal: 2} - mem_size: {greater_or_equal: 1GB} - local_storage_size: {greater_or_equal: 16GB} - hru.storage_attachment_1: node_filter: capabilities: onap.capabilities.StorageAttachment: properties: - storage_size: {greater_or_equal: 100GB} - ccu.host: node_filter: capabilities: onap.capabilities.Compute: properties: - num_cpus: {greater_or_equal: 2} - mem_size: {greater_or_equal: 1GB} - local_storage_size: {greater_or_equal: 16GB} - vpu.host: node_filter: capabilities: onap.capabilities.Compute: properties: - num_cpus: {greater_or_equal: 2} - mem_size: {greater_or_equal: 1GB} - local_storage_size: {greater_or_equal: 16GB} - vpu.storage_attachment_1: node_filter: capabilities: onap.capabilities.StorageAttachment: properties: - storage_size: {greater_or_equal: 100GB}



Model Using Abstract Nodes

Functionally, this model is very similar to the previous solution, with few differences:

  1. the function components HRU, CCU, and VPU are now "wired" to abstract Compute and Storage nodes, and the substitution mapping is now exposing the requirements of these abstract nodes.

  2.  now the model is able to explicitly express sharing of infrastructure between functional components

  3.  some precautions should have been taken in order to mitigate the risk of "capability-like requirements". The host capability of the AbstractCompute nodes and the attached_storage capability of the AbstractStorage node are not mapped through the substitution mapping, even though not all of their occurrences have been spent in the topology 



VNF Template
topology_template: inputs: node_templates: compute_1: type: onap.nodes.AbstractCompute properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' capabilities: host: requirements: - host: node_filter: capabilities: onap.capabilities.Compute: properties: - num_cpus: {greater_or_equal: 2} - mem_size: {greater_or_equal: 1GB} - local_storage_size: {greater_or_equal: 16GB} compute_2: type: onap.nodes.AbstractCompute properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' capabilities: host: requirements: - host: node_filter: capabilities: onap.capabilities.Compute: properties: - num_cpus: {greater_or_equal: 2} - mem_size: {greater_or_equal: 1GB} - local_storage_size: {greater_or_equal: 16GB} storage_0: type: onap.nodes.AbstractStorage properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' capabilities: storage_attachment: requirements: - storage_attachment: node_filter: capabilities: onap.capabilities.AttachedStorage: properties: - storage_size: {greater_or_equal: 16GB} - storage_type: {equal: block} hru: type: vendorXXX.nodes.vfc.HRU properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' aaa: 'lalala' requirements: - host: node: compute_1 capability: host - storage_attachment_1: node: storage_0 capability: storage_attachment hru_ext_cp1: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: hru capability: bind_ext_1 - link: node_filter: capabilities: onap.capabilities.Linkable: properties: - protocol: {equal: Ethernet} - bitrate: {greater_or_equal: 10 Kbps} hru_ext_cp2: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: hru capability: bind_ext_2 - link: node_filter: capabilities: onap.capabilities.Linkable: properties: - protocol: {equal: Ethernet} - bitrate: {greater_or_equal: 10 Kbps} hru_int_cp1: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: hru capability: bind_intra_1 - link: node: intra1 capability: link hru_int_cp2: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: hru capability: bind_intra_2 - link: node: intra2 capability: link ccu: type: vendorXXX.nodes.vfc.CCU properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' bbb: 5 requirements: - host: node: compute_2 capability: host ccu_cp1: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: ccu capability: bind_1 - link: node: intra1 capability: link vpu: type: vendorXXX.nodes.vfc.VPU properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' ccc: 'lalala' requirements: requirements: - host: node: compute_2 capability: host - storage_attachment_1: node: storage_0: capability: storage_attachment vpu_cp1: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: vpu capability: bind_intra_1 - link: node: intra1 capability: link vpu_cp2: type: onap.nodes.CP properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' requirements: - bind: node: vpu capability: bind_intra_2 - link: node: intra2 capability: link intra1: type: onap.nodes.VL properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' capabilities: link: properties: protocols: TCP bitrate: 10 Kbps intra2: type: onap.nodes.VL properties: catalog_info: invariantUUID: 63007034-0330-4132-b51e-87c6a64065f3 UUID: 9c6a1271-b443-48e3-8049-f5433db3d5f2 customizationUUID: 7f4e5e75-566c-48e8-99a7-c40cec1e4fd1 version: '2.0' capabilities: link: properties: protocols: Ethernet bitrate: 10 Kbps substitution_mappings: type: vendorXXX.nodes.vnf.vSBC requirements: ext_link_1: [hru_ext_cp1, link] ext_link_2: [hru_ext_cp2, link] host_1: [compute_1, host] host_2: [compute_2, host] storage_attachment_1: [storage_0, storage_attachment]
VNF Type