Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Description

A NetworkFunction is a resource which is able to fulfill a well-defined, non-trivial functionality for a service.

...

-          the nf_classification property - provides useful data governed filtering criteria, whose values should not be used in any ONAP platform logic but which could be used in model-specific logic.

-          the name of a sub-type - no ONAP platform logic should ever use the name of a sub-type

It is non-trivial in many senses. First, a NetworkFunction is non-trivial in terms of its connectivity with the outer world. A NetworkFunction-based type is normally defined with multiple capabilities and requirements of different types, which are serving different purposes. Since there is no typical “connectivity set” shared by all function, it cannot be captured by means of TOSCA in the base NetworkFunction node type. That is, the NetworkFunction node type is practically unusable per se. It needs to be further sub-typed, along with extending it with additional capabilities and requirements.

...

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

Properties


NameRequiredTypeConstraintsDescription
nf_classificationyesonap.datatypes.Classification
Inherited from onap.nodes.Resource.  Structured description of this function. For abstract function nodes, may be used for finding an implementation.


Attributes

Nothing special

Capabilities


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

Requirements


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

TOSCA Definition


Code Block
titleTOSCA Definition
linenumberstrue
node_types:
   onap.nodes.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:
      # classification is inherited from onap.nodes.Resource, type, role, function should  nf_classificationbe required
      provider_details:
        description: |type: onap.datatypes.ProviderDetails
        required: false
  data governed valueattributes:
used by operations to filter network functionslocalization_language:
        type: onap.datatypes.Classification  SOME STANDARD ENUMERATION MUST EXIST
        required: false
        description: true  instance-specific localization chosen for driving human-readable interfaces
      
      
    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
	  

Examples

The examples below show possible type definitions of a firewall network function abstraction.

The type AbstractFirewall defines the basic set of properties and connectivity requirements shared by absolutely all firewall networking functions in the world. It captures the fact that a firewall is normally connected to at least 2 networks, and these networks are given descriptive names.

...

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


The type VerySpecialFirewall below is an example of how could look a concrete firewall node type provided by a vendor could look. This vendor-specific type extends the connectivity schema of its basic type by the connection to an additional management network.

Code Block
titleExample #2: A concrete firewall node type provided by a vendor
linenumberstrue
collapsetrue
node_types:
  vendorXXX.nodes.VerySpecialFirewall:
    derived_from: onap.nodes.functions.AbstractFirewall
    requirements:
      - management:
          capability: onap.capabilities.Linkable  

A NetworkFunction is a resource which is able to fulfill a well-defined, non-trivial functionality for a service.

Well-defined means that its specialty can be captured by a word understandable across the industry, such as a firewall, a router, a load balancer, etc. 

It is non-trivial in many senses. First, a NetworkFunction is non-trivial in terms of its connectivity with the outer world. A NetworkFunction-based type is normally defined with multiple capabilities and requirements of different types, which are serving different purposes. Since there is no typical “connectivity set” shared by all function, it cannot be captured by means of TOSCA in the base NetworkFunction node type. That is, the NetworkFunction node type is practically unusable per se. It needs to be further sub-typed, along with extending it with additional capabilities and requirements.

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.

...


...

The type SpecialAllottedFirewall below is an example of how a concrete node type that is allotted from some larger infrastructure firewall service could look. This specific type extends the connectivity schema of its basic type by the connection to an additional management network.  It also adds an allotted resource provider requirement, which designates it as an allotted resource (the providing service itself is not shown).

Code Block
titleExample #2: A concrete firewall node type provided as an allotted resource
linenumberstrue
collapsetrue
 node_types:
  onapvendorYYY.nodes.NetworkFunctionSpecialAllottedFirewall:
    description: |
      a base of the ONAP hierarchy of network functionsderived_from: onap.nodes.functions.AbstractFirewall
    requirements:
 If you have a requirement for- amanagement:
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 capability: onap.nodescapabilities.ResourceLinkable
    properties:   -    nf_classificationprovider_service:
        description node: |vendorYYY.service.AllottedFirewallProviderService
          data governed value used by operations to filter network functions
        typecapability: onap.datatypescapabilities.ClassificationAllottedResourceProvider
        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

Examples

code
 relationship:  onap.relationships.AllottedBy 


The type SpecialPhysicalFirewall below is an example of how a concrete node type that is a traditional PNF could look. This specific type extends the connectivity schema of its basic type by the connection to an additional management network.  It also adds a PNFDevice requirement, which designates it as physical network function.

Code Block
titleExample #3: A physical firewall
linenumberstrue
collapsetrue
 node_types:
   onapvendor.nodes.resources.network_functions.AbstractFirewallMyFirewallPNF:
     derived_from: onap.nodes.Resources.NetworkFunction
  properties:     nf_classificationdescription:       constraints:
        - equal: {type: "Firewall"}
  requirements:A PNF Firewall Resource
      - unprotectedproperties:
       # capability: onap.capabilities.Linkable
as needed
   - protected:
        capability: onap.capabilities.Linkable attributes:
       #   vendorXXX.nodes.VerySpecialFirewall:
    derived_from: onap.nodes.functions.AbstractFirewallas needed
     requirements:
      - managementpnf_device:
          capability: onap.capabilities.Linkable  

Examples

Code Block
linenumberstrue
collapsetrue
node_types:
  onap.nodes.functions.AbstractFirewall:
  derived_from: onap.nodes.NetworkFunction
  properties:
    nf_classification:         type: "Firewall"     
  requirements:
    - unprotected:
        capability: onap.capabilities.pnfs.LinkableMyFirewall
    - protected:         capabilityrelationship: onap.capabilitiesrelationships.LinkablePNFHostedOn
         vendorXXX.nodes.VerySpecialFirewall:     derived_fromnode: onapvendor.nodes.functions.AbstractFirewall
    requirements:
      - management:
          capability: onap.capabilities.Linkable  

devices.pnfs.MyFirewall