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:
ONAP R2+ Design-Time Service DM Input.
Network Service Descriptor Model - Based on R2
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
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
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 ]
tosca.capabilities.nfv.VirtualLinkable
tosca.capabilities.nfv.VirtualLinkable: derived_from: tosca.capabilities.network.Linkable
tosca.relationships.nfv.VirtualLinksTo
tosca.relationships.nfv.VirtualLinksTo: derived_from: tosca.relationships.DependsOn valid_target_types: [ tosca.capabilities.nfv.VirtualLinkable ]
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