Network Service Descriptor Proposal

NSD Requirements:

1,  VFC project requirement

  • VFC project implement ETSI NFVO, which needs to consume the NSD. 

  • VFC needs to expose NFVO northbound SOL005 interfaces to SO or OSS/BSS/3GPP Management System
    JIRA : VFC-635/VFC-648


                                        

                  

 

2,  NSD vs ServiceD differences:

             Service Descriptor in SDC R3:    Service composites many resources in the SDC, including SDC AID resources(vf, extVL, AllottedResource) and R2+ resources.

             NSD in VFC:   NSD composites VNFD, PNFD, and NSVirtualLink, nested NSD, etc,  ETSI NFV resources.

             NSD requires to do some limitation in NFV resources composition, not all the SDC resources and substitution_mappings to NS TOSCA node

 

NSD related work pages:

     R3 NetworkServiceModel

     ONAP R2+ Design-Time Service DM Input.

     PNF resource IM proposal

     Network Service Descriptor Model - Based on R2

 

Node Type
tosca.nodes.nfv.NS
  tosca.nodes.nfv.NS:
      derived_from: tosca.nodes.Root
      properties: 
        ns_id: 
          type: string
          required: true
        designer:
          type: string
          required: true
        version:
          type: string
          required: true
        name:
          type: string
          required: true
        invariant_id:
          type: string
          required: true
      capabilities:
        #monitoring_parameter:
          # modelled as ad hoc capabilities in VNF node template
      requirements:
        - virtual_link:
            capability:
               tosca.capabilities.nfv.VirtualLinkable
            relationship:
               tosca.relationships.nfv.VirtualLinksTo
            node: tosca.nodes.nfv.NsVirtualLink    # tosca.nodes.nfv.VL
            occurrences: [ 0, UNBOUNDED ]
tosca.nodes.nfv.VNF
refer to https://wiki.onap.org/display/DW/Node+Type #tosca.nodes.nfv.VNF:
tosca.nodes.nfv.PNF
tosca.nodes.nfv.PNF:
    derived_from: tosca.nodes.Root
    properties: 
      descriptor_id: # instead of pnfd_id
        type: string 
        required: true
      provider:
        type: string
        required: true
      version:
        type: string
        required: true
      descriptor_invariant_id:
        type: string # GUID
        required: true
      name:
        type: string
        required: true
      function_description:
        type: string
        required: true
      #geographical_location_info:        
      #  type: TBD
      #  required: true
    requirements:
       - virtual_link:
           capability: tosca.capabilities.nfv.VirtualLinkable
           relationship: tosca.relationships.nfv.VirtualLinksTo
  tosca.nodes.nfv.NsVirtualLink:
     derived_from:
       tosca.nodes.Root
       description: node definition of Virtual Links
     properties:
       provider:
         type: string
         required: false
       version:
         type: string
         required: true
       vl_profile
         type: tosca.datatypes.nfv.VlProfile # only covers nin/max bitrate requirements
         required: true
       connectivity_type:
         type: tosca.datatypes.nfv.ConnectivityType
         required: true
       qos:
         type: tosca.datatypes.nfv.Qos
         required: false
       service_availability:
         type: tosca.datatypes.nfv.ServiceAvailability
         required: false
      capabilities:
        VirtualLinkable:
          type: tosca.capabilities.nfv.VirtualLinkable
Data Type:
tosca.datatypes.nfv.ConnectivityType
tosca.datatypes.nfv.ConnectivityType:
  derived_from: tosca.datatypes.Root
  properties: 
    layer_protocol:
      type: string
      required: true
      constraints:
        - valid_values: [ethernet, mpls, odu2, ipv4, ipv6, pseudo_wire ]  
    flow_pattern:
      type: string
      required: false
      constraints:
        - valid_values: [Line, Tree, Mesh]  
tosca.datatypes.nfv.ServiceAvailability
tosca.datatypes.nfv.ServiceAvailability:
   derived_from: tosca.datatypes.Root
   description: service availability 
   properties:
     Level:
       type: string
       description: service availability levels
       required: true
       constraints:
          - valid_values: [ Level1, Level2,Level3 ]   

 

 

Capability
tosca.capabilities.nfv.VirtualLinkable
tosca.capabilities.nfv.VirtualLinkable:
    derived_from: tosca.capabilities.network.Linkable
Relationship
tosca.relationships.nfv.VirtualLinksTo
tosca.relationships.nfv.VirtualLinksTo:
    derived_from: tosca.relationships.DependsOn
    valid_target_types: [ tosca.capabilities.nfv.VirtualLinkable ]
NS Example
NS Example
tosca_definitions_version:
tosca_simple_yaml_1_1
metadata:
  ...
imports:
- nodes:
    file: nodes.yml
- datatypes:
    file: data.yml
- capabilities:
    file: capabilities.yml
-relationships:
    file: relationships.yml


topology_template:
  inputs:
    # omitted here for brivity
  substitution_mappings:
    node_type: tosca.nodes.nfv.NS.example
node_templates:
    NsVL1:
      type: tosca.nodes.nfv.NsVirtualLink
      properties:     ...
    NsVL2:
      type: tosca.nodes.nfv.NsVirtualLink
      properties:     ...
    VNF1:
      type: tosca.nodes.nfv.VNF.VNF1
      properties: ...
      requirements:
        - virtualLink1: NsVL2
    VNF2:
      type: tosca.nodes.nfv.VNF.VNF2
      properties: ...
      requirements:
        - virtualLink1: NsVL1    
    VNF3:
      type: tosca.nodes.nfv.VNF.VNF3
      properties: ...
      requirements:
        - virtualLink1: NsVL1
        - virtualLink2: NsVL2
    PNF1:
      type:tosca.nodes.nfv.PNF.PNF1
      properties: ...
      requirements:
        - virtualLink1: NsVL1

###################VNF1 Template ##################
   .....
  substitution_mappings: 
    requirements: 
      virtualLink1: 
      - ext_port_1
      - virtual_link
    node_type: tosca.nodes.nfv.VNF.VNF1


###################VNF2 Template ##################
   .....
  substitution_mappings: 
    requirements: 
      virtualLink1: 
      - ext_port_1
      - virtual_link
    node_type: tosca.nodes.nfv.VNF.VNF2


###################VNF3 Template ##################
   .....
  substitution_mappings: 
    requirements: 
      virtualLink1: 
      - ext_port_1
      - virtual_link
      virtualLink2: 
      - ext_port_2
      - virtual_link
    node_type: tosca.nodes.nfv.VNF.VNF3


###################PNF1 Template ##################
   .....
  substitution_mappings: 
    requirements: 
      virtualLink1: 
      - ext_port_1
      - virtual_link
    node_type: tosca.nodes.nfv.PNF.PNF1