Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Made names, etc., consistent. Changed function to type in classification (Firewall would be a ction. Function is more descriptive as to the specific usage within the type and role)

...

A NetworkFunction is also non-trivial in terms of its internal structure. A NetworkFunction normally has its own internal topology that spans over multiple VMs and has internal networks. A NetworkFunction-typed node is expected to be implemented through substitution. This substitution can be specified by the service designer in design time. However, the service designer may also leave a NetworkFunction-typed node without design-time implementation. In this case, the most appropriate substitution should be found by the Orchestrator in run time.

Whether a NetworkFunction is Virtual, Physical, or Allotted is determined based on its other requirements.  

  • A NetworkFunction that requires a PNF Device (i.e., a custom hardware element preinstalled into the network) is a Physical Network Function, PNF
  • A NetworkFunction that requires a Providing service is an Allotted Resource (e.g., a Firewall as a Service offering, or an embedded network function in a network operating system)
  • A NetworkFunction with neither of these requirements in a VIrtual Network Function, or VNF.

By avoiding subtyping NetworkFunction into physical, virtual, etc., the type hierarchy needed for abstract runtime resolution is preserved.  This permits the platform to select concrete types which satisfy the service requirements using the non-normative OASIS recommendation on abstract resolution based on type through operator specified means such as policy. 

It may be advantageous to derive some classic network functions such as firewall, router, load balancer, etc., from NetworkFunction.  Doing so still preserves the ability to use abstraction to represent a network function within a Service that uses it. 

TODO: explain why this type does not have any capabilities and requirements

...

NameRequiredTypeConstraintsDescription
nf_classificationyesonap.datatypes.NetworkFunctionClassificationClassification
Structured description of this function. For abstract function nodes, may be used for finding an implementation.

...

Code Block
titleTOSCA Definition
linenumberstrue
node_types:
   onap.nodes.Resource.NetworkFunction:
    description: |
      a base of the ONAP hierarchy of network functions
      If you have a requirement for a factory, you're allotted
      If you have a requirement for a PNFdevice, you're physical 
      If you have neither, you're virtual.
      Expect to see network functions be group members for naming and homing.
    derived_from: onap.nodes.Resource
    properties:
      nf_classification:
        description: |
          data governed value used by operations to filter network functions
        type: onap.datatypes.Classification
        required: true
    capabilities:
      # Expect to define these in the derived node_type, with mappings to appropriate the NetworkFunctionComponent CP
      # This exposes external CPs of the NF.
    requirements:
      # Expect to define these in the derived node_type, with mappings to appropriate inner nodes
	  

...

Code Block
titleExample #1: Abstract firewall node type
linenumberstrue
collapsetrue
node_types:
  onap.nodes.functions.AbstractFirewall:
    derived_from: onap.nodes.FunctionNetworkFunction
    properties:
      nf_classification:
        constraints:
          - equal: {nf_functiontype: "Firewall"}
    requirements:
      - unprotected:
          capability: onap.capabilities.Linkable
      - protected:
          capability: onap.capabilities.Linkable
      

...

Code Block
titleonap.nodes.resource.NetworkFunction
linenumberstrue
collapsetrue
   onap.nodes.Resource.NetworkFunction:
    description: |
      a base of the ONAP hierarchy of network functions
      If you have a requirement for a factory, you're allotted
      If you have a requirement for a PNFdevice, you're physical 
      If you have neither, you're virtual.
      Expect to see network functions be group members for naming and homing.
    derived_from: onap.nodes.Resource
    properties:
      nf_classification:
        description: |
          data governed value used by operations to filter network functions
        type: onap.datatypes.NetworkFunctionClassificationClassification
        required: true
    capabilities:
      # Expect to define these in the derived node_type, with mappings to appropriate the NetworkFunctionComponent CP
      # This exposes external CPs of the NF.
    requirements:
      # Expect to define these in the derived node_type, with mappings to appropriate inner nodes

...

Code Block
linenumberstrue
collapsetrue
node_types:
  onap.nodes.functions.AbstractFirewall:
  derived_from: onap.nodes.FunctionNetworkFunction
  properties:
    nf_classification:
      constraints:
        - equal: {nf_functiontype: "Firewall"}
  requirements:
    - unprotected:
        capability: onap.capabilities.Linkable
    - protected:
        capability: onap.capabilities.Linkable
      
  vendorXXX.nodes.VerySpecialFirewall:
    derived_from: onap.nodes.functions.AbstractFirewall
    requirements:
      - management:
          capability: onap.capabilities.Linkable  

...

Code Block
linenumberstrue
collapsetrue
node_types:
  onap.nodes.functions.AbstractFirewall:
  derived_from: onap.nodes.FunctionNetworkFunction
  properties:
    functionnf_classification:
  
   type: string       constraints:
     type: "Firewall"   - equal: "firewall"
  requirements:
    - unprotected:
        capability: onap.capabilities.Linkable
    - protected:
        capability: onap.capabilities.Linkable
      
  vendorXXX.nodes.VerySpecialFirewall:
    derived_from: onap.nodes.functions.AbstractFirewall
    requirements:
      - management:
          capability: onap.capabilities.Linkable  

...