Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: removed Resource. from NetworkFunction node type

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

TODO: Huawei cSBC CSAR herevSBC 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

TODO: Diagram hereImage Added


Code Block
titleVNF Template
linenumberstrue
collapsetrue
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]


...

Code Block
titlevSCB VNF Type
linenumberstrue
collapsetrue
node_types:
  vendorXXX.nodes.vnf.vSBC:
    derived_from: onap.nodes.Resource.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 


TODO: Diagram hereImage Added

Code Block
titleVNF Template
linenumberstrue
collapsetrue
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]
    


Code Block
titleVNF Type
linenumberstrue
collapsetrue
node_types:
  vendorXXX.nodes.vnf.vSBC:
    derived_from: onap.nodes.Resource.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]
    

...