Internet-Draft | Network Slice Service YANG Model | October 2022 |
Wu, et al. | Expires 27 April 2023 | [Page] |
This document defines a YANG model for the IETF Network Slice service. The model can be used by an IETF Network Slice customer to manage IETF Network Slices.¶
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.¶
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.¶
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."¶
This Internet-Draft will expire on 27 April 2023.¶
Copyright (c) 2022 IETF Trust and the persons identified as the document authors. All rights reserved.¶
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Revised BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Revised BSD License.¶
This document defines a YANG [RFC7950] data model for the IETF Network Slice service.¶
The YANG model discussed in this document is defined based on the description of the IETF Network Slice service in [I-D.ietf-teas-ietf-network-slices], which is used to operate IETF Network Slices during the IETF Network Slice instantiation. This YANG model supports various operations on IETF Network Slices such as creation, modification, deletion, and monitoring.¶
The YANG model discussed in this document describes the requirements of an IETF Network Slice service from the point of view of the customer. It is thus classified as customer service model in [RFC8309].¶
The IETF Network Slice operational state is included in the same tree as the configuration consistent with Network Management Datastore Architecture [RFC8342].¶
Editorial Note: (To be removed by RFC Editor)¶
This draft contains several placeholder values that need to be replaced with finalized values at the time of publication. Please apply the following replacements:¶
The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP14, [RFC2119], [RFC8174] when, and only when, they appear in all capitals, as shown here.¶
The following terms are defined in [RFC6241] and are used in this specification:¶
This document makes use of the terms defined in [RFC7950].¶
The tree diagram used in this document follow the notation defined in [RFC8340].¶
This document also makes use of the terms introduced in the Framework for IETF Network Slices [I-D.ietf-teas-ietf-network-slices]:¶
This document defines the following terms:¶
Connection Group: Connection group is an arbitrary collection of one or more connectivity constructs, which can be used for the following possible purposes:¶
The following acronyms are used in the document:¶
As defined in [I-D.ietf-teas-ietf-network-slices], an IETF Network Slice service is specified in terms of a set of SDPs, a set of one or more connectivity constructs between subsets of these SDPs, and a set of SLOs and SLEs (see Section 4) for each SDP sending to each connectivity construct. A communication type (point- to-point (P2P), point-to-multipoint (P2MP), or any-to-any (A2A)) is specified for each connectivity construct.¶
A slice service may include only one connectivity construct or multiple connectivity constructs that associate sets of SDPs. The SDPs serve as the IETF Network Slice ingress/egress points. An SDP is identified by a unique identifier in the context of an IETF Network Slice service.¶
An example of IETF network slice services containing only one connectivity construct is shown in Figure 1.¶
An example of IETF network slice services containing multiple connectivity constructs is shown in Figure 2.¶
As shown in the example, The IETF network slice service 4 contains two P2P connectivity constructs between various SDPs. The IETF network slice service 5 is a bidirectional P2P service on SDP14 and SDP15. The service consists of two unidirectional P2P connectivity constructs. For the traffic from each SDPs, there is only one connectivity construct. For the IETF network slice service 6, an P2P service on SDP 16 and SDP 17, this service includes two unidirectional P2P connectivity constructs with different set of SLOs between the two SDPs. Since SDP16 is the source of two connectivity constructs, this requires matching criteria be applied to traffic of SDP16 to distinguish between flows constructed by two connections. One example could be that the SDP16 uses DSCPs in the packets to differentiate traffic and steers to different connectivity constructs to ensure different SLOs.¶
The intention of the IETF Network Slice service model is to allow the customer to manage IETF Network Slices. In particular, the model allows customers to operate in an abstract and technology-agnostic manner, with details of the IETF Network Slices realization hidden.¶
According to the [I-D.ietf-teas-ietf-network-slices] description, IETF Network Slices are applicable to use cases such as (but not limited to) network wholesale services, network infrastructure sharing among operators, NFV (Network Function Virtualization) connectivity, Data Center Interconnect, and 5G E2E network slice.¶
As shown in Figure 3, in all these use-cases, the model is used by the customer's higher level operation system to communicate with the NSC for life cycle management of IETF Network Slices including both enablement and monitoring. For example, in the 5G E2E (End-to-end) network slicing use-case the E2E network slice orchestrator acts as the higher layer system to request the IETF Network Slices. The interface is used to support dynamic IETF Network Slice creation and its lifecycle management to facilitate end-to-end network slice services.¶
The IETF Network Slice Controller (NSC) is a logical entity that allows customers to manage IETF network slices. The NSC receives requests from its customer-facing interface (e.g., from a management system). This interface carries data objects the IETF Network Slice service customer provides, describing the needed IETF network slices service in terms of a set of SDPs, the associated connectivity constructs and the service objectives that the customer wishes to be fulfilled. These requirements are then translated into technology-specific actions that are implemented in the underlying network using a network-facing interface. The details of how the IETF Network Slices are put into effect are out of scope for this document.¶
The 'ietf-network-slice-service' module uses two main data nodes: list 'slice-service' and container 'slo-sle-templates' (see Figure 4).¶
The 'slice-service' list includes the set of IETF Network Slice services managed within a provider network. 'slice-service' is the data structure that abstracts an IETF Network Slice service. Under the "slice-service", list "sdp" is used to abstract the SDPs. And list "connection-group" is used to abstract connectivity constructs between SDPs.¶
The 'slo-sle-templates' container is used by the NSC to maintain a set of common network slice SLO and SLE templates that apply to one or several IETF Network Slice services.¶
The figure below describes the overall structure of the YANG module:¶
The 'slo-sle-templates' container (Figure 4) is used by the service provider of the NSC to define and maintain a set of common IETF Network Slice templates that apply to one or several IETF Network Slice services. The exact definition of the templates is deployment specific to each network provider.¶
The model includes the identifiers of SLO and SLE templates and the common attributes defined in [I-D.ietf-teas-ietf-network-slices]. Considering that there are many attributes defined and some attributes could vary with service requirements, e.g. bandwidth, or latency, multiple standard templates as well as custom "service-slo-sle-policy" are defined:¶
The following shows an example where two standard network slice templates can be retrieved by the customers:¶
{ "network-slice-services": { "slo-sle-templates": { "slo-sle-template": [ { "id":"GOLD-template", "template-description": "Two-way bandwidth: 1 Gbps, one-way latency 100ms " "service-slo-sle-policy:isolation":"service-isolation-shared", }, { "id":"PLATINUM-template", "template-description": "Two-way bandwidth: 1 Gbps, one-way latency 50ms " "service-slo-sle-policy:isolation":"service-isolation-dedicated", }, ], } } }¶
The 'slice-service' is the data structure that abstracts an IETF Network Slice service. Each 'slice-service' is uniquely identified by an identifier: 'service-id'.¶
An IETF Network Slice service has the following main parameters:¶
An SDP belong to a single IETF Network Slice service. An IETF Network Slice service involves two or more SDPs. An IETF Network Slice service can be modified by adding new "sdp" or removing existing "sdp".¶
Section 4.2 [I-D.ietf-teas-ietf-network-slices] describes four possible ways in which the SDP may be placed:¶
In the four options, the Attachment Circuit (AC) may be part of the IETF Network Slice service or may be external to it. Based on the definition of AC in section 2.1 [I-D.ietf-teas-ietf-network-slices], the customer and provider may agree on a per {IETF Network Slice service, connectivity construct, and SLOs/SLEs} basis to police or shape traffic on the AC in both the ingress (CE to PE) direction and egress (PE to CE) direction, This ensures that the traffic is within the capacity profile that is agreed in an IETF Network Slice service. Excess traffic is dropped by default, unless specific out-of-profile policies are agreed between the customer and the provider.¶
An IETF Network Slice SDP has several characteristics:¶
The customer may choose to use an explicit "service-match-criteria" to map all the SDP's traffic or a subset of the SDP's traffic to a specific connection-group or connectivity-construct.¶
If an SDP is placed at the port or AC of a CE or PE, and there is only one single connectivity construct with a source at the SDP, traffic can be implicitly mapped to this connectivity construct since the port or AC can be used to identify the traffic and the SDP is the only source of the connectivity-construct. Appendix A.1 shows an example of both the implicit and explicit approaches.¶
If an SDP is placed within CE or PE, or there are many connectivity constructs with a source at the SDP. Traffic needs to be explicitly mapped into the IETF Network Slice's specific connectivity construct. The policies, "service-match-criteria", are based on the values in which combination of layer 2 and layer 3 header and payload fields within a packet to identify to which {IETF Network Slice service, connectivity construct, and SLOs/SLEs} that packet is assigned.¶
The customer may choose to use an explicit match-type of "match-any" to map all the SDP's traffic to the appropriate connection-group or connectivity-construct.¶
Similarly, if a subset of traffic is matched (ie. dscp-match) and mapped to a connectivity-construct, the customer may choose to add a subsequent "match-any" to explicitly map the remaining SDP traffic to a separate connectivity-construct. If the customer chooses to implicitly map remaining traffic and if there is no additional connectivity constructs where the "sdp-id" source is specified, then that traffic will be dropped.¶
While explicit matching is optional in some use cases, explicit matching provides a more clear and readable implementation, but the choice is left to the operator.¶
To illustrate the use of SDP options, the below are two examples. How the NSC realize the mapping is out of scope for this document.¶
SDPs at customer-facing ports on the PEs: As shown in Figure 5 , customer of the IETF network slice service would like to connect two SDPs to satisfy specific service, e.g., Network wholesale services. In this case, the IETF network slice SDPs are mapped to customer-facing ports of PE nodes. The IETF network slice controller (NSC) uses 'node-id' (PE device ID), 'attachment-circuit' ( ACs ) to map SDPs to the customer-facing ports on the PEs.¶
SDPs within CEs: As shown in Figure 6 , customer of the IETF network slice service would like to connect two SDPs to provide connectivity between transport portion of 5G RAN to 5G Core network functions. In this scenario, the IETF network slice controller (NSC) uses 'node-id' (CE device ID) , 'sdp-ip' (CE tunnel endpoint IP), 'service-match-criteria' (VLAN tag), 'attachment-circuit' (ACs ) to map SDPs to the CE tunnel endpoints. And the NSC can also retrieve the corresponding ACs, or PEs, and further map the slice service to services/tunnels/paths.¶
Based on the customer's service traffic requirements, an IETF Network Slice service connectivity type could be point-to-point (P2P), point-to-multipoint (P2MP), any-to-any (A2A) or a combination of these types.¶
[I-D.ietf-teas-ietf-network-slices] defines the basic connectivity construct for a network slice, and the connectivity construct may have different SLO and SLE requirements. "connectivity-construct" represents this connectivity construct, and "slo-sle-policy" under it represents the per-connectivity construct SLO and SLE requirements.¶
Apart from the per-connectivity construct SLO and SLE, slice service traffic is usually managed by combining similar types of traffic. For example, some connections for video services require high bandwidth, and some connections for voice over IP request low latency and reliability. "connection-group" is thus defined to treat each type as a class with per-connection-group SLO and SLE such that the connectivity construct can inherit the SLO/SLE from the group if not explicitly defined.¶
As defined in section 4 [I-D.ietf-teas-ietf-network-slices], the SLO and SLE policy of an IETF Network Slice service defines some common attributes.¶
"slo-sle-policy" is used to represent specific SLO and SLE policies. During the creation of an IETF Network Slice service, the policy can be specified either by a standard SLO and SLO template or a customized SLO and SLE policy.¶
The policy can apply to per-network slice service, per-connection group "connection group", or per-connectivity construct "connectivity-construct". Since there are multiple mechanisms for assigning a policy to a single connectivity construct, an overridden precedence order among them is as follows:¶
That is, the policy assigned through the sending SDP has highest precedence, and the policy assigned by the slice level has lowest precedence. Therefore, the policy assigned through the sending SDP takes precedence over the policy assigned through the connection-construct entry. Appendix A.5 gives an example of the preceding policy, which shows a slice service having an any-to-any connectivity as default and several specific SLO connections.¶
The container "metric-bounds" supports all the variations and combinations of SLOs, which includes a list of "metric-bound" and each "metric-bound" could specify a particular "metric-type". "metric-type" is defined with YANG identity and supports the following options:¶
The following common SLEs are defined:¶
The following shows an example where a network slice policy can be configured:¶
{ "slice-services": { "slice-service": { "service-id": "exp-slice", "service-slo-sle-policy": { "policy-description":"video-service-policy", "metric-bounds": { "metric-bound": [ { "metric-type": "service-slo-one-way-bandwidth", "metric-unit": "mbps" "bound": "1000" }, { "metric-type": "service-slo-availability", "bound": "99.9%" }, ], } } } } }¶
For a multiple connectivity-construct slice service, when a connection-group or a connectivity-construct has some specific requirements, such as bandwidth or latency, that are different from those defined of the slice-service, the new set of SLO&SLE with full or partial override can be applied. "service-slo-sle-policy-override" is used to specify the requirements.¶
An IETF Network Slice service defines connectivity with specific SLO characteristics, including bandwidth, latency, etc. The connectivity is a combination of logical unidirectional connections, represented by 'connectivity-construct'.¶
This model also describes performance status of an IETF Network Slice. The statistics are described in the following granularity:¶
This model does not define monitoring enabling methods. The mechanism defined in [RFC8640] and [RFC8641] can be used for either periodic or on-demand subscription.¶
By specifying subtree filters or xpath filters to "sdp", "connectivity-construct", or "connection-group", so that only interested contents will be sent. These mechanisms can be used for monitoring the IETF Network Slice performance status so that the customer management system could initiate modification based on the IETF Network Slice running status.¶
The IETF Network Slice customer might ask for some level of control of, e.g., to customize the service paths in a network slice.¶
Section 3.13 in [RFC8795] defines abstract TE topology concept to accommodate both the provider's resource capability and the customer's preferences. The abstract TE topology is a topology that contains abstract topological elements (nodes, links, tunnel termination points). The following nodes are the extensions for this use case¶
The model can be extended if some implementations require path control with specific constraints.¶
The "ietf-network-slice" module uses types defined in [RFC6991] , [RFC9181], and [RFC8776], and [RFC7640].¶
<CODE BEGINS> file "ietf-network-slice-service@2022-10-24.yang" module ietf-network-slice-service { yang-version 1.1; namespace "urn:ietf:params:xml:ns:yang:ietf-network-slice-service"; prefix ietf-nss; import ietf-inet-types { prefix inet; reference "RFC 6991: Common YANG Types."; } import ietf-vpn-common { prefix vpn-common; reference "RFC 9181: A Common YANG Data Model for Layer 2 and Layer 3 VPNs."; } import ietf-network { prefix nw; reference "RFC 8345: A YANG Data Model for Network Topologies"; } import ietf-network-topology { prefix nt; reference "RFC 8345: A YANG Data Model for Network Topologies, Section 6.2"; } /* Import TE Topology */ import ietf-te-topology { prefix tet; reference "RFC 8795: YANG Data Model for Traffic Engineering (TE) Topologies"; } import ietf-te-types { prefix te-types; reference "RFC 8776: Common YANG Data Types for Traffic Engineering."; } import ietf-te-packet-types { prefix te-packet-types; reference "RFC 8776: Common YANG Data Types for Traffic Engineering."; } organization "IETF Traffic Engineering Architecture and Signaling (TEAS) Working Group"; contact "WG Web: <https://tools.ietf.org/wg/teas/> WG List: <mailto:teas@ietf.org> Editor: Bo Wu <lana.wubo@huawei.com> Editor: Dhruv Dhody <dhruv.ietf@gmail.com> Editor: Reza Rokui <reza.rokui@nokia.com> Editor: Tarek Saad <tsaad@cisco.com> Author: Liuyan Han <hanliuyan@chinamobile.com> Editor: John Mullooly <jmullool@cisco.com>"; description "This module defines a model for the IETF Network Slice service. Copyright (c) 2022 IETF Trust and the persons identified as authors of the code. All rights reserved. Redistribution and use in source and binary forms, with or without modification, is permitted pursuant to, and subject to the license terms contained in, the Revised BSD License set forth in Section 4.c of the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info). This version of this YANG module is part of RFC XXXX; see the RFC itself for full legal notices."; revision 2022-10-24 { description "initial version."; reference "RFC XXXX: A Yang Data Model for IETF Network Slice service operation"; } /* Features */ /* Identities */ identity service-tag-type { description "Base identity for IETF Network Slice service tag type."; } identity service-tag-customer { base service-tag-type; description "The IETF Network Slice service customer ID tag type."; } identity service-tag-service { base service-tag-type; description "The IETF Network Slice service tag type."; } identity service-tag-opaque { base service-tag-type; description "The IETF Network Slice service opaque tag type."; } identity attachment-circuit-tag-type { description "Base identity for the attachment circuit tag type."; } identity attachment-circuit-tag-vlan-id { base attachment-circuit-tag-type; description "The attachment circuit VLAN ID tag type."; } identity attachment-circuit-tag-ip-mask { base attachment-circuit-tag-type; description "The attachment circuit tag IP mask."; } identity service-isolation-type { description "Base identity for IETF Network slice service isolation level."; } identity service-isolation-shared { base service-isolation-type; description "Shared resources (e.g. queues) are associated with the slice service traffic. Hence, the traffic can be impacted by effects of other services traffic sharing the same resources."; } identity service-isolation-dedicated { base service-isolation-type; description "Dedicated resources (e.g. queues) are associated with the Network Slice service traffic. Hence, the service traffic is isolated from other servceis traffic sharing the same resources."; } identity service-security-type { description "Base identity for for slice service security level."; } identity service-security-authenticate { base service-security-type; description "Indicates the slice service requires authentication."; } identity service-security-integrity { base service-security-type; description "Indicates the slice service requires data integrity."; } identity service-security-encryption { base service-security-type; description "Indicates the slice service requires data encryption."; } identity point-to-point { base vpn-common:vpn-topology; description "Identity for point-to-point IETF Network Slice service connectivity."; } identity point-to-multipoint { base vpn-common:vpn-topology; description "Identity for point-to-point IETF Network Slice service connectivity."; } identity multipoint-to-multipoint { base vpn-common:vpn-topology; description "Identity for point-to-point IETF Network Slice service connectivity."; } identity multipoint-to-point { base vpn-common:vpn-topology; description "Identity for point-to-point IETF Network Slice service connectivity."; } identity sender-role { base vpn-common:role; description "An SDP is acting as a sender."; } identity receiver-role { base vpn-common:role; description "An SDP is acting as a receiver."; } identity service-slo-metric-type { description "Base identity for IETF Network Slice service SLO metric type."; } identity service-slo-one-way-bandwidth { base service-slo-metric-type; description "SLO bandwidth metric. Minimum guaranteed bandwidth between two SDPs at any time and is measured unidirectionally."; } identity service-slo-two-way-bandwidth { base service-slo-metric-type; description "SLO bandwidth metric. Minimum guaranteed bandwidth between two SDPs at any time."; } identity service-slo-shared-bandwidth { base service-slo-metric-type; description "The shared SLO bandwidth bound. It is the limit on the bandwidth that can be shared amongst a group of connectivity constructs of a slice service."; } identity service-slo-one-way-delay { base service-slo-metric-type; description "SLO one-way-delay is the upper bound of network delay when transmitting between two SDPs. The metric is defined in RFC7679."; } identity service-slo-two-way-delay { base service-slo-metric-type; description "SLO two-way delay is the upper bound of network delay when transmitting between two SDPs. The metric is defined in RFC2681."; } identity service-slo-one-way-delay-variation { base service-slo-metric-type; description "SLO one-way delay variation is defined by RFC3393, is the difference in the one-way delay between sequential packets between two SDPs."; } identity service-slo-two-way-delay-variation { base service-slo-metric-type; description "SLO two-way delay variation is defined by RFC5481, is the difference in the round-trip delay between sequential packets between two SDPs."; } identity service-slo-one-way-packet-loss { base service-slo-metric-type; description "SLO loss metric. The ratio of packets dropped to packets transmitted between two SDPs in one-way over a period of time as specified in RFC7680."; } identity service-slo-two-way-packet-loss { base service-slo-metric-type; description "SLO loss metric. The ratio of packets dropped to packets transmitted between two SDPs in two-way over a period of time as specified in RFC7680."; } identity service-slo-availability { base service-slo-metric-type; description "SLO availability level."; } identity service-match-type { description "Base identity for IETF Network Slice service traffic match type."; } identity service-phy-interface-match { base service-match-type; description "Use the physical interface as match criteria for slice service traffic."; } identity service-vlan-match { base service-match-type; description "Use the VLAN ID as match criteria for the slice service traffic."; } identity service-label-match { base service-match-type; description "Use the MPLS label as match criteria for the slice service traffic."; } identity service-source-ip-prefix-match { base service-match-type; description "Use source ip prefix as match criteria for the slice service traffic. Examples of 'value' of this match type is '192.0.2.0/24' and '2001:db8::1/64'."; } identity service-destination-ip-prefix-match { base service-match-type; description "Use destination ip prefix as match criteria for the slice service traffic. Examples of 'value' of this match type is '203.0.113.1/32', '2001:db8::2/128'."; } identity service-dscp-match { base service-match-type; description "Use DSCP in the IP packet header as match criteria for the slice service traffic."; } identity service-acl-match { base service-match-type; description "Use Access Control List (ACL) as match criteria for the slice service traffic, ."; reference "RFC 8519: YANG Data Model for Network Access Control Lists (ACLs)"; } identity service-any-match { base service-match-type; description "Match all slice service traffic."; } identity peering-protocol-type { description "Base identity for SDP peering protocol type."; } identity peering-protocol-bgp { base peering-protocol-type; description "Use BGP as protocol for SDP peering with customer device."; } identity peering-static-routing { base peering-protocol-type; description "Use static routing for SDP peering with customer device."; } identity peering-attribute-type { description "Base identity for BGP peering"; } identity remote-as { base peering-attribute-type; description "Identity for remote-as attribute of BGP peering."; } identity neighbor { base peering-attribute-type; description "Identity for neighbor attribute of BGP peering."; } identity local-as { base peering-attribute-type; description "Identity for local-as attribute of BGP peering."; } /* * Identity for availability-type */ identity availability-type { description "Base identity from which specific availability types are derived."; } identity level-1 { base availability-type; description "level 1: 99.9999%"; } identity level-2 { base availability-type; description "level 2: 99.999%"; } identity level-3 { base availability-type; description "level 3: 99.99%"; } identity level-4 { base availability-type; description "level 4: 99.9%"; } identity level-5 { base availability-type; description "level 5: 99%"; } identity slo-sle-policy-override { description "Base identity for SLO/SLE policy override options."; } identity slo-sle-policy-full-override { base slo-sle-policy-override; description "The policy of SLO/SLE(s) that is defined at a child level override a parent SLO/SLE policy, which means that no SLO/SLE(s) are inheritied from parent if a child SLO/SLE policy exists."; } identity slo-sle-policy-partial-override { base slo-sle-policy-override; description "The policy of SLO/SLE(s) that is defined at a child level updates the parent SLO/SLE policy. For example, if a specific SLO is defined at the child level, that specific SLO overrides the one inherited from a parent SLO/SLE policy, while all other SLOs in the parent SLO-SLE policy still apply."; } /* grouping */ grouping service-sles { description "Indirectly Measurable Objectives of a slice service."; leaf-list security { type identityref { base service-security-type; } description "The slice service security SLE(s)"; } leaf isolation { type identityref { base service-isolation-type; } default "service-isolation-shared"; description "The slice service isolation SLE requirement."; } leaf max-occupancy-level { type uint8 { range "1..100"; } description "The maximal occupancy level specifies the number of flows to be admitted."; } leaf mtu { type uint16; units "bytes"; description "The MTU specifies the maximum length in octets of data packets that can be transmitted by the slice service. The value needs to be less than or equal to the minimum MTU value of all 'attachment-circuits' in the SDPs."; } container steering-constraints { description "Container for the policy of steering constraints applicable to the slice service."; container path-constraints { description "Container for the policy of path constraints applicable to the slice service."; } container service-function { description "Container for the policy of service function applicable to the slice service."; } } } grouping service-metric-bounds { description "Slice service metric bounds grouping."; container metric-bounds { description "Slice service metric bounds container."; list metric-bound { key "metric-type"; description "List of slice service metric bounds."; leaf metric-type { type identityref { base service-slo-metric-type; } description "Identifies an entry in the list of metric type bounds for the slice service."; } leaf metric-unit { type string; mandatory true; description "The metric unit of the parameter. For example, s, ms, ns, and so on."; } leaf value-description { type string; description "The description of previous value."; } leaf bound { type uint64; default "0"; description "The Bound on the slice service connection metric. A zero indicate an unbounded upper limit for the specific metric-type."; } } } } grouping sdp-peering { description "A grouping for the slice service SDP peering."; container sdp-peering { description "Describes SDP peering attributes."; list protocol { key "protocol-type"; description "List of the SDP peering protocol."; leaf protocol-type { type identityref { base peering-protocol-type; } description "Identifies an entry in the list of SDP peering protocol type."; } list attribute { key "attribute-type"; description "list of protocol attributes"; leaf attribute-type { type identityref { base peering-attribute-type; } description "identifies the attribute type"; } leaf-list value { type string; description "Describes the value of protocol attribute, e.g. nexthop address, peer address, etc."; } } } list opaque { key "attribute-name"; description "List of protocol attributes."; leaf attribute-name { type string; description "The name of the attribute."; } leaf-list value { type string; description "The value(s) of the attribute"; } } } } grouping sdp-attachment-circuits { description "Grouping for the SDP attachment circuit definition."; container attachment-circuits { description "List of attachment circuit."; list attachment-circuit { key "ac-id"; description "The IETF Network Slice service SDP attachment circuit related parameters."; leaf ac-id { type string; description "Uniquely identifier a attachment circuit."; } leaf ac-description { type string; description "The attachment circuit description."; } leaf ac-node-id { type string; description "The attachment circuit node ID in the case of multi-homing."; } leaf ac-tp-id { type string; description "The termination port ID of the attachment circuit."; } leaf ac-ip-address { type inet:ip-address; description "The IP address of the attachment circuit."; } leaf ac-ip-prefix-length { type uint8; description "The subnet prefix length expressed in bits."; } leaf peer-sap-id { type string; description "Indicates an identifier of the peer's termination identifier (e.g., Customer Edge (CE)). This information can be used for correlation purposes, such as identifying the SAP that is attached to an endpoint that is provided in a service request."; } reference " draft-ietf-opsawg-sap: A YANG Network Model for Service Attachment Points (SAPs)"; leaf mtu { type uint16; units "bytes"; description "Maximum size in octets of the slice service data packet that can traverse an SDP."; } container ac-tags { description "Container for the attachment circuit tags."; list ac-tags { key "ac-tag-type"; description "The attachment circuit tags list."; leaf ac-tag-type { type identityref { base attachment-circuit-tag-type; } description "The attachment circuit tag type."; } leaf-list value { type string; description "The attachment circuit tag value."; } } list ac-tag-opaque { key "tag-name"; description "The attachment circuit tag opaque list."; leaf tag-name { type string; description "The opaque tags name"; } leaf-list value { type string; description "The opaque tags value"; } } } /* Per ac rate limits */ uses service-qos; uses sdp-peering; } } } grouping sdp-monitoring-metrics { description "Grouping for the SDP monitoring metrics."; container sdp-monitoring { config false; description "Container for SDP monitoring metrics."; leaf incoming-utilized-bandwidth { type te-types:te-bandwidth; description "Incoming bandwidth utilization at an SDP."; } leaf incoming-bw-utilization { type decimal64 { fraction-digits 5; range "0..100"; } units "percent"; mandatory true; description "To be used to define the bandwidth utilization as a percentage of the available bandwidth."; } leaf outgoing-utilized-bandwidth { type te-types:te-bandwidth; description "Outoing service bandwidth utilization at an SDP."; } leaf outgoing-bw-utilization { type decimal64 { fraction-digits 5; range "0..100"; } units "percent"; mandatory true; description "To be used to define the service bandwidth utilization as a percentage of the available bandwidth."; } } } grouping connectivity-construct-monitoring-metrics { description "Grouping for connectivity construct monitoring metrics."; uses te-packet-types:one-way-performance-metrics-packet; uses te-packet-types:two-way-performance-metrics-packet; } grouping geolocation-container { description "A grouping containing a GPS location."; container location { description "A container containing a GPS location."; leaf altitude { type int64; units "millimeter"; description "Distance above the sea level."; } leaf latitude { type decimal64 { fraction-digits 8; range "-90..90"; } description "Relative position north or south on the Earth's surface."; } leaf longitude { type decimal64 { fraction-digits 8; range "-180..180"; } description "Angular distance east or west on the Earth's surface."; } } // gps-location } // geolocation-container grouping bw-rate-limits { description "Bandwidth rate limits grouping."; reference "RFC 7640: Traffic Management Benchmarking"; leaf cir { type uint64; units "bps"; description "Committed Information Rate. The maximum number of bits that a port can receive or send during one-second over an interface."; } leaf cbs { type uint64; units "bytes"; description "Committed Burst Size. CBS controls the bursty nature of the traffic. Traffic that does not use the configured CIR accumulates credits until the credits reach the configured CBS."; } leaf eir { type uint64; units "bps"; description "Excess Information Rate, i.e., excess frame delivery allowed not subject to SLA. The traffic rate can be limited by EIR."; } leaf ebs { type uint64; units "bytes"; description "Excess Burst Size. The bandwidth available for burst traffic from the EBS is subject to the amount of bandwidth that is accumulated during periods when traffic allocated by the EIR policy is not used."; } leaf pir { type uint64; units "bps"; description "Peak Information Rate, i.e., maximum frame delivery allowed. It is equal to or less than sum of CIR and EIR."; } leaf pbs { type uint64; units "bytes"; description "Peak Burst Size."; } } grouping service-qos { description "The rate limits grouping."; container incoming-qos-policy { description "Container for the asymmetric traffic control."; leaf qos-policy-name { type string; description "The name of the QoS policy that is applied to the attachment circuit. The name can reference a QoS profile that is pre-provisioned on the device."; } container rate-limits { description "Container for the asymmetric traffic control."; uses bw-rate-limits; } } container outgoing-qos-policy { description "The QoS policy imposed on outgoing traffic."; leaf qos-policy-name { type string; description "The name of the QoS policy that is applied to the attachment circuit. The name can reference a QoS profile that is pre-provisioned on the device."; } container rate-limits { description "The rate-limit imposed on outgoing traffic."; uses bw-rate-limits; } } } grouping sdp { description "Slice service SDP related information"; leaf sdp-id { type string; description "Unique identifier for the referred slice service SDP."; } leaf sdp-description { type string; description "Give more description of the SDP."; } uses geolocation-container; leaf node-id { type string; description "Uniquely identifies an edge node of the SDP."; } leaf sdp-ip { type inet:ip-address; description "The IP address of the SDP."; } leaf peer-sap-id { type string; description "Indicates an identifier of the peer's termination identifier (e.g., Customer Edge (CE)). This information can be used for correlation purposes, such as identifying the SAP that is attached to an endpoint that is provided in a service request."; reference " draft-ietf-opsawg-sap: A YANG Network Model for Service Attachment Points (SAPs)"; } leaf ltp { type leafref { path "/nw:networks/nw:network/nw:node/" + "nt:termination-point/tet:te-tp-id"; } description "A reference to Link Termination Point (LTP) in the abstract TE topology"; reference "RFC 8795: YANG Data Model for Traffic Engineering (TE) Topologies"; } container service-match-criteria { description "Describes the slice service match criteria."; list match-criterion { key "index"; description "List of the slice service traffic match criteria."; leaf index { type uint32; description "The entry index."; } leaf match-type { type identityref { base service-match-type; } mandatory true; description "Identifies an entry in the list of the slice service match criteria."; } leaf-list value { type string; description "Describes the slice service match criteria, e.g. IP prefix, VLAN, etc."; } leaf target-connection-group-id { type leafref { path "../../../../../ietf-nss:connection-groups" + "/ietf-nss:connection-group" + "/ietf-nss:connection-group-id"; } mandatory true; description "Reference to the slice service connection group."; } leaf connection-group-sdp-role { type identityref { base vpn-common:role; } default "vpn-common:any-to-any-role"; description "Indicates the role in the connection group when a slice service has multiple multipoint-to-multipoint connection groups, e.g., hub-spoke."; } leaf target-connectivity-construct-id { type leafref { path "/ietf-nss:network-slice-services" + "/ietf-nss:slice-service" + "/ietf-nss:connection-groups" + "/ietf-nss:connection-group[connection-group-id" + "=current()/../target-connection-group-id]" + "/ietf-nss:connectivity-construct/ietf-nss:cc-id"; } description "Reference to a Network Slice connection construct."; } } } uses service-qos; uses sdp-peering; uses sdp-attachment-circuits; uses vpn-common:service-status; uses sdp-monitoring-metrics; } //service-sdp grouping connectivity-construct { description "Grouping for slice service connectivity construct."; list connectivity-construct { key "cc-id"; description "List of connectivity constructs."; leaf cc-id { type uint32; description "The connectivity construct identifier."; } choice connectivity-construct-type { default "p2p"; description "Choice for connectivity construct type."; case p2p { description "P2P connectivity construct."; leaf p2p-sender-sdp { type leafref { path "../../../../sdps/sdp/sdp-id"; } description "Reference to a sender SDP."; } leaf p2p-receiver-sdp { type leafref { path "../../../../sdps/sdp/sdp-id"; } description "Reference to a receiver SDP."; } } case p2mp { description "P2MP connectivity construct."; leaf p2mp-sender-sdp { type leafref { path "../../../../sdps/sdp/sdp-id"; } description "Reference to a sender SDP."; } leaf-list p2mp-receiver-sdp { type leafref { path "../../../../sdps/sdp/sdp-id"; } description "Reference to a receiver SDP."; } } case a2a { description "A2A connectivity construct."; list a2a-sdp { key "sdp-id"; description "List of included A2A SDPs."; leaf sdp-id { type leafref { path "../../../../../sdps/sdp/sdp-id"; } description "Reference to an SDP."; } uses service-slo-sle-policy; } } } uses service-slo-sle-policy; /* Per connectivity construct service-slo-sle-policy * overrides the per slice service-slo-sle-policy. */ uses service-slo-sle-policy-override; container connectivity-construct-monitoring { config false; description "SLO status per connectivity construct."; uses connectivity-construct-monitoring-metrics; } } } //connectivity-construct grouping connection-group { description "Grouping for slice service connection group."; leaf connection-group-id { type string; description "The connection group identifier."; } leaf connectivity-type { type identityref { base vpn-common:vpn-topology; } default "vpn-common:any-to-any"; description "Connection group connectivity type."; } uses service-slo-sle-policy; uses service-slo-sle-policy-override; uses connectivity-construct; /* Per connection group service-slo-sle-policy overrides * the per slice service-slo-sle-policy. */ container connection-group-monitoring { config false; description "SLO status per connection group."; uses connectivity-construct-monitoring-metrics; } } //connection-group grouping slice-service-template { description "Grouping for slice service templates."; container slo-sle-templates { description "Contains a set of slice service templates."; list slo-sle-template { key "id"; description "List for SLO and SLE template identifiers."; leaf id { type string; description "Identification of the Service Level Objective (SLO) and Service Level Expectation (SLE) template to be used. Local administration meaning."; } leaf template-description { type string; description "Description of the SLO and SLE policy template."; } leaf template-ref { type leafref { path "/ietf-nss:network-slice-services" + "/ietf-nss:slo-sle-templates" + "/ietf-nss:slo-sle-template" + "/ietf-nss:id"; } description "The reference to a standard template. When set it indicates the base template over which further SLO/SLE policy changes are made."; } container service-slo-sle-policy { description "Contains the SLO and SLE policy."; leaf policy-description { type string; description "Description of the SLO and SLE policy."; } uses service-metric-bounds; uses service-sles; } } } } /* Configuration data nodes */ grouping service-slo-sle-policy { description "Slice service policy grouping."; choice slo-sle-policy { description "Choice for SLO and SLE policy template. Can be standard template or customized template."; case standard { description "Standard SLO template."; leaf slo-sle-template { type leafref { path "/ietf-nss:network-slice-services" + "/ietf-nss:slo-sle-templates" + "/ietf-nss:slo-sle-template" + "/ietf-nss:id"; } description "Standard SLO and SLE template to be used."; } } case custom { description "Customized SLO and SLE template."; container service-slo-sle-policy { description "Contains the SLO and SLE policy."; leaf policy-description { type string; description "Description of the SLO and SLE policy."; } uses service-metric-bounds; uses service-sles; } } } } grouping service-slo-sle-policy-override { description "Slice service policy override grouping."; leaf service-slo-sle-policy-override { type identityref { base slo-sle-policy-override; } default "ietf-nss:slo-sle-policy-full-override"; description "SLO/SLE policy override option."; } } container network-slice-services { description "Containes a list of IETF network slice services"; uses slice-service-template; list slice-service { key "service-id"; description "A slice service is identified by a service-id."; leaf service-id { type string; description "A unique slice service identifier."; } leaf service-description { type string; description "Textual description of the slice service."; } container service-tags { description "Container for the list of service tags."; list tag-type { key "tag-type"; description "The service tag list."; leaf tag-type { type identityref { base service-tag-type; } description "Slice service tag type."; } leaf-list value { type string; description "The tag value"; } } list tag-opaque { key "tag-name"; description "The service tag opaquelist."; leaf tag-name { type string; description "The opaque tag name"; } leaf-list value { type string; description "The opaque tag value"; } } } uses service-slo-sle-policy; uses vpn-common:service-status; container sdps { description "Slice service SDPs."; list sdp { key "sdp-id"; uses sdp; description "List of SDPs in this slice service."; } } container connection-groups { description "Contains connections group."; list connection-group { key "connection-group-id"; description "List of connection groups."; uses connection-group; } } uses te-types:te-topology-identifier; } //ietf-network-slice-service list } } <CODE ENDS>¶
The YANG module defined in this document is designed to be accessed via network management protocols such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport layer, and the mandatory-to-implement secure transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure transport is TLS [RFC8446].¶
The NETCONF access control model [RFC8341] provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.¶
There are a number of data nodes defined in this YANG module that are writable/creatable/deletable (i.e., config true, which is the default). These data nodes may be considered sensitive or vulnerable in some network environments. Write operations (e.g., edit-config) to these data nodes without proper protection can have a negative effect on network operations.¶
o /ietf-network-slice-service/network-slice-services/slice-service¶
The entries in the list above include the whole network configurations corresponding with the slice service which the higher management system requests, and indirectly create or modify the PE or P device configurations. Unexpected changes to these entries could lead to service disruption and/or network misbehavior.¶
This document registers a URI in the IETF XML registry [RFC3688]. Following the format in [RFC3688], the following registration is requested to be made:¶
URI: urn:ietf:params:xml:ns:yang:ietf-network-slice-service Registrant Contact: The IESG. XML: N/A, the requested URI is an XML namespace.¶
This document requests to register a YANG module in the YANG Module Names registry [RFC7950].¶
Name: ietf-network-slice-service Namespace: urn:ietf:params:xml:ns:yang:ietf-network-slice-service Prefix: ietf-nss Reference: RFC XXXX¶
The authors wish to thank Mohamed Boucadair, Kenichi Ogaki, Sergio Belotti, Qin Wu, Yao Zhao, Susan Hares, Eric Grey, Daniele Ceccarelli, Ryan Hoffman, Adrian Farrel, Aihua Guo, Italo Busi, and many others for their helpful comments and suggestions.¶
The following authors contributed significantly to this document:¶
Luis M. Contreras Telefonica Spain Email: luismiguel.contrerasmurillo@telefonica.com¶
The following example describes a simplified service configuration of two IETF Network slice instances where the SDPs are the customer-facing ports on the PE:¶
Slice 1 uses the explicit match approach for mapping SDP traffic to a connectivity-construct, while slice 2 uses the implicit approach. Both approaches are supported.¶
Note: These two slices both use service-tags of "L3". This service-tag is operator defined and has no specific meaning in the YANG model other to give a "hint" to the NSC on the Service Expectation being L3 forwarding. Other examples we may choose to eliminate it. The usage of this tag is arbitrary and up to the operator and the NSC on it's need and usage.¶
+--------+ 192.0.2.1 |CE1 o------/ VLAN100 +--------+ | SDP1 +------+ +--------+ +------o| PE A+---------------+ |CE2 o-------/-----o| | | +--------+ SDP2 +---+--+ | 198.51.100.1 | | 192.0.4.1 VLAN200 | +---+--+ VLAN100 | | | SDP4 +--------+ | |PE C o-----/-----o CE21 | +--------+ 192.0.3.1 | +---+--+ +--------+ | o------/ VLAN101 | | | | | SDP11a+---+---+ | |CE11 | +------o|PE B +--------------+ | o-------/-----o| | +--------+ SDP11b+------ + 198.51.101.1 VLAN201¶
{ "data": { "ietf-network-slice-service:network-slice-services": { "slo-sle-templates": { "slo-sle-template": [ { "id": "high-BW-template", "template-description": "take the highest BW forwarding path" }, { "id": "low-latency-template", "template-description": "lowest possible latencey forwarding behavior" } ] }, "slice-service": [ { "service-id": "slice1", "service-description": "example slice1", "service-tags": { "tag-type": [ { "tag-type": "ietf-nss:service-tag-service", "value": [ "L3" ] } ] }, "slo-sle-template": "low-latency-template", "status": {}, "sdps": { "sdp": [ { "sdp-id": "1", "node-id": "PE-A", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix1", "target-connectivity-construct-id": 1 } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac1", "ac-description": "AC1 connected to device 1", "ac-node-id": "PE-A", "ac-tp-id": "GigabitEthernet5/0/0/0.100", "ac-ip-address": "192.0.2.1", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "100" ] } ] }, "sdp-peering": { "protocol": [ { "protocol-type": "ietf-nss:peering-protocol-bgp", "attribute": [ { "attribute-type": "ietf-nss:neighbor", "value": [ "192.0.2.2" ] }, { "attribute-type": "ietf-nss:remote-as", "value": [ "64001" ] }, { "attribute-type": "ietf-nss:local-as", "value": [ "64000" ] } ] } ] } } ] }, "status": {} }, { "sdp-id": "3a", "node-id": "PE-B", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix1", "target-connectivity-construct-id": 1 } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac3a", "ac-description": "AC3a connected to device 3", "ac-node-id": "PE-B", "ac-tp-id": "GigabitEthernet8/0/0/4.101", "ac-ip-address": "192.0.3.1", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "101" ] } ] }, "sdp-peering": { "protocol": [ { "protocol-type": "ietf-nss:peering-protocol-bgp", "attribute": [ { "attribute-type": "ietf-nss:neighbor", "value": [ "192.0.3.2" ] }, { "attribute-type": "ietf-nss:remote-as", "value": [ "64002" ] }, { "attribute-type": "ietf-nss:local-as", "value": [ "64000" ] } ] } ] } } ] }, "status": {} }, { "sdp-id": "4", "node-id": "PE-C", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix1", "target-connectivity-construct-id": 1 } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac4", "ac-description": "AC4 connected to device 4", "ac-node-id": "PE-C", "ac-tp-id": "GigabitEthernet4/0/0/3.100", "ac-ip-address": "192.0.4.1", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "100" ] } ] }, "sdp-peering": { "protocol": [ { "protocol-type": "ietf-nss:peering-protocol-bgp", "attribute": [ { "attribute-type": "ietf-nss:neighbor", "value": [ "192.0.4.2" ] }, { "attribute-type": "ietf-nss:remote-as", "value": [ "64004" ] }, { "attribute-type": "ietf-nss:local-as", "value": [ "64000" ] } ] } ] } } ] }, "status": {} } ] }, "connection-groups": { "connection-group": [ { "connection-group-id": "matrix1", "connectivity-type": "ietf-vpn-common:any-to-any", "connectivity-construct": [ { "cc-id": 1, "a2a-sdp": [ { "sdp-id": "1" }, { "sdp-id": "3a" }, { "sdp-id": "4" } ] } ] } ] } }, { "service-id": "slice2", "service-description": "example slice2", "service-tags": { "tag-type": [ { "tag-type": "ietf-nss:service-tag-service", "value": [ "L3" ] } ] }, "slo-sle-template": "high-BW-template", "status": {}, "sdps": { "sdp": [ { "sdp-id": "2", "node-id": "PE-A", "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac2", "ac-description": "AC2 connected to device 2", "ac-node-id": "PE-A", "ac-tp-id": "GigabitEthernet7/0/0/3.200", "ac-ip-address": "198.51.100.1", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "100" ] } ] }, "sdp-peering": { "protocol": [ { "protocol-type": "ietf-nss:peering-protocol-bgp", "attribute": [ { "attribute-type": "ietf-nss:neighbor", "value": [ "192.51.100.2" ] }, { "attribute-type": "ietf-nss:remote-as", "value": [ "64031" ] }, { "attribute-type": "ietf-nss:local-as", "value": [ "64000" ] } ] } ] } } ] }, "status": {} }, { "sdp-id": "3b", "node-id": "PE-B", "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac3b", "ac-description": "AC3b connected to device 3", "ac-node-id": "PE-B", "ac-tp-id": "GigabitEthernet8/0/0/4.201", "ac-ip-address": "198.51.101.1", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "201" ] } ] }, "sdp-peering": { "protocol": [ { "protocol-type": "ietf-nss:peering-protocol-bgp", "attribute": [ { "attribute-type": "ietf-nss:neighbor", "value": [ "192.51.101.2" ] }, { "attribute-type": "ietf-nss:remote-as", "value": [ "64032" ] }, { "attribute-type": "ietf-nss:local-as", "value": [ "64000" ] } ] } ] } } ] }, "status": {} } ] }, "connection-groups": { "connection-group": [ { "connection-group-id": "matrix2", "connectivity-type": "ietf-vpn-common:any-to-any", "connectivity-construct": [ { "cc-id": 1, "a2a-sdp": [ { "sdp-id": "2" }, { "sdp-id": "3b" } ] } ] } ] } } ] } } }¶
The following example describes a simplified service configuration of two IETF Network slice instances where the SDPs are the customer-facing ports on the PE:¶
Slice 3 uses the explicit match approach for mapping SDP traffic to a Connectivity-group, while slice 2 uses the implicit approach. Both approaches are supported.¶
Note: These two slices both use service-tags of "L2". This service-tag is operator defined and has no specific meaning in the YANG model other to give a "hint" to the NSC on the Service Expectation being L2 forwarding. Other examples we may choose to eliminate it. The usage of this tag is arbitrary and up to the operator and the NSC on it's need and usage.¶
+--------+ | CE5 o------/ VLAN100 +--------+ | SDP5 +------+ +--------+ +------o| PE A +---------------+ | CE6 o-------/-----o| | | +--------+ SDP6 +---+--+ | VLAN200 | | | +---+--+ | | | | | PE C o +--------+ | +---+--+ | o------/ VLAN101 | | | | | SDP7a +---+--+ | | CE7 | +------o| PE B +---------------+ | o-------/-----o| | +--------+ SDP7b +------+ VLAN201¶
{ "data": { "ietf-network-slice-service:network-slice-services": { "slo-sle-templates": { "slo-sle-template": [ { "id": "high-BW-template", "template-description": "take the highest BW forwarding path" }, { "id": "low-latency-template", "template-description": "lowest possible latencey forwarding behavior" } ] }, "slice-service": [ { "service-id": "slice3", "service-description": "example slice3", "slo-sle-template": "low-latency-template", "status": {}, "sdps": { "sdp": [ { "sdp-id": "5", "node-id": "PE-A", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix3" } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac5", "ac-description": "AC5 connected to device 5", "ac-node-id": "PE-A", "ac-tp-id": "GigabitEthernet5/0/0/1", "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "100" ] } ] } } ] }, "status": {} }, { "sdp-id": "7a", "node-id": "PE-B", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix3" } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac7a", "ac-description": "AC7a connected to device 7", "ac-node-id": "PE-B", "ac-tp-id": "GigabitEthernet8/0/0/5", "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "200" ] } ] } } ] }, "status": {} } ] }, "connection-groups": { "connection-group": [ { "connection-group-id": "matrix3", "connectivity-type": "ietf-network-slice-service:point-to-point", "connectivity-construct": [ { "cc-id": 1, "p2p-sender-sdp": "5", "p2p-receiver-sdp": "7a" }, { "cc-id": 2, "p2p-sender-sdp": "7a", "p2p-receiver-sdp": "5" } ] } ] } }, { "service-id": "slice4", "service-description": "example slice4", "slo-sle-template": "high-BW-template", "status": {}, "sdps": { "sdp": [ { "sdp-id": "6", "node-id": "PE-A", "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac6", "ac-description": "AC6 connected to device 6", "ac-node-id": "PE-A", "ac-tp-id": "GigabitEthernet7/0/0/4", "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "101" ] } ] } } ] }, "status": {} }, { "sdp-id": "7b", "node-id": "PE-B", "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac7b", "ac-description": "AC7b connected to device 7", "ac-node-id": "PE-B", "ac-tp-id": "GigabitEthernet8/0/0/5", "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "201" ] } ] } } ] }, "status": {} } ] }, "connection-groups": { "connection-group": [ { "connection-group-id": "matrix4", "connectivity-type": "ietf-network-slice-service:point-to-point", "connectivity-construct": [ { "cc-id": 1, "p2p-sender-sdp": "6", "p2p-receiver-sdp": "7b", "service-slo-sle-policy": { "metric-bounds": { "metric-bound": [ { "metric-type": "ietf-nss:service-slo-one-way-bandwidth", "metric-unit": "Mbps", "value-description": "1000" } ] } } }, { "cc-id": 2, "p2p-sender-sdp": "7b", "p2p-receiver-sdp": "6", "service-slo-sle-policy": { "metric-bounds": { "metric-bound": [ { "metric-type": "ietf-nss:service-slo-one-way-bandwidth", "metric-unit": "Mbps", "value-description": "5000" } ] } } } ] } ] } } ] } } }¶
The following example describes a simplified service configuration of one IETF Network slice instance where the SDPs are the customer-facing ports on the PE:¶
+--------+ 196.0.2.1 |Device11o------/ VLAN100 +--------+ | SDP11+------+ +--------+ +------o| A +---------------+ |Device12o-------/-----o| | | +--------+ SDP12+---+--+ | 196.51.100.1 | | 196.0.4.1 VLAN200 | +---+--+ VLAN100 | | | SDP14 +--------+ | | C o-----/-----oDevice14| +--------+ 196.0.3.1 | +---+--+ +--------+ | o------/ VLAN101 | | | | | SDP13a+---+--+ | |Device13| +------o| B +---------------+ | o-------/-----o| | +--------+ SDP13b+------+ 196.51.101.1 VLAN201¶
{ "data": { "ietf-network-slice-service:network-slice-services": { "slo-sle-templates": { "slo-sle-template": [ { "id": "high-BW-template", "template-description": "take the highest BW forwarding path" }, { "id": "low-latency-template", "template-description": "lowest possible latencey forwarding behavior" } ] }, "slice-service": [ { "service-id": "slice5", "service-description": "example slice5", "service-tags": { "tag-type": [ { "tag-type": "ietf-nss:service-tag-service", "value": [ "L3" ] } ] }, "slo-sle-template": "low-latency-template", "status": {}, "sdps": { "sdp": [ { "sdp-id": "11", "node-id": "PE-A", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix5", "connection-group-sdp-role": "ietf-vpn-common:spoke-role" } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac11", "ac-description": "AC11 connected to device 11", "ac-node-id": "PE-A", "ac-tp-id": "GigabitEthernet5/0/0/2", "ac-ip-address": "196.0.2.1", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "100" ] } ] } } ] }, "status": {} }, { "sdp-id": "12", "node-id": "PE-A", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix5", "connection-group-sdp-role": "ietf-vpn-common:spoke-role" } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac12", "ac-description": "AC12 connected to device 12", "ac-node-id": "PE-A", "ac-tp-id": "GigabitEthernet7/0/0/5", "ac-ip-address": "196.51.100.1", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "200" ] } ] } } ] }, "status": {} }, { "sdp-id": "13a", "node-id": "PE-B", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix5", "connection-group-sdp-role": "ietf-vpn-common:spoke-role" } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac13a", "ac-description": "AC13a connected to device 13", "ac-node-id": "PE-B", "ac-tp-id": "GigabitEthernet8/0/0/6", "ac-ip-address": "196.0.3.1", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "101" ] } ] } } ] }, "status": {} }, { "sdp-id": "13b", "node-id": "PE-B", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix5", "connection-group-sdp-role": "ietf-vpn-common:spoke-role" } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac13b", "ac-description": "AC3b connected to device 13", "ac-node-id": "PE-B", "ac-tp-id": "GigabitEthernet8/0/0/4", "ac-ip-address": "196.51.101.1", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "201" ] } ] } } ] }, "status": {} }, { "sdp-id": "14", "node-id": "PE-C", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix5", "connection-group-sdp-role": "ietf-vpn-common:hub-role" } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac14", "ac-description": "AC14 connected to device 14", "ac-node-id": "PE-C", "ac-tp-id": "GigabitEthernet4/0/0/3", "ac-ip-address": "196.0.4.1", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "100" ] } ] } } ] }, "status": {} } ] }, "connection-groups": { "connection-group": [ { "connection-group-id": "matrix5", "connectivity-type": "ietf-vpn-common:hub-spoke", "connectivity-construct": [ { "cc-id": 1, "p2mp-sender-sdp": "14", "p2mp-receiver-sdp": [ "11", "12", "13a", "13b" ], "service-slo-sle-policy": { "metric-bounds": { "metric-bound": [ { "metric-type": "ietf-nss:service-slo-one-way-delay", "metric-unit": "miliseconds", "value-description": "10" } ] } } }, { "cc-id": 2, "p2p-sender-sdp": "11", "p2p-receiver-sdp": "14" }, { "cc-id": 3, "p2p-sender-sdp": "12", "p2p-receiver-sdp": "14" }, { "cc-id": 4, "p2p-sender-sdp": "13a", "p2p-receiver-sdp": "14" }, { "cc-id": 5, "p2p-sender-sdp": "13b", "p2p-receiver-sdp": "14" } ] } ] } } ] } } }¶
The following example describes a simplified service configuration of an IETF Network slice instance where the SDPs are the customer-facing ports on the PE:¶
+--------+ 194.0.2.1 | CE21 o------/ VLAN100 +--------+ | SDP21+------+ +------o| PE A +---------------+ | | | +---+--+ | | | 194.0.4.1 | +---+--+ VLAN100 | | | SDP24 +--------+ | | PE C o-----/-----o CE24 | +--------+ 194.0.3.1 | +---+--+ +--------+ | o------/ VLAN101 | | | | | SDP23a+---+--+ | |CE23 | +------o| PE B +---------------+ | o | | +--------+ +------+¶
{ "data": { "ietf-network-slice-service:network-slice-services": { "slo-sle-templates": { "slo-sle-template": [ { "id": "high-BW-template", "template-description": "take the highest BW forwarding path" }, { "id": "low-latency-template", "template-description": "lowest possible latencey forwarding behavior" }, { "id": "standard-template", "template-description": "take the standard forwarding path" } ] }, "slice-service": [ { "service-id": "slice6", "service-description": "example slice6", "service-tags": { "tag-type": [ { "tag-type": "ietf-nss:service-tag-service", "value": "L3" } ] }, "slo-sle-template": "standard-template", "status": {}, "sdps": { "sdp": [ { "sdp-id": "21", "node-id": "PE-A", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-dscp-match", "value": "EF", "target-connection-group-id": "matrix6", "target-connectivity-construct-id": 2 }, { "index": 2, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix6", "target-connectivity-construct-id": 1 } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac21", "ac-description": "AC21 connected to device 21", "ac-node-id": "PE-A", "ac-tp-id": "GigabitEthernet5/0/0/0", "ac-ip-address": "194.0.2.1", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "100" ] } ] } } ] }, "status": {} }, { "sdp-id": "23a", "node-id": "PE-B", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-dscp-match", "value": "EF", "target-connection-group-id": "matrix6", "target-connectivity-construct-id": 2 }, { "index": 2, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix6", "target-connectivity-construct-id": 1 } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac23a", "ac-description": "AC23a connected to device 23", "ac-node-id": "PE-B", "ac-tp-id": "GigabitEthernet8/0/0/4", "ac-ip-address": "194.0.3.1", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "101" ] } ] } } ] }, "status": {} }, { "sdp-id": "24", "node-id": "PE-C", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-dscp-match", "value": "EF", "target-connection-group-id": "matrix6", "target-connectivity-construct-id": 2 }, { "index": 2, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix6", "target-connectivity-construct-id": 1 } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac24", "ac-description": "AC24 connected to device 24", "ac-node-id": "PE-C", "ac-tp-id": "GigabitEthernet4/0/0/3", "ac-ip-address": "194.0.4.1", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "100" ] } ] } } ] }, "status": {} } ] }, "connection-groups": { "connection-group": [ { "connection-group-id": "matrix6", "connectivity-type": "ietf-vpn-common:any-to-any", "connectivity-construct": [ { "cc-id": 1, "a2a-sdp": [ { "sdp-id": "21" }, { "sdp-id": "23a" }, { "sdp-id": "24" } ] }, { "cc-id": 2, "a2a-sdp": [ { "sdp-id": "21" }, { "sdp-id": "23a" }, { "sdp-id": "24" } ], "slo-sle-template": "low-latency-template" } ] } ] } } ] } } }¶
The following examples describes a simplified service configuration of an IETF Network slice instance 'NS1' with four SDPs: SDP1, SDP2, SDP3 and SDP4 with any-to-any connectivity type. All SDPs are designated as customer-facing ports on the PE.¶
The service is realized using a single any-to-any connectivity construct, and a uniform low-bandwidth slo-sle-template policy applied to SDP4, SDP3, while a high-bandwidth slo-sle-template policy applied to SDP1 and SDP2.¶
+--------+ 192.0.1.1 192.0.3.1 |CE1 o------/ VLAN100 VLAN100 +--------+ | SDP1 +------+ +------+ SDP3 +------o| PE A +-----------| PE C | +--------+ | | | |-----/-----o CE3 | +---+--+ +------+ +--------+ | | | | | | | | +--------+ 192.0.2.1 | | |CE2 o------/ VLAN100 | | 192.0.4.1 +--------+ | SDP2 +---+--+ +---+--+ VLAN100 +------o| PE B +-----------|PE D | SDP4 +--------+ | | | o-----/-----o CE4 | +------+ +---+--+ +--------+¶
{ "data": { "ietf-network-slice-service:network-slice-services": { "slo-sle-templates": { "slo-sle-template": [ { "id": "high-BW-template", "template-description": "take the highest BW forwarding path" }, { "id": "low-BW-template", "template-description": "lowest BW forwarding behavior" } ] }, "slice-service": [ { "service-id": "NS1", "service-description": "URLLC", "service-tags": { "tag-type": [ { "tag-type": "ietf-nss:service-tag-customer", "value": [ "Customer-FOO" ] }, { "tag-type": "ietf-nss:service-tag-service", "value": [ "L3" ] } ] }, "status": {}, "sdps": { "sdp": [ { "sdp-id": "SDP1", "sdp-description": "Central Office 1 at location PE-A", "node-id": "PE-A", "sdp-ip": "192.0.1.1", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-vlan-match", "value": [ "100" ], "target-connection-group-id": "matrix1" } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "AC-SDP1", "ac-description": "Device 1 to PE-A", "ac-node-id": "PE-A", "ac-tp-id": "GigabitEthernet1/0/0/0", "ac-ip-address": "192.0.1.1", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "100" ] } ], "ac-tag-opaque": [ { "tag-name": "VRF", "value": [ "FOO" ] } ] }, "sdp-peering": { "protocol": [ { "protocol-type": "ietf-nss:peering-protocol-bgp", "attribute": [ { "attribute-type": "ietf-nss:neighbor", "value": [ "192.0.1.2" ] } ] } ], "opaque": [ { "attribute-name": "color", "value": [ "10" ] } ] }, "incoming-qos-policy": { "qos-policy-name": "QoS-Gold", "rate-limits": { "cir": "1000000", "cbs": "1000", "pir": "5000000", "pbs": "1000" } } } ] }, "status": {} }, { "sdp-id": "SDP2", "sdp-description": "Central Office 2 at location PE-B", "node-id": "PE-B", "sdp-ip": "192.0.2.1", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-vlan-match", "value": [ "100" ], "target-connection-group-id": "matrix1" } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "AC-SDP2", "ac-description": "Device 2 to PE-B", "ac-node-id": "PE-B", "ac-tp-id": "GigabitEthernet2/0/0/0", "ac-ip-address": "192.0.2.1", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "100" ] } ], "ac-tag-opaque": [ { "tag-name": "VRF", "value": [ "FOO" ] } ] }, "sdp-peering": { "protocol": [ { "protocol-type": "ietf-nss:peering-protocol-bgp", "attribute": [ { "attribute-type": "ietf-nss:neighbor", "value": [ "192.0.2.2" ] } ] } ], "opaque": [ { "attribute-name": "color", "value": [ "10" ] } ] }, "incoming-qos-policy": { "qos-policy-name": "QoS-Gold", "rate-limits": { "cir": "1000000", "cbs": "1000", "pir": "5000000", "pbs": "1000" } } } ] }, "status": {} }, { "sdp-id": "SDP3", "sdp-description": "Remote Office 1 at location PE-C", "node-id": "PE-C", "sdp-ip": "192.0.3.1", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-vlan-match", "value": [ "100" ], "target-connection-group-id": "matrix1" } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "AC-SDP3", "ac-description": "Device 3 to PE-C", "ac-node-id": "PE-C", "ac-tp-id": "GigabitEthernet3/0/0/0", "ac-ip-address": "192.0.3.1", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "100" ] } ], "ac-tag-opaque": [ { "tag-name": "VRF", "value": [ "FOO" ] } ] }, "sdp-peering": { "protocol": [ { "protocol-type": "ietf-nss:peering-protocol-bgp", "attribute": [ { "attribute-type": "ietf-nss:neighbor", "value": [ "192.0.3.2" ] } ] } ], "opaque": [ { "attribute-name": "color", "value": [ "10" ] } ] }, "incoming-qos-policy": { "qos-policy-name": "QoS-Gold", "rate-limits": { "cir": "1000000", "cbs": "1000", "pir": "5000000", "pbs": "1000" } } } ] }, "status": {} }, { "sdp-id": "SDP4", "sdp-description": "Remote Office 2 at location PE-D", "node-id": "PE-D", "sdp-ip": "192.0.4.1", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-vlan-match", "value": [ "100" ], "target-connection-group-id": "matrix1" } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "AC-SDP4", "ac-description": "Device 4 to PE-D", "ac-node-id": "PE-A", "ac-tp-id": "GigabitEthernet4/0/0/0", "ac-ip-address": "192.0.4.1", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "100" ] } ], "ac-tag-opaque": [ { "tag-name": "VRF", "value": [ "FOO" ] } ] }, "sdp-peering": { "protocol": [ { "protocol-type": "ietf-nss:peering-protocol-bgp", "attribute": [ { "attribute-type": "ietf-nss:neighbor", "value": [ "192.0.4.2" ] } ] } ], "opaque": [ { "attribute-name": "color", "value": [ "10" ] } ] }, "incoming-qos-policy": { "qos-policy-name": "QoS-Gold", "rate-limits": { "cir": "1000000", "cbs": "1000", "pir": "5000000", "pbs": "1000" } } } ] }, "status": {} } ] }, "connection-groups": { "connection-group": [ { "connection-group-id": "matrix1", "slo-sle-template": "low-BW-template", "connectivity-construct": [ { "cc-id": 1, "a2a-sdp": [ { "sdp-id": "SDP1", "slo-sle-template": "high-BW-template" }, { "sdp-id": "SDP2", "slo-sle-template": "high-BW-template" }, { "sdp-id": "SDP3" }, { "sdp-id": "SDP4" } ] } ] } ] } } ] } } }¶
The following example describes a simplified service configuration of one IETF Network slice instances where the SDPs are located at the PE-facing ports on the CE:¶
SDP31 SDP-ip 10.1.1.1 (Loopback) | | 192.0.2.2 v VLAN200 +------+ +--------+ ac31 | PE A +---------------+ | CE1 o-------/-----o| | | SDP34 +--------+ +---+--+ | SDP-ip 10.1.1.4 | | | SDP33 | SDP-ip 101.1.3 | +---+--+ v | 192.0.3.2 | | | +--------+ v VLAN101 | | PE C o-----/-----o CE2 | +--------+ ac33a | +---+--+ ac34 +--------+ | o------/ | | VLAN201 | | | +---+---+ | 198.51.101.2 | CE3 | +------o| PE B +--------------+ | o-------/-----o| | +--------+ ac33b +-------+ VLAN201 198.51.101.2¶
{ "data": { "ietf-network-slice-service:network-slice-services": { "slo-sle-templates": { "slo-sle-template": [ { "id": "high-BW-template", "template-description": "take the highest BW forwarding path" }, { "id": "low-latency-template", "template-description": "lowest possible latencey forwarding behavior" } ] }, "slice-service": [ { "service-id": "slice7", "service-description": "example slice7", "service-tags": { "tag-type": [ { "tag-type": "ietf-nss:service-tag-service", "value": [ "L3" ] } ] }, "slo-sle-template": "low-latency-template", "status": {}, "sdps": { "sdp": [ { "sdp-id": "31", "node-id": "Device-1", "sdp-ip": "10.1.1.1", "peer-sap-id": "PEA-SAP-NS-1", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix1", "target-connectivity-construct-id": 1 } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac31", "ac-description": "AC1 connected to PE-A", "ac-node-id": "Device-1", "ac-tp-id": "GigabitEthernet0", "ac-ip-address": "192.0.2.2", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "100" ] } ] }, "sdp-peering": { "protocol": [ { "protocol-type": "ietf-nss:peering-protocol-bgp", "attribute": [ { "attribute-type": "ietf-nss:neighbor", "value": [ "192.0.2.1" ] }, { "attribute-type": "ietf-nss:remote-as", "value": [ "64000" ] }, { "attribute-type": "ietf-nss:local-as", "value": [ "64001" ] } ] } ] } } ] }, "status": {} }, { "sdp-id": "33", "node-id": "Device-3", "sdp-ip": "10.1.1.3", "peer-sap-id": "PEB-SAP-NS-1", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix1", "target-connectivity-construct-id": 1 } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac33a", "ac-description": "AC33a connected to PE-B", "ac-node-id": "Device-3", "ac-tp-id": "GigabitEthernet0", "ac-ip-address": "192.0.3.2", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "101" ] } ] }, "sdp-peering": { "protocol": [ { "protocol-type": "ietf-nss:peering-protocol-bgp", "attribute": [ { "attribute-type": "ietf-nss:neighbor", "value": [ "192.0.3.1" ] }, { "attribute-type": "ietf-nss:remote-as", "value": [ "64000" ] }, { "attribute-type": "ietf-nss:local-as", "value": [ "64002" ] } ] } ] } }, { "ac-id": "ac33b", "ac-description": "AC33b connected to PE-B", "ac-node-id": "Device-3", "ac-tp-id": "GigabitEthernet1", "ac-ip-address": "198.51.101.2", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "201" ] } ] }, "sdp-peering": { "protocol": [ { "protocol-type": "ietf-nss:peering-protocol-bgp", "attribute": [ { "attribute-type": "ietf-nss:neighbor", "value": [ "192.51.101.1" ] }, { "attribute-type": "ietf-nss:remote-as", "value": [ "64000" ] }, { "attribute-type": "ietf-nss:local-as", "value": [ "64002" ] } ] } ] } } ] }, "status": {} }, { "sdp-id": "34", "node-id": "CE2", "sdp-ip": "10.1.1.4", "peer-sap-id": "PEC-SAP-NS-1", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix1", "target-connectivity-construct-id": 1 } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac34", "ac-description": "AC34 connected to PE-C", "ac-node-id": "Device-4", "ac-tp-id": "GigabitEthernet3", "ac-ip-address": "192.0.4.2", "ac-ip-prefix-length": 24, "ac-tags": { "ac-tags": [ { "ac-tag-type": "ietf-nss:attachment-circuit-tag-vlan-id", "value": [ "100" ] } ] }, "sdp-peering": { "protocol": [ { "protocol-type": "ietf-nss:peering-protocol-bgp", "attribute": [ { "attribute-type": "ietf-nss:neighbor", "value": [ "192.0.4.1" ] }, { "attribute-type": "ietf-nss:remote-as", "value": [ "64000" ] }, { "attribute-type": "ietf-nss:local-as", "value": [ "64004" ] } ] } ] } } ] }, "status": {} } ] }, "connection-groups": { "connection-group": [ { "connection-group-id": "matrix1", "connectivity-type": "ietf-vpn-common:any-to-any", "connectivity-construct": [ { "cc-id": 1, "a2a-sdp": [ { "sdp-id": "31" }, { "sdp-id": "33" }, { "sdp-id": "34" } ] } ] } ] } } ] } } }¶
The following example describes a simplified service configuration of one IETF Network slice instances where the SDPs are located at the PE-facing ports on the CE.¶
In this example it is assumed that the NSC has either internal circuit binding details between the CE and PE already configured or has mechanisms to determine this. The NSC can use various mapping mechanisms depending on the capabilities of the NSC including which parameters the NSC considers as unique (this mapping is out-of-scope of this document) such as using the CE device name, sdp-id, sdp-ip, ac-id or the peer-sap-id to complete this circuit binding.¶
SDP31 SDP-ip 10.1.1.1 (Loopback) | | v +------+ +--------+ ac31 | PE A +---------------+ | CE1 o-------/-----o| | | SDP34 +--------+ +---+--+ | SDP-ip 10.1.1.4 | | | SDP32 | SDP-ip 101.1.3 | +---+--+ v | | | | +--------+ v | | PE C o-----/-----o CE2 | +--------+ ac33a | +---+--+ ac34 +--------+ | o------/ | | | | | +---+---+ | | CE3 | +------o| PE B +--------------+ | o-------/-----o| | +--------+ ac33b +-------+¶
{ "data": { "ietf-network-slice-service:network-slice-services": { "slo-sle-templates": { "slo-sle-template": [ { "id": "high-BW-template", "template-description": "take the highest BW forwarding path" }, { "id": "low-BW-template", "template-description": "lowest BW forwarding behavior" }, { "id": "low-latency-template", "template-description": "lowest possible latencey forwarding behavior" } ] }, "slice-service": [ { "service-id": "slice9", "service-description": "example slice9", "service-tags": { "tag-type": [ { "tag-type": "ietf-nss:service-tag-service", "value": ["L3"] } ] }, "slo-sle-template": "low-latency-template", "status": { }, "sdps": { "sdp": [ { "sdp-id": "31", "node-id": "Device-1", "sdp-ip": "10.1.1.1", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix1" } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac31", "peer-sap-id": "foo.com-circuitID-12345" } ] }, "status": { } }, { "sdp-id": "33", "node-id": "Device-3", "sdp-ip": "10.1.1.3", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix1", "target-connectivity-construct-id": 1 } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac33a", "peer-sap-id": "foo.com-circuitID-67890" }, { "ac-id": "ac33b", "peer-sap-id": "foo.com-circuitID-54321ABC" } ] }, "status": { } }, { "sdp-id": "34", "node-id": "Device-4", "sdp-ip": "10.1.1.4", "service-match-criteria": { "match-criterion": [ { "index": 1, "match-type": "ietf-network-slice-service:service-any-match", "target-connection-group-id": "matrix1" } ] }, "attachment-circuits": { "attachment-circuit": [ { "ac-id": "ac34", "peer-sap-id": "foo.com-circuitID-9876" } ] }, "status": { } } ] }, "connection-groups": { "connection-group": [ { "connection-group-id": "matrix1", "connectivity-type": "ietf-vpn-common:any-to-any", "connectivity-construct": [ { "cc-id": 1, "a2a-sdp": [ { "sdp-id": "31" }, { "sdp-id": "33" }, { "sdp-id": "34" } ] } ] } ] } } ] } } }¶
According to the 5.3.1 IETF Network Slice Service Interface [I-D.ietf-teas-ietf-network-slices], the Network Slice service Interface is a technology-agnostic interface, which is used for a customer to express requirements for a particular IETF Network Slice. Customers operate on abstract IETF Network Slices, with details related to their realization hidden. As classified by [RFC8309], the Network Slice service Interface is classified as Customer Service Model.¶
This draft analyzes the following existing IETF models to identify the gap between the IETF Network Slice service Interface requirements.¶
The difference between the ACTN VN model and the IETF Network Slice service requirements is that the IETF Network Slice service interface is a technology-agnostic interface, whereas the VN model is bound to the IETF TE Topologies. The realization of the IETF Network Slice does not necessarily require the slice network to support the TE technology.¶
The ACTN VN (Virtual Network) model introduced in[I-D.ietf-teas-actn-vn-yang] is the abstract customer view of the TE network. Its YANG structure includes four components:¶
The Type 1 VN can be used to describe IETF Network Slice connection requirements. However, the Network Slice SLO and Network Slice SDP are not clearly defined and there's no direct equivalent. For example, the SLO requirement of the VN is defined through the IETF TE Topologies YANG model, but the TE Topologies model is related to a specific implementation technology. Also, VN-AP does not define "service-match-criteria" to specify a specific SDP belonging to an IETF Network Slice service.¶
The difference between the IETF Network Slice service requirements and the IETF basic network model is that the IETF Network Slice service requests abstract customer IETF Network Slices, with details related to the slice Network hidden. But the IETF network model is used to describe the interconnection details of a Network. The customer service model does not need to provide details on the Network.¶
For example, IETF Network Topologies YANG data model extension introduced in Transport Network Slice YANG Data Model [I-D.liu-teas-transport-network-slice-yang] includes three major parts:¶
Based on this structure, the IETF Network Slice-specific SLO attributes nodes are augmented on the Network Topologies model,, e.g. isolation etc. However, this modeling design requires the slice network to expose a lot of details of the network, such as the actual topology including nodes interconnection and different network layers interconnection.¶