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. (smile) now the model is able to explicitly express sharing of infrastructure between functional components
  3. (sad) 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
node_types:
  vendorXXX.nodes.vnf.vSBC:
    derived_from: onap.nodes.NetworkFunction
    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]
    





  • No labels