<?xml version="1.0" encoding="US-ASCII"?>
<!-- edited with XMLSPY v5 rel. 3 U (http://www.xmlspy.com)
     by Daniel M Kohn (private) -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!ENTITY rfc2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3775 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3775.xml">
<!ENTITY RFC4225 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4225.xml">
<!ENTITY RFC4866 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4866.xml">
<!ENTITY RFC5213 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5213.xml">
<!-- added by sjjeong: -->
<!ENTITY I-D.ietf-netlmm-pmip6-ipv4-support PUBLIC "" "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-netlmm-pmip6-ipv4-support.xml">
<!ENTITY I-D.ietf-netlmm-grekey-option PUBLIC "" "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.ietf-netlmm-grekey-option.xml">
]>
<rfc category="std" docName="draft-ietf-teas-ietf-network-slice-nbi-yang-08"
     ipr="trust200902">
  <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>

  <?rfc toc="yes" ?>

  <?rfc symrefs="yes" ?>

  <?rfc sortrefs="yes"?>

  <?rfc iprnotified="no" ?>

  <?rfc strict="yes" ?>

  <front>
    <title abbrev="Network Slice Service YANG Model">A YANG Data Model for the
    IETF Network Slice Service</title>

    <author fullname="Bo Wu" initials="B." surname="Wu">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>101 Software Avenue, Yuhua District</street>

          <city>Nanjing</city>

          <region>Jiangsu</region>

          <code>210012</code>

          <country>China</country>
        </postal>

        <email>lana.wubo@huawei.com</email>
      </address>
    </author>

    <author fullname="Dhruv Dhody" initials="D." surname="Dhody">
      <organization>Huawei Technologies</organization>

      <address>
        <postal>
          <street>Divyashree Techno Park</street>

          <city>Bangalore</city>

          <region>Karnataka</region>

          <code>560066</code>

          <country>India</country>
        </postal>

        <email>dhruv.ietf@gmail.com</email>
      </address>
    </author>

    <author fullname="Reza Rokui" initials="R." surname="Rokui">
      <organization>Ciena</organization>

      <address>
        <email>rrokui@ciena.com</email>
      </address>
    </author>

    <author fullname="Tarek Saad" initials="T." surname="Saad">
      <organization>Cisco Systems, Inc</organization>

      <address>
        <email>tsaad@cisco.com</email>
      </address>
    </author>

    <author fullname="John Mullooly" initials="J." surname="Mullooly">
      <organization>Cisco Systems, Inc</organization>

      <address>
        <email>jmullool@cisco.com</email>
      </address>
    </author>

    <date month="" year="2023"/>

    <area>Routing Area</area>

    <workgroup>TEAS</workgroup>

    <abstract>
      <t>This document defines a YANG data model for the IETF Network Slice
      Service. The model can be used in the IETF Network Slice Service
      interface between a customer and a provider that offers IETF Network
      Slice Services.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>This document defines a YANG <xref target="RFC7950"/> data model for
      the IETF Network Slice Service as defined in <xref
      target="I-D.ietf-teas-ietf-network-slices"/>.</t>

      <t>This YANG module can be used in the IETF Network Slice Service
      Interface exposed by a provider to its customers in order to manage
      (e.g., subscribe, delete, or change) IETF Network Slice Services. The
      agreed service will then trigger the appropriate IETF Network Slice
      operation, such as instantiating, modifying, or deleting an IETF Network
      Slice.</t>

      <t>As discussed in <xref target="I-D.ietf-teas-ietf-network-slices"/>,
      the mapping between an IETF Network Slice Service and its realization is
      implementation and deployment specific.</t>

      <t>The IETF Network Slice Service Model (NSSM) focuses on the
      requirements of an IETF Network Slice Service from the point of view of
      the customer, not how it is implemented within a provider network. The
      module is classified as customer service model (Section 2 of <xref
      target="RFC8309"/>).</t>

      <t>The IETF Network Slice Service YANG model conforms to the Network
      Management Datastore Architecture (NMDA) <xref target="RFC8342"/>.</t>

      <t>Editorial Note: (To be removed by RFC Editor)</t>

      <t>This document contains several placeholder values that need to be
      replaced with finalized values at the time of publication. Please apply
      the following replacements: <list style="symbols">
          <t>"XXXX" -- the assigned RFC value for this draft both in this
          draft and in the YANG models under the revision statement.</t>

          <t>The "revision" date in model, in the format XXXX-XX-XX, needs to
          be updated with the date the draft gets approved.</t>
        </list></t>
    </section>

    <section title="Conventions used in this document">
      <t>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,
      <xref target="RFC2119"/>, <xref target="RFC8174"/> when, and only when,
      they appear in all capitals, as shown here.</t>

      <t>The following terms are defined in <xref target="RFC6241"/> and are
      used in this specification: <list style="symbols">
          <t>client</t>

          <t>configuration data</t>

          <t>state data</t>
        </list></t>

      <t>This document makes use of the terms defined in <xref
      target="RFC7950"/>.</t>

      <t>The tree diagrams used in this document follow the notation defined
      in <xref target="RFC8340"/>.</t>

      <t>This document also makes use of the terms defined in <xref
      target="I-D.ietf-teas-ietf-network-slices"/>:</t>

      <t><list style="symbols">
          <t>Attachment Circuit (AC): See Section 3.2 of <xref
          target="I-D.ietf-teas-ietf-network-slices"/>.</t>

          <t>Connectivity Construct: See Sections 3.2 and 4.2.1 of <xref
          target="I-D.ietf-teas-ietf-network-slices"/>.</t>

          <t>Customer: See Section 3.2 of <xref
          target="I-D.ietf-teas-ietf-network-slices"/>.</t>

          <t>Customer Higher-level Operation System: See Section 6.3.1 of
          <xref target="I-D.ietf-teas-ietf-network-slices"/>.</t>

          <t>Service Demarcation Point (SDP): See Sections 3.2 and 5.2 <xref
          target="I-D.ietf-teas-ietf-network-slices"/>.</t>
        </list></t>

      <t>In addition, this document defines the following term: <list
          style="symbols">
          <t>Connection Group: Refers to one or more connectivity constructs
          that are grouped for administrative purposes, such as the following:
          <list style="hanging">
              <t>Combine multiple connectivity constructs to support a set of
              well-known connectivity service types, such as bidirectional
              unicast service, multipoint-to-point (MP2P) service, or
              hub-and-spoke service.</t>

              <t>Assign the same SLO/SLE policies to multiple connectivity
              constructs unless SLO/SLE policy is explicitly overridden at the
              individual connectivity construct level.</t>

              <t>Share specific SLO limits within multiple connectivity
              constructs.</t>
            </list></t>
        </list></t>

      <section title="Acronyms">
        <t>The following acronyms are used in the document:<?rfc subcompact="yes" ?></t>

        <t><list hangIndent="8" style="hanging">
            <t hangText="A2A">Any-to-any</t>

            <t hangText="AC ">Attachment Circuit</t>

            <t hangText="CE">Customer Edge</t>

            <t hangText="NSC">Network Slice Controller</t>

            <t hangText="NSSM">Network Slice Service Model</t>

            <t hangText="MTU">Maximum Transmission Unit</t>

            <t hangText="PE">Provider Edge</t>

            <t hangText="P2P">Point-to-point</t>

            <t hangText="P2MP">Point-to-multipoint</t>

            <t hangText="QoS">Quality of Service</t>

            <t hangText="SDP">Service Demarcation Point</t>

            <t hangText="SLE">Service Level Expectation</t>

            <t hangText="SLO">Service Level Objective</t>
          </list></t>

        <t><?rfc subcompact="no" ?></t>
      </section>
    </section>

    <section title="IETF Network Slice Service Overview">
      <t>As defined in Section 3.2 of <xref
      target="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 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.</t>

      <t>The SDPs serve as the IETF Network Slice Service ingress/egress
      points. An SDP is identified by a unique identifier in the context of an
      IETF Network Slice Service.</t>

      <t>Examples of IETF Network Slice Services that contain only one
      connectivity construct are shown in <xref target="nss-ex1"/>.</t>

      <t><figure anchor="nss-ex1"
          title="Examples of IETF Network Slice Services">
          <artwork><![CDATA[       +----------------------------------------------+
       |                                              |
       |                                              |
       |       Slice Service 1 with 1 P2P CC          |
 SDP1  O------------------->--------------------------O SDP2
       |                                              |
       |                                              |
       |       Slice Service 2 with 1 P2MP CC
       |                  +---------------------------O SDP4
 SDP3  O----------->------+                           |
       |                  +---------------------------O SDP5
       |                                              |
       |                                              |
       |       Slice Service 3 with 1 A2A  CC
 SDP6  O-----------<>-----+---------<>----------------O SDP8
       |                  |                           |
 SDP7  O-----------<>-----+---------<>----------------O SDP9
       |                                              |
       |                                              |
       +----------------------------------------------+
       |<----------IETF Network Slice Services------->|
       |        between endpoints SDP1 to SDP9       |

  CC: Connectivity construct
   O: Represents an SDP
----: Represents connectivity construct
< > : Inbound/outbound directions
]]></artwork>
        </figure>An example of IETF Network Slice Services that contain
      multiple connectivity constructs is shown in <xref target="nss-ex2"/>.
      <figure align="center" anchor="nss-ex2"
          title="Examples of IETF Network Slice Services">
          <artwork><![CDATA[       +----------------------------------------------+
       |                                              |
       |       Slice Service 4 with 2 P2P CCs         |
 SDP10 O------------------->--------------------------O SDP12
 SDP11 O------------------->--------------------------O SDP13
       |                                              |
       |                                              |
       |      Slice Service 5 with 2 P2P CCs          |
       | +----------------->-----------------------+  |
 SDP14 O/                                           \ O SDP15
       |\                                           / |
       | +-----------------<-----------------------+  |
       |                                              |
       +----------------------------------------------+
       |<----------IETF Network Slice Services------->|
       |        between endpoints SDP10 to SDP15      |


 Slice Service: IETF Network Slice Service
            CC: Connectivity construct
             O: Represents an SDP
          ----: Represents connectivity construct
          < > : Inbound/outbound directions
]]></artwork>
        </figure></t>

      <t>As shown in <xref target="nss-ex2"/>, the IETF Network Slice Service
      4 contains two P2P connectivity constructs between the set of SDPs. The
      IETF Network Slice Service 5 is a bidirectional unicast service between
      SDP14 and SDP15 that consists of two unidirectional P2P connectivity
      constructs.</t>
    </section>

    <section title="IETF Network Slice Service Model (NSSM) Usage">
      <t>The NSSM can be used by a provider to expose its IETF Network Slice
      Service, and by a customer to manage its IETF Network Slices Services
      (e.g., request, delete, or modify). The details about how service
      requests are handled by the provider, including which network operations
      are triggered, are internal to the provider. The details of the IETF
      Network Slices realization are hidden from customers.</t>

      <t>The IETF Network Slices are applicable to use cases, such as (but not
      limited to) network wholesale services, network infrastructure sharing
      among operators, Network Function Virtualization (NFV) connectivity,
      Data Center interconnect, and 5G.</t>

      <t>An IETF Network Slice Controller (NSC) is an entity that exposes the
      IETF Network Slice Service Interface to customers to manage IETF Network
      Slice Services. Typically, an NSC receives requests from its
      customer-facing interface (e.g., from a management system). During
      service creation, this interface can convey data objects that 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 service 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.</t>

      <t>As shown in <xref target="ns-arch"/>, in all the use cases, the NSSM
      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.</t>

      <figure anchor="ns-arch"
              title="IETF Network Slice Service Reference Architecture">
        <artwork><![CDATA[          +----------------------------------------+
          |   IETF Network Slice Customer          |
          |                                        |
          +----------------+-----------------------+
                           |
                           |
                           |IETF Network Slice Service Model (NSSM)
                           |
     +---------------------+--------------------------+
     |      IETF Network Slice Controller (NSC)       |
     +------------------------------------------------+
]]></artwork>
      </figure>

      <t>Note: The NSSM can be recursive (hierarchical mode), i.e., an NSSM
      can map a child NSS. As described in Section A.5 of <xref
      target="I-D.ietf-teas-ietf-network-slices"/>, the IETF Network Slice
      Service can support a recursive composite architecture that allows one
      layer of IETF Network Slice Services to be used by other layers.</t>
    </section>

    <section title="IETF Network Slice Service Model (NSSM) Description">
      <t>The NSSM, "ietf-network-slice-service", includes two main data nodes:
      "slice-service" and "slo-sle-templates" (see <xref
      target="ns-yang"/>).</t>

      <t>The "slice-service" list includes the set of IETF Network Slice
      Services that are maintained by a provider. "slice-service" is the data
      structure that abstracts the IETF Network Slice Service. Under the
      "slice-service", the "sdp" list is used to abstract the SDPs. The
      "connection-group" is used to abstract connectivity constructs between
      SDPs.</t>

      <t>The "slo-sle-templates" container is used by an NSC to maintain a set
      of common network slice SLO and SLE templates that apply to one or
      several IETF Network Slice Services.</t>

      <t>The figure below describes the overall structure of the NSSM:</t>

      <figure anchor="ns-yang">
        <artwork><![CDATA[module: ietf-network-slice-service
  +--rw network-slice-services
     +--rw slo-sle-templates
     |  +--rw slo-sle-template* [id]
     |        ...
     +--rw slice-service* [id]
        +--rw id                              string
        +--rw description?                    string
        +--rw service-tags
        |     ...
        +--rw (slo-sle-policy)?
        |     ...
        +--rw compute-only?                   empty
        +--rw status
        |     ...
        +--rw sdps
        |     ...
        +--rw connection-groups
        |     ...
        +--rw custom-topology
              ...

]]></artwork>
      </figure>

      <section title="IETF Network Slice Service SLO and SLE Templates">
        <t>The "slo-sle-templates" container (<xref target="ns-yang"/>) is
        used by an IETF Network Slice Service provider to define and maintain
        a set of common IETF Network Slice Service templates that apply to one
        or several IETF Network Slice Services. The exact definition of the
        templates is deployment specific to each network provider.</t>

        <figure>
          <artwork><![CDATA[+--rw slo-sle-templates
   +--rw slo-sle-template* [id]
      +--rw id              string
      +--rw description?    string
      +--rw template-ref?   leafref
      +--rw slo-policy
      |  +--rw metric-bound* [metric-type]
      |  |  +--rw metric-type          identityref
      |  |  +--rw metric-unit          string
      |  |  +--rw value-description?   string
      |  |  +--rw percentile-value?    percentile
      |  |  +--rw bound?               uint64
      |  +--rw availability?   decimal64
      |  +--rw mtu?            uint16
      +--rw sle-policy
         +--rw security*               identityref
         +--rw isolation*              identityref
         +--rw max-occupancy-level?    uint8
         +--rw steering-constraints
            +--rw path-constraints
            +--rw service-function
]]></artwork>
        </figure>

        <t>The NSSM includes the identifiers of SLO and SLE templates and the
        common attributes defined in Section 5.1 of <xref
        target="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:<list
            style="format %d:">
            <t>Standard template with no attribute specified: The exact
            definition of the templates is deployment specific to the
            provider.</t>

            <t>Standard template with attributes specified: Provides the
            customers with the ability to define templates, or reference a
            predefined template "template-ref" and override specific
            attributes, and apply them to IETF Network Slice Service
            configuration.</t>

            <t>Custom "service-slo-sle-policy": More description is provided
            in <xref target="ns-slo"/>.</t>
          </list></t>

        <t>The following shows an example where two network slice templates
        can be retrieved by the customers:<figure>
            <artwork><![CDATA[{
  "network-slice-services": {
    "slo-sle-templates": {
      "slo-sle-template": [
        {
          "id": "PLATINUM-template",
          "description": "Two-way bandwidth: 1 Gbps,\
                          95th percentile latency 50ms",
          "slo-policy": {
            "metric-bound": [
              {
                "metric-type": "two-way-delay-percentile",
                "metric-unit": "milliseconds",
                "percentile-value": "95",
                "bound": "50"
              }
            ]
          },
          "sle-policy": {
            "isolation": ["service-traffic-isolation"]
          }
        },
        {
          "id": "GOLD-template",
          "description": "Two-way bandwidth: 1 Gbps,\
                          maximum latency 100ms",
          "slo-policy": {
            "metric-bound": [
              {
                "metric-type": "two-way-delay-maximum",
                "metric-unit": "milliseconds",
                "bound": "100"
              }
            ]
          },
          "sle-policy": {
            "isolation": ["service-traffic-isolation"]
          }
        }
      ]
    }
  }
}

========== NOTE: '\' line wrapping per RFC 8792 ===========
]]></artwork>
          </figure></t>

        <t/>
      </section>

      <section title="IETF Network Slice Services">
        <t>The "slice-service" is the data structure that abstracts an IETF
        Network Slice Service, which is uniquely identified by "id" specified
        in the context of an NSC.</t>

        <t>An IETF Network Slice Service has the following main
        parameters:</t>

        <t><list style="symbols">
            <t>"id": Is an unique identifier for internal management reference
            of the IETF Network Slice Service within an NSC.</t>

            <t>"description": Provides a textual description of an IETF
            Network Slice Service.</t>

            <t>"service-tags": Indicates a management tag (e.g.
            "customer-name" ) that is used to correlate the operational
            information of Customer Higher-level Operation System and IETF
            Network Slices. It might be used by IETF Network Slice Service
            operator to provide additional information to the NSC during the
            automation of the IETF network slices. E.g. adding tags with
            "customer-name" when multiple actual customers use a same network
            slice service. Another use-case for "service-tag" might be for an
            operator to provide additional attributes to NSC which might be
            used during the realization of IETF Network Slice Services such as
            type of services (e.g., Layer 2 or Layer 3 service). These
            additional attributes can also be used by an NSC for various
            use-cases such as monitoring and assurance of the IETF Network
            Slice Services where the NSC can notify the customer system by
            issuing the notifications. Note that all these attributes are
            OPTIONAL but might be useful for some use-cases.</t>

            <t>"slo-sle-policy": Defines SLO and SLE policies for the
            "slice-service". More details are provided in <xref
            target="ns-slo"/>.</t>

            <t>"compute-only": Is used to check the feasibility before
            instantiating a Network Slice Service. More details are provided
            in <xref target="ns-compute"/>.</t>

            <t>"status": Is used to show the operative and administrative
            status of the IETF Network Slice Service, and can be used as
            indicator to detect network slice anomalies.</t>

            <t>"sdps": Represents a set of SDPs that are involved in the IETF
            Network Slice Service with each "sdp" belonging to a single
            "slice-service". More details are provided in <xref target="nse">
            </xref>.</t>

            <t>"connection-groups": Abstracts the connections to the set of
            SDPs of the IETF Network Slice Service.</t>
          </list></t>

        <section anchor="nse"
                 title="IETF Network Slice Service Demarcation Points">
          <t>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".</t>

          <figure>
            <artwork><![CDATA[+--rw sdps
   +--rw sdp* [id]
      +--rw id                        string
      +--rw description?              string
      +--rw location
      |     ...
      +--rw node-id?                  string
      +--rw sdp-ip-address*           inet:ip-address
      +--rw tp-ref?                   leafref
      +--rw service-match-criteria
      |     ...
      +--rw incoming-qos-policy
      |     ...
      +--rw outgoing-qos-policy
      |     ...
      +--rw sdp-peering
      |     ...
      +--rw ac-svc-name*              string
      +--rw attachment-circuits
      |     ...
      +--rw status
      |     ...
      +--ro sdp-monitoring
            ...

]]></artwork>
          </figure>

          <t>Section 5.2 of <xref target="I-D.ietf-teas-ietf-network-slices"/>
          describes four possible ways in which an SDP may be placed:<list
              style="symbols">
              <t>Within CE</t>

              <t>Provider-facing ports on the CE</t>

              <t>Customer-facing ports on the PE</t>

              <t>Within PE</t>
            </list></t>

          <t>Although there are four options, they can be categorized into
          two: CE-based or PE-based. To simplify the model, the NSC and the
          customer's system can agree on the choice of these two types without
          marking the type on each SDP.</t>

          <t>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 5.2 of <xref
          target="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, which 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.</t>

          <t>To abstract the SDP options and SLOs/SLEs profiles, an SDP has
          the following characteristics:</t>

          <t><list style="symbols">
              <t>"id": Uniquely identifies the SDP within the Network Slice
              Controller (NSC). The identifier is a string that allows any
              encoding for the local administration of the IETF Network Slice
              Service.</t>

              <t>"location": Indicates SDP location information, which helps
              the NSC to identify an SDP.</t>

              <t>"node-id": A reference to the node that hosts the SDP, which
              helps the NSC to identify an SDP.</t>

              <t>"sdp-ip-address": The SDP IP information, which helps the NSC
              to identify an SDP.</t>

              <t>"tp-ref": A reference to a Termination Point (TP) in the
              custom topology defined in <xref target="ns-custom"/>.</t>

              <t>"incoming-qos-policy" and "outgoing-qos-policy": Sets the
              incoming and outgoing QoS policies to apply on a given SDP,
              including QoS policy and specific ingress and egress traffic
              limits to ensure access security. When applied in the incoming
              direction, the policy is applicable to the traffic that passes
              through the AC from the customer network or from another
              provider's network to the Network Slice. When applied in the
              outgoing direction, the policy is applied to the traffic from
              the Network Slice towards the customer network or towards
              another provider's network. If an SDP has multiple ACs, the
              "rate-limits" of "attachment-circuit" can be set to an AC
              specific value, but the rate cannot exceed the "rate-limits" of
              the SDP. If an SDP only contains a single AC, then the
              "rate-limits" of "attachment-circuit" is the same with the SDP.
              The definition of AC refers to Section 5.2 <xref
              target="I-D.ietf-teas-ietf-network-slices"/>.</t>

              <t>"ac-svc-name": Indicates the names of AC services, for
              association purposes, to refer to the ACs that have been
              created. When both "ac-svc-name" and the attributes of
              "attachment-circuits" are defined, the "ac-svc-name" takes
              precedence.</t>

              <t>"attachment-circuits": Specifies the list of ACs by which the
              service traffic is received. This is an optional SDP attribute.
              When an SDP has multiple ACs and some AC specific attributes are
              needed, each "attachment-circuit" can specify attributes, such
              as interface specific IP addresses, service MTU, etc.</t>

              <t>"sdp-peering": Specifies the peers and peering protocols for
              an SDP to exchange control-plane information, e.g. Layer 1
              signaling protocol or Layer 3 routing protocols, etc.<list>
                  <t>"peer-sap-id": Indicates the references to the remote
                  endpoints of attachment circuits. This information can be
                  used for correlation purposes, such as identifying Service
                  Attachment Points (SAPs) defined in <xref
                  target="RFC9408"/>, which defines a model of an abstract
                  view of the provider network topology that contains the
                  points from which the services can be attached.</t>

                  <t>"protocols": Serves as an augmentation target. <xref
                  target="ac-proto"/> The example protocols of an SDP can be
                  BGP, static routing, etc.</t>
                </list></t>

              <t>"status": Enables the control of the operative and
              administrative status of the SDP, can be used as indicator to
              detect SDP anomalies.</t>

              <t>"service-match-criteria": Defines matching policies for the
              IETF Network Slice Service traffic to apply on a given SDP.</t>
            </list></t>

          <t>Depending on the requirements of different cases,
          "service-match-criteria" can be used for the following
          purposes:<list style="symbols">
              <t>Specify the AC type: physical or logical connection</t>

              <t>Distinguish the SDP traffic if the SDP is located in the CE
              or PE</t>

              <t>Distinguish the traffic of different connection groups (CGs)
              or connectivity constructs (CCs) when multiple CGs/CCs of
              different SLO/SLE may be set up between the same pair of SDPs,
              as illustrated in <xref target="criteria"/>. 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.</t>

              <t>Define specific out-of-profile policies: The customer may
              choose to use an explicit "service-match-criteria" to map any
              SDP's traffic or a subset of the SDP's traffic to a specific
              connection group or connectivity construct. If a subset of
              traffic is matched (e.g. 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.</t>
            </list></t>

          <figure anchor="criteria" title="Application of Match Criteria">
            <artwork><![CDATA[       |                                              |
       |                                              |
       |      Slice Service 6 with 2 P2P CCs          |
       v +--x-x-x-x-x-x---->---x-x-x-x-x-x-x-x-x---+  |
 SDP16 o/                                           \ o SDP17
       |\                                           / |
       | +--%-%-%-%-%-%---->---%-%-%-%-%-%-%-%-%---+  |
       |                                              |
       +----------------------------------------------+
       |<----------IETF Network Slice Services------->|
       |        between endpoints SDP10 to SDP17      |]]></artwork>
          </figure>

          <t>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. <xref
          target="match-criteria"/> shows an example of both the implicit and
          explicit approaches.</t>

          <t>While explicit matching is optional in some use cases, it
          provides a more clear and readable implementation, but the choice is
          left to the operator.</t>

          <t>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.<list style="symbols">
              <t>SDPs at customer-facing ports on the PEs: As shown in <xref
              target="nse-ex1"/> , a 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 NSC uses "node-id" (PE device ID),
              "attachment-circuits" (ACs) to map SDPs to the customer-facing
              ports on the PEs.<figure anchor="nse-ex1">
                  <artwork><![CDATA[
              SDP1                                     SDP2 
       (With PE1 parameters)                       (with PE2 parameters)
               o<--------- IETF Network Slice 1 ------->o 
               +     |                            |     +
               +     |<----------- S1 ----------->|     +
               +     |                            |     +
               +     |    |<------ T1 ------>|    |     +
                 +   v    v                  v    v   +
                   + +----+                  +----+ +    
    +-----+    |     | PE1|==================| PE2|          +-----+ 
    |     |----------X    |                  |    |     |    |     | 
    |     |    |     |    |                  |    X----------|     | 
    |     |----------X    |                  |    |     |    |     | 
    +-----+    |     |    |==================|    |     |    +-----+ 
               AC    +----+                  +----+     AC    
    Customer         Provider                Provider        Customer 
    Edge 1           Edge 1                  Edge 2           Edge 2


  Legend:
    o: Representation of an SDP  
    +: Mapping of an SDP to customer-facing ports on the PE  
    X: Physical interfaces used for realization of the IETF Network Slice Service
   S1: L0/L1/L2/L3 services used for realization of IETF Network Slice Service
   T1: Tunnels used for realization of IETF Network Slice Service
]]></artwork>
                </figure></t>

              <t>SDPs within CEs: As shown in <xref target="nse-ex2"/> , a
              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 NSC uses
              "node-id" (CE device ID), "sdp-ip-address" (IP of SDP for
              management), "service-match-criteria" (VLAN tag),
              "attachment-circuits" (CE ACs) to map SDPs to the CE. The NSC
              can use these CE parameters (and optionally the "peer-sap-id")
              to retrieve the corresponding PE device, interface and AC
              mapping details to complete the end-to-end network slice service
              provisioning (the implementation details are left to the NSC
              provider).<figure anchor="nse-ex2">
                  <artwork><![CDATA[           SDP3                                     SDP4
    (With CE1 parameters)                       (with CE2 parameters)
    +o<----------------- IETF Network Slice 2 -------------->o
    +                                                       +
    +|<------------------------- S2 ---------------------->|+
    +|                                                     |+
    +|                 |<------ T2 ------>|                |+
    +|                 v                  v                |+
    +v            +----+                  +----+           v+
 +--+--+    |     | PE1|==================| PE2|     |    +-+---+
 |  +  X----------X    |                  |    |     |    | +   |
 |  o  |    |     |    |                  |    X----------X o   |
 |     X----------X    |                  |    |     |    |     |
 +-----+    |     |    |==================|    |     |    +-----+
            AC    +----+                  +----+     AC
 Customer         Provider                Provider         Customer
 Edge 1           Edge 1                  Edge 2           Edge 2


Legend:
 o: Representation of an SDP
 +: Mapping of an SDP to CE
 X: Physical interfaces used for realization of the IETF Network Slice Service
S2: L0/L1/L2/L3 services used for realization of the IETF Network Slice Service
T2: Tunnels used for realization of IETF network slice
]]></artwork>
                </figure></t>
            </list></t>
        </section>

        <section anchor="ns-topo"
                 title="IETF Network Slice Service Connectivity Constructs">
          <t>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.</t>

          <t><figure>
              <artwork><![CDATA[+--rw connection-groups
  +--rw connection-group* [id]
     +--rw id                                 string
     +--rw connectivity-type?                 identityref
     +--rw (slo-sle-policy)?
     |  +--:(standard)
     |  |  +--rw slo-sle-template?            -> /network-slice-services/slo-sle-templates/slo-sle-template/id
     |  +--:(custom)
     |     +--rw service-slo-sle-policy
     |           ...
     +--rw service-slo-sle-policy-override?   identityref
     +--rw connectivity-construct* [id]
     |  +--rw id                                   uint32
     |  +--rw (type)?
     |  |  +--:(p2p)
     |  |  |     ...
     |  |  +--:(p2mp)
     |  |  |     ...
     |  |  +--:(a2a)
     |  |        ...
     |  +--rw (slo-sle-policy)?
     |  |  +--:(standard)
     |  |  |     ...
     |  |  +--:(custom)
     |  |        ...
     |  +--rw service-slo-sle-policy-override?     identityref]]></artwork>
            </figure></t>

          <t><xref target="I-D.ietf-teas-ietf-network-slices"/> defines the
          basic connectivity construct (CC) for an IETF Network Slice Service,
          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.</t>

          <t>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.</t>

          <t>"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. Additionally, in the case of hub and spoke connectivity, it
          may be inefficient when there are a large number of SDP with the
          multiple CCs. As illustrated in <xref target="ex3"/>,
          "connectivity-type" of "vpn-common:hub-spoke" and
          "connection-group-sdp-role" of "vpn-common:hub-role" or
          "vpn-common:spoke-role" can be specified <xref
          target="RFC9181"/>.</t>
        </section>

        <section anchor="ns-slo"
                 title="IETF Network Slice Service SLO and SLE Policy">
          <t>As defined in section 5 of <xref
          target="I-D.ietf-teas-ietf-network-slices"/>, the SLO and SLE policy
          of the IETF Network Slice Services define some common
          attributes.</t>

          <t>"slo-sle-policy" is used to represent these 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.</t>

          <t>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 override
          precedence order among them is as follows:<list style="symbols">
              <t>Connectivity-construct at an individual sending SDP</t>

              <t>Connectivity-construct</t>

              <t>Connection-group</t>

              <t>Slice-level</t>
            </list>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. <xref target="preceding"/> gives an
          example of the preceding policy, which shows a slice service having
          an A2A connectivity as default and several specific SLO
          connections.</t>

          <t>The SLO attributes are as follows, including performance metric
          attributes, availability, and MTU.</t>

          <t>The list "metric-bound" supports the generic performance metric
          variations and the combinations and each "metric-bound" could
          specify a particular "metric-type". "metric-type" is defined with
          YANG identity and supports the following options:</t>

          <t><list style="hanging">
              <t>"one-way-bandwidth": Indicates the guaranteed minimum
              bandwidth between any two SDPs. And the bandwidth is
              unidirectional.</t>

              <t>"two-way-bandwidth": Indicates the guaranteed minimum
              bandwidth between any two SDPs. And the bandwidth is
              bidirectional.</t>

              <t>"one-way-delay-maximum": Indicates the maximum one-way
              latency between two SDPs.</t>

              <t>"two-way-delay-maximum": Indicates the maximum round-trip
              latency between two SDPs.</t>

              <t>"one-way-delay-percentile": Indicates the percentile
              objective of the one-way latency between two SDPs.</t>

              <t>"two-way-delay-percentile": Indicates the percentile
              objective of the round-trip latency between two SDPs.</t>

              <t>"one-way-delay-variation-maximum": Indicates the jitter
              constraint of the slice maximum permissible delay variation, and
              is measured by the difference in the one-way latency between
              sequential packets in a flow.</t>

              <t>"two-way-delay-variation-maximum": Indicates the jitter
              constraint of the slice maximum permissible delay variation, and
              is measured by the difference in the two-way latency between
              sequential packets in a flow.</t>

              <t>"one-way-delay-variation-percentile": Indicates the
              percentile objective of the delay variation, and is measured by
              the difference in the one-way latency between sequential packets
              in a flow.</t>

              <t>"two-way-delay-variation-percentile": Indicates the
              percentile objective of the delay variation, and is measured by
              the difference in the two-way latency between sequential packets
              in a flow.</t>

              <t>"one-way-packet-loss": Indicates maximum permissible packet
              loss rate, which is defined by the ratio of packets dropped to
              packets transmitted between two SDPs.</t>

              <t>"two-way-packet-loss": Indicates maximum permissible packet
              loss rate, which is defined by the ratio of packets dropped to
              packets transmitted between two SDPs.</t>
            </list></t>

          <t>"availability": Specifies service availability defined as the
          ratio of uptime to the sum of uptime and downtime, where uptime is
          the time the IETF Network Slice is available in accordance with the
          SLOs associated with it.</t>

          <t>"mtu": Refers to the service MTU. The service provider MUST
          support customer traffic using any PDU up to this size.</t>

          <t>The following common SLEs are defined:<list style="hanging">
              <t>"security": The security leaf-list defines the list of
              security functions the customer requests the operator to apply
              to traffic between the two SDPs, including authentication,
              encryption, etc.</t>

              <t>"isolation": Specifies the isolation types that a customer
              expects.</t>

              <t>"max-occupancy-level": Specifies the number of flows that the
              operator admits.</t>

              <t>"steering-constraints": Specifies the constraints the
              customer requests the operator to route traffic for the IETF
              Network Slice Service.</t>
            </list></t>

          <t>The following shows an example where a network slice policy can
          be configured:<figure>
              <artwork><![CDATA[{
  "slice-services": {
    "slice-service": {
      "id": "exp-slice",
      "service-slo-sle-policy": {
        "description": "video-service-policy",
        "slo-policy": {
          "metric-bound": [
            {
              "metric-type": "one-way-bandwidth",
              "metric-unit": "Mbps",
              "bound": "1000"
            },
            {
              "metric-type": "two-way-delay-maximum",
              "metric-unit": "milliseconds",
              "bound": "10"
            }
          ],
          "availability": "ietf-nss:level-4",
          "mtu": "1500"
        }
      }
    }
  }
} ]]></artwork>
            </figure></t>

          <t>For more complex slicing scenarios, for example a multiple
          connectivity-construct slice service, an "override" option is
          provided to completely override all or part of the slo-sle template
          with new values. For example, if a particular connection-group or a
          connectivity-construct has a unique bandwidth or latency setting,
          that are different from those defined in the slice service, a new
          set of SLOs/SLEs with full or partial override can be applied. In
          the case of partial override, only the newly specified parameters
          are replaced from the original template, while maintaining on
          pre-existing parameters not specified. While a full override removes
          all pre-existing parameters, and in essence starts a new set of
          SLOs/SLEs which are specified. The "service-slo-sle-policy-override"
          is used to specify the requirements.</t>
        </section>

        <section title="IETF Network Slice Service Monitoring ">
          <t>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".</t>

          <t>This model also describes operational and performance status of
          an IETF Network Slice. The statistics are described in the following
          granularity:<list style="symbols">
              <t>Per SDP: specified in "sdp-monitoring" under the "sdp".</t>

              <t>Per connectivity construct: specified in
              "connectivity-construct-monitoring" under the
              "connectivity-construct".</t>

              <t>Per connection group: specified in
              "connection-group-monitoring" under the "connection-group".</t>
            </list></t>

          <t>This model does not define monitoring enabling methods. The
          mechanism defined in <xref target="RFC8640"/> and <xref
          target="RFC8641"/> can be used for either periodic or on-demand
          subscription.</t>

          <t>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.</t>
        </section>

        <section anchor="ns-custom"
                 title="IETF Network Slice Service on Custom Topology">
          <t>The Slice Service customer might ask for some level of control
          over the topology or resources constraints. "custom-topology" is
          defined as an augmentation target that references the context
          topology. The leaf "network-ref" under this container is used to
          reference a predefined topology as a customized topology constraint
          for an Network Slice Service. As per <xref target="RFC8345">Section
          1 in</xref> defines a general abstract topology concept to
          accommodate both the provider's resource capability and the
          customer's preferences. The abstract topology is a topology that
          contains abstract topological elements (nodes, links, termination
          points).</t>

          <t>This document defines only the minimum attributes of the custom
          topology, which can be extended based on the implementation
          requirements.</t>

          <t>The following nodes are defined for the custom topology.<list
              style="hanging">
              <t>"custom-topology": This container is served as an
              augmentation target for the Slice Service topology context,
              which can be multiple. This node is located directly under the
              "Slice Services" list.</t>

              <t>"network-ref": This leaf is under the container
              "custom-topology", which is defined to reference a predefined
              topology as a customized topology constraint for an Network
              Slice Service, such as a VN topology to customize the service
              paths in a network slice by using type 2 Virtual Network (VN)
              defined in section 2.2 of <xref
              target="I-D.ietf-teas-actn-vn-yang"/> ,or an SAP topology to
              request SDP feasibility checks on a Service Attachment Points
              (SAPs) network topology described in Section 3 of <xref
              target="RFC9408"/>.</t>

              <t>"tp-ref": A reference to Termination Point (TP) in the custom
              topology, under the list "sdp", can be used to associate an SDP
              with a TP of the customized topology. The TPs can be access
              points of the VN topology or parent termination points of the
              SAP topology.</t>
            </list></t>
        </section>

        <section anchor="ns-compute"
                 title="IETF Network Slice Service Compute">
          <t>An IETF Network Slice Service is, by default, provisioned so that
          it can instantiated and deliver the service. The IETF Network Slice
          Service customer may request to check the feasibility before
          instantiating a Network Slice Service. In such a case, the IETF
          Network Slice Service is configured in "compute-only" mode to
          distinguish it from the default behavior.</t>

          <t>A "compute-only" Network Slice is configured as usual with the
          associated per slice SLOs/SLEs. The NSC computes the feasible
          connectivity construct to the configured SLOs/SLEs. This computation
          does not create the Network Slice or reserve any resources in the
          provider's network, it simply computes the resulting Network Slice
          based on the request. The Network Slice "administrative-status" and
          the connection groups or connectivity construct list are used to
          convey the result. For example, "admin-pre-deployment" can be used
          to show the status.</t>

          <figure>
            <artwork><![CDATA[            +--------+                                +--------+
            |customer|                                |  NSC   |
            +--------+                                +--------+
                 |                                         |
                 |                                         |
                 |  configuration compute-only             |
compute the NS   |---------------------------------------->|
as per the       |                                         |
SDPs and         |                                         |
SLOs/SLEs        |                                         |
                 |     HTTP 200 (Computed NS and status )  |
                 |<----------------------------------------|
                 |                                         |

 NS: IETF Network Slice
]]></artwork>
          </figure>
        </section>
      </section>
    </section>

    <section title="IETF Network Slice Service Module">
      <t>The "ietf-network-slice-service" module uses types defined in <xref
      target="RFC6991"/>, <xref target="RFC8345"/>, <xref target="RFC9181"/>,
      <xref target="RFC8776"/>, and <xref target="RFC7640"/>.</t>

      <figure>
        <artwork><![CDATA[<CODE BEGINS> file "ietf-network-slice-service@2023-10-23.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 ietf-te-packet-types {
    prefix te-packet-types;
    reference
      "RFC 8776: Common YANG Data Types for Traffic Engineering,
              Section 5";
  }

  organization
    "IETF Traffic Engineering Architecture and Signaling (TEAS)
     Working Group";
  contact
    "WG Web:  <https://datatracker.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
          <rrokui@ciena.com>
     Editor: Tarek Saad
          <tsaad@cisco.com>
     Editor: John Mullooly
          <jmullool@cisco.com>";
  description
    "This YANG module defines a model for the IETF Network Slice
     Service.

     The model fully conforms to the Network Management
     Datastore Architecture (NMDA).

     Copyright (c) 2023 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 2023-10-23 {
    description
      "Initial revision.";
    reference
      "RFC XXXX: A YANG Data Model for the IETF Network Slice Service";
  }

  /* 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, e.g. Layer 2 or
       Layer 3 service.";
  }

  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 vlan-id {
    base attachment-circuit-tag-type;
    description
      "Identity for VLAN ID tag type, e.g. dot1Q or QinQ VLAN IDs.";
  }

  identity ip-mask {
    base attachment-circuit-tag-type;
    description
      "Identity for IP mask tag type.";
  }

  identity service-isolation-type {
    description
      "Base identity for IETF Network Slice Service isolation type.";
  }

  identity service-traffic-isolation {
    base service-isolation-type;
    description
      "Specify the requirement for separating the traffic of the
       customer's IETF Network Slice Service from other services,
       which may be provided by the service provider using VPN
       technologies, such as L3VPN, L2VPN, EVPN, etc.";
  }

  identity service-security-type {
    description
      "Base identity for IETF Network Slice Service security type.";
  }

  identity authentication {
    base service-security-type;
    description
      "Indicates that the Slice Service requires authentication.";
  }

  identity integrity {
    base service-security-type;
    description
      "Indicates that the Slice Service requires data integrity.";
  }

  identity encryption {
    base service-security-type;
    description
      "Indicates that 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-multipoint IETF Network Slice
       Service connectivity.";
  }

  identity multipoint-to-multipoint {
    base vpn-common:vpn-topology;
    description
      "Identity for multipoint-to-multipoint IETF Network Slice
       Service connectivity.";
  }

  identity multipoint-to-point {
    base vpn-common:vpn-topology;
    description
      "Identity for multipoint-to-point IETF Network Slice
       Service connectivity.";
  }

  identity sender-role {
    base vpn-common:role;
    description
      "Indicates that an SDP is acting as a sender.";
  }

  identity receiver-role {
    base vpn-common:role;
    description
      "Indicates that an SDP is acting as a receiver.";
  }

  identity service-slo-metric-type {
    description
      "Base identity for IETF Network Slice Service SLO metric type.";
  }

  identity 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 two-way-bandwidth {
    base service-slo-metric-type;
    description
      "SLO bandwidth metric. Minimum guaranteed bandwidth between
       two SDPs at any time.";
  }

  identity 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 one-way-delay-maximum {
    base service-slo-metric-type;
    description
      "The SLO objective of this metric is the upper bound of network
       delay when transmitting between two SDPs.";
    reference
      "RFC7679: A One-Way Delay Metric for IP Performance
       Metrics (IPPM)";
  }

  identity one-way-delay-percentile {
    base service-slo-metric-type;
    description
      "The SLO objective of this metric is percentile objective of
       network delay when transmitting between two SDPs.
       The metric is defined in RFC7679.";
    reference
      "RFC7679: A One-Way Delay Metric for IP Performance
       Metrics (IPPM)";
  }

  identity two-way-delay-maximum {
    base service-slo-metric-type;
    description
      "SLO two-way delay is the upper bound of network delay when
       transmitting between two SDPs";
    reference
      "RFC2681: A Round-trip Delay Metric for IPPM";
  }

  identity two-way-delay-percentile {
    base service-slo-metric-type;
    description
      "The SLO objective of this metric is the percentile
       objective of network delay when the traffic transmitting
       between two SDPs.";
    reference
      "RFC2681: A Round-trip Delay Metric for IPPM";
  }

  identity one-way-delay-variation-maximum {
    base service-slo-metric-type;
    description
      "The SLO objective of this metric is maximum bound of the
       difference in the one-way delay between sequential packets
       between two SDPs.";
    reference
      "RFC3393: IP Packet Delay Variation Metric for IP Performance
       Metrics (IPPM)";
  }

  identity one-way-delay-variation-percentile {
    base service-slo-metric-type;
    description
      "The SLO objective of this metric is the percentile objective
       in the one-way delay between sequential packets between two
       SDPs.";
    reference
      "RFC3393: IP Packet Delay Variation Metric for IP Performance
       Metrics (IPPM)";
  }

  identity two-way-delay-variation-maximum {
    base service-slo-metric-type;
    description
      "SLO two-way delay variation is the difference in the
       round-trip delay between sequential packets between two SDPs.";
    reference
      "RFC5481: Packet Delay Variation Applicability Statement";
  }

  identity two-way-delay-variation-percentile {
    base service-slo-metric-type;
    description
      "The SLO objective of this metric is the percentile objective
       in the round-trip delay between sequential packets between
       two SDPs.";
    reference
      "RFC5481: Packet Delay Variation Applicability Statement";
  }

  identity one-way-packet-loss {
    base service-slo-metric-type;
    description
      "This metric type refers to the ratio of packets dropped
       to packets transmitted between two SDPs in one-way
       over a period of time.";
    reference
      "RFC7680: A One-Way Loss Metric for IP Performance
       Metrics (IPPM)";
  }

  identity two-way-packet-loss {
    base service-slo-metric-type;
    description
      "This metric type refers to the ratio of packets dropped
       to packets transmitted between two SDPs in two-way
       over a period of time.";
    reference
      "RFC7680: A One-Way Loss Metric for IP Performance
       Metrics (IPPM)";
  }

  /*
   * Identity for availability-type
   */

  identity availability-type {
    description
      "Base identity from which specific availability types are
       derived.";
  }

  identity level-1 {
    base availability-type;
    description
      "Specifies the availability level 1: 99.9999%";
  }

  identity level-2 {
    base availability-type;
    description
      "Specifies the availability level 2: 99.999%";
  }

  identity level-3 {
    base availability-type;
    description
      "Specifies the availability level 3: 99.99%";
  }

  identity level-4 {
    base availability-type;
    description
      "Specifies the availability level 4: 99.9%";
  }

  identity level-5 {
    base availability-type;
    description
      "Specifies the availability level 5: 99%";
  }

  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
      "Uses the physical interface as match criteria for
       Slice Service traffic.";
  }

  identity service-vlan-match {
    base service-match-type;
    description
      "Uses the VLAN ID as match criteria for the Slice Service
       traffic.";
  }

  identity service-label-match {
    base service-match-type;
    description
      "Uses the MPLS label as match criteria for the Slice Service
       traffic.";
  }

  identity service-source-ip-prefix-match {
    base service-match-type;
    description
      "Uses source ip prefix as match criteria for the Slice Service
       traffic. Examples of 'value' of this match type are
       '192.0.2.0/24' and '2001:db8::1/64'.";
  }

  identity service-destination-ip-prefix-match {
    base service-match-type;
    description
      "Uses destination ip prefix as match criteria for the Slice
       Service traffic. Examples of 'value' of this match type are
       '203.0.113.1/32', '2001:db8::2/128'.";
  }

  identity service-dscp-match {
    base service-match-type;
    description
      "Uses DSCP field in the IP packet header as match criteria
       for the Slice Service traffic.";
  }

  identity service-acl-match {
    base service-match-type;
    description
      "Uses 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
      "Matches any Slice Service traffic.";
  }

  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 inherited 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.";
  }

  /* Typedef */

  typedef percentile {
    type decimal64 {
      fraction-digits 3;
      range "0..100";
    }
    description
      "The percentile is a value between 0 and 100
       to 3 decimal places, e.g. 10.000, 99.900 ,99.990, etc.
       For example, for a given one-way delay measurement,
       if the percentile is set to 95.000 and the 95th percentile
       one-way delay is 2 milliseconds, then the 95 percent of
       the sample value is less than or equal to 2 milliseconds.";
  }

  /* Groupings */

  grouping service-slos {
    description
      "Directly measurable objectives of a Slice Service.";
    container slo-policy {
      description
        "Contains the SLO policy.";
      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 the provided value.";
        }
        leaf percentile-value {
          type percentile;
          description
            "The percentile value of the metric type.";
        }
        leaf bound {
          type uint64;
          default "0";
          description
            "The bound on the Slice Service connection metric.
             When set to zero, this indicates an unbounded
             upper limit for the specific metric-type.";
        }
      }
      leaf availability {
        type identityref {
          base availability-type;
        }
        description
          "Service availability level";
      }
      leaf mtu {
        type uint16;
        units "bytes";
        description
          "The MTU specifies the maximum length of data
           packets of the Slice Service.
           The value needs to be less than or equal to the
           minimum MTU value of all 'attachment-circuits'
           in the SDPs.";
      }
    }
  }

  grouping service-sles {
    description
      "Indirectly measurable objectives of a Slice Service.";
    container sle-policy {
      description
        "Contains the SLE policy.";
      leaf-list security {
        type identityref {
          base service-security-type;
        }
        description
          "The security functions that the customer requests
           the operator to apply to traffic between the two SDPs.";
      }
      leaf-list isolation {
        type identityref {
          base service-isolation-type;
        }
        description
          "The Slice Service isolation requirement.";
      }
      leaf max-occupancy-level {
        type uint8 {
          range "1..100";
        }
        description
          "The maximal occupancy level specifies the number of flows
           to be admitted.";
      }
      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 sdp-peering {
    description
      "A grouping for the Slice Service SDP peering.";
    container sdp-peering {
      description
        "Describes SDP peering attributes.";
      leaf peer-sap-id {
        type string;
        description
          "Indicates a reference to the remote endpoints of an
           attachment circuit. This information can be used for
           correlation purposes, such as identifying a service
           attachment point (SAP) of a provider equipment when
           requesting a service with CE based SDP attributes.";
        reference
          "RFC9408: A YANG Network Data Model for
           Service Attachment Points (SAPs)";
      }
      container protocols {
        description
          "Serves as an augmentation target.
           Protocols can be augmented into this container,
           e.g. BGP, static routing.";
      }
    }
  }

  grouping sdp-attachment-circuits {
    description
      "Grouping for the SDP attachment circuit definition.";
    container attachment-circuits {
      description
        "List of attachment circuits.";
      list attachment-circuit {
        key "id";
        description
          "The IETF Network Slice Service SDP attachment circuit
           related parameters.";
        leaf id {
          type string;
          description
            "Uniquely identifies an attachment circuit.";
        }
        leaf description {
          type string;
          description
            "The attachment circuit's description.";
        }
        leaf ac-svc-name {
          type string;
          description
            "Indicates an attachment circuit (AC) service name,
             for association purposes, to refer to an AC that has been
             created before the slice creation.
             This node can override 'ac-svc-name' of the parent SDP.";
        }
        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-ipv4-address {
          type inet:ipv4-address;
          description
            "The IPv4 address of the AC.";
        }
        leaf ac-ipv4-prefix-length {
          type uint8;
          description
            "The IPv4 subnet prefix length expressed in bits.";
        }
        leaf ac-ipv6-address {
          type inet:ipv6-address;
          description
            "The IPv6 address of the AC.";
        }
        leaf ac-ipv6-prefix-length {
          type uint8;
          description
            "The IPv6 subnet prefix length expressed in bits.";
        }
        leaf mtu {
          type uint16;
          units "bytes";
          description
            "Maximum size 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 "tag-type";
            description
              "The attachment circuit tags list.";
            leaf 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 values. For example, the
                 tag may indicate 'c-vlan' and 's-vlan'.";
            }
          }
        }
        uses service-qos;
        uses sdp-peering;
        uses vpn-common:service-status;
      }
    }
  }

  grouping sdp-monitoring-metrics {
    description
      "Grouping for the SDP monitoring metrics.";
    container sdp-monitoring {
      config false;
      description
        "Container for SDP monitoring metrics.";
      leaf incoming-bw-value {
        type uint64;
        units "bps";
        description
          "Indicates the absolute value of the incoming bandwidth
           at an SDP from the customer network or
           from another provider's network.";
      }
      leaf incoming-bw-percent {
        type decimal64 {
          fraction-digits 5;
          range "0..100";
        }
        units "percent";
        mandatory true;
        description
          "Indicates a percentage of the incoming bandwidth
           at an SDP from the customer network or
           from another provider's network.";
      }
      leaf outgoing-bw-value {
        type uint64;
        units "bps";
        description
          "Indicates the absolute value of the outgoing bandwidth
           at an SDP towards the customer network or towards
           another provider's network.";
      }
      leaf outgoing-bw-percent {
        type decimal64 {
          fraction-digits 5;
          range "0..100";
        }
        units "percent";
        mandatory true;
        description
          "Indicates a percentage of the outgoing bandwidth
           at an SDP towards the customer network or towards
           another provider's network.";
      }
    }
  }

  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 {
    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.";
      }
    }
  }

  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
        "The QoS policy imposed on ingress direction of the traffic ,
         from the customer network or from another provider's network.";
      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 egress direction of the traffic ,
         towards the customer network or towards another
         provider's network.";
      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 id {
      type string;
      description
        "Unique identifier for the referred Slice Service SDP.";
    }
    leaf description {
      type string;
      description
        "Provides a description of the SDP.";
    }
    uses geolocation;
    leaf node-id {
      type string;
      description
        "Uniquely identifies an edge node of the SDP.";
    }
    leaf-list sdp-ip-address {
      type inet:ip-address;
      description
        "IPv4 or IPv6 address of the SDP.";
    }
    leaf tp-ref {
      type leafref {
        path
          "/nw:networks/nw:network[nw:network-id =current()/../../"
        + "../custom-topology/network-ref]/"
        + "nw:node/nt:termination-point/nt:tp-id";
      }
      description
        "A reference to Termination Point (TP) in the custom
         topology";
      reference
        "RFC 8345: A YANG Data Model for Network 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 identifier that uniquely identifies a match criteria.";
        }
        leaf match-type {
          type identityref {
            base service-match-type;
          }
          mandatory true;
          description
            "Indicates the match type of the entry in the list of
             the Slice Service match criteria.";
        }
        leaf-list value {
          type string;
          description
            "Provides a value for the Slice Service match criteria,
             e.g. IP prefix and VLAN ID.";
        }
        leaf target-connection-group-id {
          type leafref {
            path "../../../../../ietf-nss:connection-groups"
               + "/ietf-nss:connection-group"
               + "/ietf-nss: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
            "Specifies the role of SDP in the connection group
             When the service connection type is MP2MP,
             such as hub and spoke service connection type. In addition,
             this helps to create connectivity construct automatically
             , rather than explicitly specifying each one.";
        }
        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[id"
               + "=current()/../target-connection-group-id]"
               + "/ietf-nss:connectivity-construct/ietf-nss:id";
          }
          description
            "Reference to a Network Slice connection construct.";
        }
      }
    }
    uses service-qos;
    container sdp-peering {
      description
        "Describes SDP peering attributes.";
      leaf-list peer-sap-id {
        type string;
        description
          "Indicates the reference to the remote endpoints of the
           attachment circuits. This information can be used for
           correlation purposes, such as identifying service
           attachment points (SAPs) of provider equipments when
           requesting a service with CE based SDP attributes.";
      }
      container protocols {
        description
          "Serves as an augmentation target.
           Protocols can be augmented into this container,
           e.g. BGP, static routing.";
      }
    }
    leaf-list ac-svc-name {
      type string;
      description
        "Indicates the attachment circuit service name,
         for association purposes, to refer to ACs that have been
         created before the slice creation.";
    }
    uses sdp-attachment-circuits;
    uses vpn-common:service-status;
    uses sdp-monitoring-metrics;
  }

  grouping connectivity-construct {
    description
      "Grouping for Slice Service connectivity construct.";
    list connectivity-construct {
      key "id";
      description
        "List of connectivity constructs.";
      leaf id {
        type uint32;
        description
          "The connectivity construct identifier.";
      }
      choice type {
        default "p2p";
        description
          "Choice for connectivity construct type.";
        case p2p {
          description
            "P2P connectivity construct.";
          leaf p2p-sender-sdp {
            type leafref {
              path "../../../../sdps/sdp/id";
            }
            description
              "Reference to a sender SDP.";
          }
          leaf p2p-receiver-sdp {
            type leafref {
              path "../../../../sdps/sdp/id";
            }
            description
              "Reference to a receiver SDP.";
          }
        }
        case p2mp {
          description
            "P2MP connectivity construct.";
          leaf p2mp-sender-sdp {
            type leafref {
              path "../../../../sdps/sdp/id";
            }
            description
              "Reference to a sender SDP.";
          }
          leaf-list p2mp-receiver-sdp {
            type leafref {
              path "../../../../sdps/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/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;
      uses vpn-common:service-status;
      container connectivity-construct-monitoring {
        config false;
        description
          "SLO status per connectivity construct.";
        uses connectivity-construct-monitoring-metrics;
      }
    }
  }

  grouping connection-group {
    description
      "Grouping for Slice Service connection group.";
    leaf 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;
    }
  }

  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 description {
          type string;
          description
            "Describes 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.";
        }
        uses service-slos;
        uses service-sles;
      }
    }
  }

  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 description {
            type string;
            description
              "Describes the SLO and SLE policy.";
          }
          uses service-slos;
          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.";
    }
  }

  /* Main IETF Network Slice Services Container */

  container network-slice-services {
    description
      "Contains a list of IETF Network Slice Services";
    uses slice-service-template;
    list slice-service {
      key "id";
      description
        "A Slice Service is identified by a service id.";
      leaf id {
        type string;
        description
          "A unique Slice Service identifier.";
      }
      leaf 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 values, e.g. customer names when multiple
               customers sharing same Slice Service in 5G scenario.";
          }
        }
      }
      uses service-slo-sle-policy;
      leaf compute-only {
        type empty;
        description
          "When present, the slice is computed. No resources are
           committed or reserved in the network.";
      }
      uses vpn-common:service-status;
      container sdps {
        description
          "Slice Service SDPs.";
        list sdp {
          key "id";
          min-elements 2;
          uses sdp;
          description
            "List of SDPs in this Slice Service.";
        }
      }
      container connection-groups {
        description
          "Contains connection groups.";
        list connection-group {
          key "id";
          description
            "List of connection groups.";
          uses connection-group;
        }
      }
      container custom-topology {
        description
          "Serves as an augmentation target.
           Container for custom topology, which is indicated by the
           referenced topology predefined, e.g., an abstract RFC8345
           topology.";
        uses nw:network-ref;
      }
    }
  }
}

<CODE ENDS>
]]></artwork>
      </figure>

      <t/>
    </section>

    <section title="Security Considerations">
      <t>The YANG module defined in this document is designed to be accessed
      via network management protocols such as NETCONF <xref
      target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. The lowest
      NETCONF layer is the secure transport layer, and the
      mandatory-to-implement secure transport is Secure Shell (SSH) <xref
      target="RFC6242"/>. The lowest RESTCONF layer is HTTPS, and the
      mandatory-to-implement secure transport is TLS <xref
      target="RFC8446"/>.</t>

      <t>The NETCONF access control model <xref target="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.</t>

      <t>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.</t>

      <t>o
      /ietf-network-slice-service/network-slice-services/slice-service</t>

      <t>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.</t>
    </section>

    <section title="IANA Considerations">
      <t>This document registers a URI in the IETF XML registry <xref
      target="RFC3688"/>. Following the format in <xref target="RFC3688"/>,
      the following registration is requested to be made:</t>

      <figure>
        <artwork><![CDATA[
   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.


]]></artwork>
      </figure>

      <t>This document requests to register a YANG module in the YANG Module
      Names registry <xref target="RFC7950"/>.</t>

      <figure>
        <artwork><![CDATA[
           Name: ietf-network-slice-service
           Namespace: urn:ietf:params:xml:ns:yang:ietf-network-slice-service
           Prefix: ietf-nss
           Reference: RFC XXXX 
]]></artwork>
      </figure>
    </section>

    <section title="Acknowledgments">
      <t>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.</t>

      <t>Thanks to Ladislav Lhotka for the YANG Doctors review.</t>
    </section>

    <section title="Contributors">
      <t>The following authors contributed significantly to this document:</t>

      <figure>
        <artwork><![CDATA[   Luis M. Contreras
   Telefonica
   Spain
   Email: luismiguel.contrerasmurillo@telefonica.com

   Liuyan Han
   China Mobile
   Email: hanliuyan@chinamobile.com
]]></artwork>
      </figure>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <?rfc include='reference.RFC.2119'?>

      <?rfc include='reference.RFC.3688'?>

      <?rfc include='reference.RFC.6241'?>

      <?rfc include='reference.RFC.6242'?>

      <?rfc include='reference.RFC.8340'?>

      <?rfc include='reference.RFC.7950'?>

      <?rfc include='reference.RFC.8040'?>

      <?rfc include='reference.RFC.6991'?>

      <?rfc include='reference.RFC.8174'?>

      <?rfc include='reference.RFC.8341'?>

      <?rfc include='reference.RFC.8342'?>

      <?rfc include='reference.RFC.8446'?>

      <?rfc include='reference.RFC.8640'?>

      <?rfc include='reference.RFC.8641'?>

      <?rfc include='reference.RFC.8776'?>

      <?rfc include='reference.RFC.8345'?>

      <?rfc include='reference.RFC.9181'?>
    </references>

    <references title="Informative References">
      <?rfc include='reference.RFC.7640'?>

      <?rfc include='reference.I-D.boro-opsawg-teas-attachment-circuit'?>

      <?rfc include='reference.I-D.boro-opsawg-teas-common-ac'?>

      <?rfc include='reference.I-D.ietf-teas-ietf-network-slices'?>

      <?rfc include='reference.I-D.ietf-teas-actn-vn-yang'?>

      <?rfc include='reference.RFC.8309'?>

      <?rfc include='reference.RFC.9408'?>
    </references>

    <section anchor="ac-proto" title="Augmentation Considerations">
      <t>The NSSM defines the minimum attributes of slice services. In some
      scenarios, further extension, e.g. the definition of AC technology
      specific attributes and the "isolation" SLE characteristics are
      required.</t>

      <t>For AC technology specific attributes, if the customer and provider
      need to agree, through configuration, on the technology parameter
      values, such as the protocol types and protocol parameters between the
      PE and the CE. The following shows an example where BGP and static
      routing are augmented to the Network Slice Service model. The protocol
      types and definitions can reference <xref
      target="I-D.boro-opsawg-teas-common-ac"/>.</t>

      <t><figure>
          <artwork><![CDATA[augment /ietf-nss:network-slice-services/ietf-nss:slice-service/ietf-nss:sdps\
  /ietf-nss:sdp/ietf-nss:sdp-peering/ietf-nss:protocols:
    +--rw bgp-attributes
    |  +--rw description?   string
    |  +--rw peer-as?       inet:as-number
    |  +--rw neighbor*      inet:ip-address
    +--rw static-attributes
       +--rw cascaded-lan-prefixes
          +--rw ip-lan-prefixes* [lan next-hop]
             +--rw lan         inet:ip-prefix
             +--rw next-hop    union
                   ...]]></artwork>
        </figure>In some scenarios, for example, when multiple slice services
      share one or more ACs, independent AC services, defined in <xref
      target="I-D.boro-opsawg-teas-attachment-circuit"/>, can be used.</t>

      <t>For "isolation" SLE characteristics, the following identities can be
      defined.</t>

      <figure>
        <artwork><![CDATA[  identity service-interference-isolation-dedicated {
    base service-isolation-type;
    description
      "Specify the requirement that the slice service is not impacted 
   by the existence of other customers or services in the same 
   network, which may be provided by the service provider using 
   dedicatd network resources, similar to a dedicated private network.";
  }
]]></artwork>
      </figure>

      <t/>
    </section>

    <section title="Examples of Network Slice Services">
      <section anchor="match-criteria"
               title="Example-1: Two A2A Slice Services with different match approaches">
        <t>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:<list style="symbols">
            <t>IETF Network Slice 1 on SDP1, SDP11a, and SDP4, with an A2A
            connectivity type. This is a L3 slice service and using the
            uniform low latency "slo-sle-template" policy between all SDPs.
            These SDPs will also have AC eBGP peering sessions with unmanaged
            CE elements (not shown) using an AC augmentation model such as the
            one shown above.</t>

            <t>IETF Network Slice 2 on SDP2, SDP11b, with A2A connectivity
            type. This is a L3 slice service and using the uniform high
            bandwidth "slo-sle-template" policy between all SDPs.</t>
          </list>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.</t>

        <t>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. In 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.</t>

        <figure>
          <artwork><![CDATA[+--------+         192.0.2.1/26
|CE1     o------/  VLAN100
+--------+      |  SDP1 +------+
+--------+      +------o|  PE A+---------------+
|CE2     o-------/-----o|      |               |
+--------+         SDP2 +---+--+               |
             198.51.100.1/26|                  |    192.0.2.129/26
                  VLAN200   |              +---+--+ VLAN100
                            |              |      | SDP4      +--------+
                            |              |PE C  o-----/-----o CE21   |
+--------+    192.0.2.65/26 |              +---+--+           +--------+
|        o------/ VLAN101   |                  |
|        |      | SDP11a+---+---+              |
|CE11    |      +------o|PE B   +--------------+
|        o-------/-----o|       |
+--------+        SDP11b+------ +
                  198.51.100.65/26
                  VLAN201
]]></artwork>
        </figure>

        <t/>

        <figure title="">
          <artwork><![CDATA[{
  "data": {
    "ietf-network-slice-service:network-slice-services": {
      "slo-sle-templates": {
        "slo-sle-template": [
          {
            "id": "high-BW-template",
            "description": "take the highest BW forwarding path"
          },
          {
            "id": "low-latency-template",
            "description": "lowest possible latency forwarding behavior"
          }
        ]
      },
      "slice-service": [
        {
          "id": "slice1",
          "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": [
              {
                "id": "1",
                "node-id": "PE-A",
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix1",
                      "target-connectivity-construct-id": 1
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac1",
                      "description": "AC1 connected to device 1",
                      "ac-node-id": "PE-A",
                      "ac-tp-id": "GigabitEthernet5/0/0/0.100",
                      "ac-ipv4-address": "192.0.2.1",
                      "ac-ipv4-prefix-length": 26,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["100"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              },
              {
                "id": "3a",
                "node-id": "PE-B",
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix1",
                      "target-connectivity-construct-id": 1
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac3a",
                      "description": "AC3a connected to device 3",
                      "ac-node-id": "PE-B",
                      "ac-tp-id": "GigabitEthernet8/0/0/4.101",
                      "ac-ipv4-address": "192.0.2.65",
                      "ac-ipv4-prefix-length": 26,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["101"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              },
              {
                "id": "4",
                "node-id": "PE-C",
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix1",
                      "target-connectivity-construct-id": 1
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac4",
                      "description": "AC4 connected to device 4",
                      "ac-node-id": "PE-C",
                      "ac-tp-id": "GigabitEthernet4/0/0/3.100",
                      "ac-ipv4-address": "192.0.2.129",
                      "ac-ipv4-prefix-length": 26,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["100"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              }
            ]
          },
          "connection-groups": {
            "connection-group": [
              {
                "id": "matrix1",
                "connectivity-type": "ietf-vpn-common:any-to-any",
                "connectivity-construct": [
                  {
                    "id": 1,
                    "a2a-sdp": [
                      {
                        "sdp-id": "1"
                      },
                      {
                        "sdp-id": "3a"
                      },
                      {
                        "sdp-id": "4"
                      }
                    ],
                    "status": {
                    }
                  }
                ]
              }
            ]
          }
        },
        {
          "id": "slice2",
          "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": [
              {
                "id": "2",
                "node-id": "PE-A",
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac2",
                      "description": "AC2 connected to device 2",
                      "ac-node-id": "PE-A",
                      "ac-tp-id": "GigabitEthernet7/0/0/3.200",
                      "ac-ipv4-address": "198.51.100.1",
                      "ac-ipv4-prefix-length": 26,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["100"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              },
              {
                "id": "3b",
                "node-id": "PE-B",
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac3b",
                      "description": "AC3b connected to device 3",
                      "ac-node-id": "PE-B",
                      "ac-tp-id": "GigabitEthernet8/0/0/4.201",
                      "ac-ipv4-address": "198.51.100.65",
                      "ac-ipv4-prefix-length": 26,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["201"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              }
            ]
          },
          "connection-groups": {
            "connection-group": [
              {
                "id": "matrix2",
                "connectivity-type": "ietf-vpn-common:any-to-any",
                "connectivity-construct": [
                  {
                    "id": 1,
                    "a2a-sdp": [
                      {
                        "sdp-id": "2"
                      },
                      {
                        "sdp-id": "3b"
                      }
                    ],
                    "status": {
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  }
}]]></artwork>
        </figure>
      </section>

      <section title="Example-2: Two P2P slice services with different match approaches">
        <t>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:<list style="symbols">
            <t>IETF Network Slice 3 on SDP5 and SDP7a with P2P connectivity
            type. This is a L2 slice service and using the uniform low-latency
            "slo-sle-template" policies between the SDPs. A connectivity-group
            level slo-policy has been applied with a delay based metric bound
            of 10ms which will apply to both connectivity-constructs.</t>

            <t>IETF Network Slice 4 on SDP6 and SDP7b, with P2P connectivity
            type. This is a L2 slice service and using the the high bandwidth
            "slo-sle-template" policies between the SDPs. Traffic from SDP6
            and SDP7b is requesting a bandwidth of 1000Mbps, while in the
            reverse direction from SDP7b to SDP6, 5000Mbps is being
            requested.</t>
          </list></t>

        <t>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.</t>

        <t>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.</t>

        <t><figure title="">
            <artwork><![CDATA[+--------+          
|  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
]]></artwork>
          </figure><figure>
            <artwork><![CDATA[{
  "data": {
    "ietf-network-slice-service:network-slice-services": {
      "slo-sle-templates": {
        "slo-sle-template": [
          {
            "id": "high-BW-template",
            "description": "take the highest BW forwarding path"
          },
          {
            "id": "low-latency-template",
            "description": "lowest possible latency forwarding behavior"
          }
        ]
      },
      "slice-service": [
        {
          "id": "slice3",
          "description": "example slice3",
          "slo-sle-template": "low-latency-template",
          "status": {
          },
          "sdps": {
            "sdp": [
              {
                "id": "5",
                "node-id": "PE-A",
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix3"
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac5",
                      "description": "AC5 connected to device 5",
                      "ac-node-id": "PE-A",
                      "ac-tp-id": "GigabitEthernet5/0/0/1",
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["100"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              },
              {
                "id": "7a",
                "node-id": "PE-B",
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix3"
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac7a",
                      "description": "AC7a connected to device 7",
                      "ac-node-id": "PE-B",
                      "ac-tp-id": "GigabitEthernet8/0/0/5",
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["200"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              }
            ]
          },
          "connection-groups": {
            "connection-group": [
              {
                "id": "matrix3",
                "connectivity-type": "ietf-nss:point-to-point",
                "service-slo-sle-policy": {
                  "slo-policy": {
                    "metric-bound": [
                      {
                        "metric-type": "ietf-nss:one-way-delay-maximum",
                        "metric-unit": "milliseconds",
                        "bound": "10"
                      }
                    ]
                  }
                },
                "connectivity-construct": [
                  {
                    "id": 1,
                    "p2p-sender-sdp": "5",
                    "p2p-receiver-sdp": "7a",
                    "status": {
                    }
                  },
                  {
                    "id": 2,
                    "p2p-sender-sdp": "7a",
                    "p2p-receiver-sdp": "5",
                    "status": {
                    }
                  }
                ]
              }
            ]
          }
        },
        {
          "id": "slice4",
          "description": "example slice4",
          "slo-sle-template": "high-BW-template",
          "status": {
          },
          "sdps": {
            "sdp": [
              {
                "id": "6",
                "node-id": "PE-A",
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac6",
                      "description": "AC6 connected to device 6",
                      "ac-node-id": "PE-A",
                      "ac-tp-id": "GigabitEthernet7/0/0/4",
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["101"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              },
              {
                "id": "7b",
                "node-id": "PE-B",
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac7b",
                      "description": "AC7b connected to device 7",
                      "ac-node-id": "PE-B",
                      "ac-tp-id": "GigabitEthernet8/0/0/5",
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["201"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              }
            ]
          },
          "connection-groups": {
            "connection-group": [
              {
                "id": "matrix4",
                "connectivity-type": "ietf-nss:point-to-point",
                "connectivity-construct": [
                  {
                    "id": 1,
                    "p2p-sender-sdp": "6",
                    "p2p-receiver-sdp": "7b",
                    "service-slo-sle-policy": {
                      "slo-policy": {
                        "metric-bound": [
                          {
                            "metric-type": "ietf-nss:one-way-bandwidth",
                            "metric-unit": "Mbps",
                            "bound": "1000"
                           }
                         ]
                       }
                    },
                    "status": {
                    }
                  },
                  {
                    "id": 2,
                    "p2p-sender-sdp": "7b",
                    "p2p-receiver-sdp": "6",
                    "service-slo-sle-policy": {
                      "slo-policy": {
                        "metric-bound": [
                          {
                            "metric-type": ietf-nss:one-way-bandwidth",
                            "metric-unit": "Mbps",
                            "bound": "5000"
                           }
                         ]
                       }
                    },
                    "status": {
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  }
}]]></artwork>
          </figure></t>
      </section>

      <section anchor="ex3"
               title="Example-3: A Hub and Spoke Slice Service with a P2MP Connectivity Construct">
        <t>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:</t>

        <t><list style="hanging">
            <t>IETF Network Slice 5 is a hub-spoke slice with SDP14 as the hub
            and SDP11, SDP12, SDP13a, SDP13b as spokes. This is a L3 slice
            service and using the uniform low-latency "slo-sle-template"
            policies between all spokes and the hub SDPs, but using an
            explicit set of SLO policies with a latency metric of 10ms for hub
            to spoke traffic.</t>
          </list></t>

        <figure title="">
          <artwork><![CDATA[
+--------+         192.0.2.1/26
|Device11o------/  VLAN100
+--------+      |  SDP11+------+
+--------+      +------o|  A   +---------------+
|Device12o-------/-----o|      |               |
+--------+         SDP12+---+--+               |
            198.51.100.1/26 |                  |    192.0.2.129/26
                  VLAN200   |              +---+--+ VLAN100
                            |              |      | SDP14     +--------+
                            |              |   C  o-----/-----oDevice14|
+--------+    192.0.2.65/26 |              +---+--+           +--------+
|        o------/ VLAN101   |                  |
|        |      | SDP13a+---+--+               |
|Device13|      +------o|  B   +---------------+
|        o-------/-----o|      |
+--------+        SDP13b+------+
                  198.51.100.65/26
                  VLAN201

]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[{
  "data": {
    "ietf-network-slice-service:network-slice-services": {
      "slo-sle-templates": {
        "slo-sle-template": [
          {
            "id": "high-BW-template",
            "description": "take the highest BW forwarding path"
          },
          {
            "id": "low-latency-template",
            "description": "lowest possible latency forwarding behavior"
          }
        ]
      },
      "slice-service": [
        {
          "id": "slice5",
          "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": [
              {
                "id": "11",
                "node-id": "PE-A",
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix5",
                      "connection-group-sdp-role": "ietf-vpn-common:spoke-role"
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac11",
                      "description": "AC11 connected to device 11",
                      "ac-node-id": "PE-A",
                      "ac-tp-id": "GigabitEthernet5/0/0/2",
                      "ac-ipv4-address": "192.0.2.1",
                      "ac-ipv4-prefix-length": 26,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["100"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              },
              {
                "id": "12",
                "node-id": "PE-A",
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix5",
                      "connection-group-sdp-role": "ietf-vpn-common:spoke-role"
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac12",
                      "description": "AC12 connected to device 12",
                      "ac-node-id": "PE-A",
                      "ac-tp-id": "GigabitEthernet7/0/0/5",
                      "ac-ipv4-address": "198.51.100.1",
                      "ac-ipv4-prefix-length": 26,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["200"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              },
              {
                "id": "13a",
                "node-id": "PE-B",
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix5",
                      "connection-group-sdp-role": "ietf-vpn-common:spoke-role"
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac13a",
                      "description": "AC13a connected to device 13",
                      "ac-node-id": "PE-B",
                      "ac-tp-id": "GigabitEthernet8/0/0/6",
                      "ac-ipv4-address": "192.0.2.65",
                      "ac-ipv4-prefix-length": 26,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["101"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              },
              {
                "id": "13b",
                "node-id": "PE-B",
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix5",
                      "connection-group-sdp-role": "ietf-vpn-common:spoke-role"
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac13b",
                      "description": "AC3b connected to device 13",
                      "ac-node-id": "PE-B",
                      "ac-tp-id": "GigabitEthernet8/0/0/4",
                      "ac-ipv4-address": "198.51.100.65",
                      "ac-ipv4-prefix-length": 26,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["201"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              },
              {
                "id": "14",
                "node-id": "PE-C",
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix5",
                      "connection-group-sdp-role": "ietf-vpn-common:hub-role"
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac14",
                      "description": "AC14 connected to device 14",
                      "ac-node-id": "PE-C",
                      "ac-tp-id": "GigabitEthernet4/0/0/3",
                      "ac-ipv4-address": "192.0.2.129",
                      "ac-ipv4-prefix-length": 26,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["100"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              }
            ]
          },
          "connection-groups": {
            "connection-group": [
              {
                "id": "matrix5",
                "connectivity-type": "ietf-vpn-common:hub-spoke",
                "connectivity-construct": [
                  {
                    "id": 1,
                    "p2mp-sender-sdp": "14",
                    "p2mp-receiver-sdp": ["11", "12", "13a", "13b"],
                    "service-slo-sle-policy": {
                      "slo-policy": {
                        "metric-bound": [
                          {
                            "metric-type": "ietf-nss:one-way-delay-maximum",
                            "metric-unit": "milliseconds",
                            "bound": "10"
                           }
                         ]
                       }
                    },
                    "status": {
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  }
}]]></artwork>
        </figure>
      </section>

      <section title="Example-4: An A2A Slice service with multiple SLOs and DSCP Matching">
        <t>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:</t>

        <t/>

        <t><list style="hanging">
            <t>IETF Network Slice 6 on SDP21, SDP23a, and SDP24, with A2A
            connectivity type. This is a L3 slice service and using the
            uniform "standard" slo-sle-template policies between all SDPs. For
            traffic matching the DSCP of EF, a slo-sle-template policy of
            "low-latency" will be used. The slice uses the explicit match
            approach for mapping SDP traffic to a connectivity construct.</t>
          </list></t>

        <figure>
          <artwork><![CDATA[+--------+         192.0.2.1/24
| CE21   o------/  VLAN100
+--------+      |  SDP21+------+
                +------o| PE A +---------------+
                        |      |               |
                        +---+--+               |
                            |                  |    203.0.113.1/24
                            |              +---+--+ VLAN100
                            |              |      | SDP24     +--------+
                            |              | PE C o-----/-----o CE24   |
+--------+  198.51.100.1/24 |              +---+--+           +--------+
|        o------/ VLAN101   |                  |
|        |      | SDP23a+---+--+               |
|CE23    |      +------o| PE B +---------------+
|        o              |      |
+--------+              +------+             
                  ]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[{
  "data": {
    "ietf-network-slice-service:network-slice-services": {
      "slo-sle-templates": {
        "slo-sle-template": [
          {
            "id": "high-BW-template",
            "description": "take the highest BW forwarding path"
          },
          {
            "id": "low-latency-template",
            "description": "lowest possible latency forwarding behavior"
          },
          {
            "id": "standard-template",
            "description": "take the standard forwarding path"
          }
        ]
      },
      "slice-service": [
        {
          "id": "slice6",
          "description": "example slice6",
          "service-tags": {
            "tag-type": [
              {
                "tag-type": "ietf-nss:service-tag-service",
                "value": ["L3"]
              }
            ]
          },
          "slo-sle-template": "standard-template",
          "status": {
          },
          "sdps": {
            "sdp": [
              {
                "id": "21",
                "node-id": "PE-A",
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-dscp-match",
                      "value": ["EF"],
                      "target-connection-group-id": "matrix6",
                      "target-connectivity-construct-id": 2
                    },
                    {
                      "index": 2,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix6",
                      "target-connectivity-construct-id": 1
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac21",
                      "description": "AC21 connected to device 21",
                      "ac-node-id": "PE-A",
                      "ac-tp-id": "GigabitEthernet5/0/0/0",
                      "ac-ipv4-address": "192.0.2.1",
                      "ac-ipv4-prefix-length": 24,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["100"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              },
              {
                "id": "23a",
                "node-id": "PE-B",
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-dscp-match",
                      "value": ["EF"],
                      "target-connection-group-id": "matrix6",
                      "target-connectivity-construct-id": 2
                    },
                    {
                      "index": 2,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix6",
                      "target-connectivity-construct-id": 1
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac23a",
                      "description": "AC23a connected to device 23",
                      "ac-node-id": "PE-B",
                      "ac-tp-id": "GigabitEthernet8/0/0/4",
                      "ac-ipv4-address": "198.51.100.1",
                      "ac-ipv4-prefix-length": 24,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["101"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              },
              {
                "id": "24",
                "node-id": "PE-C",
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-dscp-match",
                      "value": ["EF"],
                      "target-connection-group-id": "matrix6",
                      "target-connectivity-construct-id": 2
                    },
                    {
                      "index": 2,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix6",
                      "target-connectivity-construct-id": 1
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac24",
                      "description": "AC24 connected to device 24",
                      "ac-node-id": "PE-C",
                      "ac-tp-id": "GigabitEthernet4/0/0/3",
                      "ac-ipv4-address": "203.0.113.1",
                      "ac-ipv4-prefix-length": 24,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["100"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              }
            ]
          },
          "connection-groups": {
            "connection-group": [
              {
                "id": "matrix6",
                "connectivity-type": "ietf-vpn-common:any-to-any",
                "connectivity-construct": [
                  {
                    "id": 1,
                    "a2a-sdp": [
                      {
                        "sdp-id": "21"
                      },
                      {
                        "sdp-id": "23a"
                      },
                      {
                        "sdp-id": "24",
                        "slo-sle-template": "low-latency-template"
                      }
                    ],
                    "status": {
                    }
                  },
                  {
                    "id": 2,
                    "a2a-sdp": [
                      {
                        "sdp-id": "21"
                      },
                      {
                        "sdp-id": "23a"
                      },
                      {
                        "sdp-id": "24"
                      }
                    ],
                    "status": {
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  }
}]]></artwork>
        </figure>
      </section>

      <section anchor="preceding"
               title="Example-5: An A2A Network Slice Service with SLO Precedence Policies">
        <t>The following examples describes a simplified service configuration
        of an IETF Network slice instance "slice-7" with four SDPs: SDP1,
        SDP2, SDP3 and SDP4 with A2A connectivity type. All SDPs are
        designated as customer-facing ports on the PE.</t>

        <t>The service is realized using a single A2A connectivity construct,
        and a low-bandwidth "slo-sle-template" policy applied to SDP4 and
        SDP3, while a high-bandwidth "slo-sle-template" policy applied to SDP1
        and SDP2. Notice that the slo-sle-templates at the connecitivty-
        construct level take precedence to the one specified at the group
        level.</t>

        <figure>
          <artwork><![CDATA[
+--------+         2001:db8:0:1::1                  2001:db8:0:3::1
|CE1     o------/  VLAN100                          VLAN100
+--------+      |  SDP1 +------+           +------+ SDP3
                +------o| PE A +-----------| PE C |           +--------+
                        |      |           |      |-----/-----o CE3    |
                        +---+--+           +------+           +--------+
                            |                  |
                            |                  |
                            |                  |
                            |                  |
+--------+  2001:db8:0:2::1 |                  |
|CE2     o------/ VLAN100   |                  |    2001:db8:0:4::1
+--------+      | SDP2  +---+--+           +---+--+ VLAN100
                +------o| PE B +-----------|PE D  | SDP4      +--------+
                        |      |           |      o-----/-----o    CE4 |
                        +------+           +---+--+           +--------+]]></artwork>
        </figure>

        <figure>
          <artwork><![CDATA[{
  "data": {
    "ietf-network-slice-service:network-slice-services": {
      "slo-sle-templates": {
        "slo-sle-template": [
          {
            "id": "high-BW-template",
            "description": "take the highest BW forwarding path"
          },
          {
            "id": "low-BW-template",
            "description": "lowest BW forwarding behavior"
          }
        ]
      },
      "slice-service": [
        {
          "id": "slice-7",
          "description": "Foo",
          "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": [
              {
                "id": "SDP1",
                "description": "Central Office 1 at location PE-A",
                "node-id": "PE-A",
                "sdp-ip-address": ["2001:db8:0:1::1"],
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-vlan-match",
                      "value": ["100"],
                      "target-connection-group-id": "matrix1"
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "AC-SDP1",
                      "description": "Device 1 to PE-A",
                      "ac-node-id": "PE-A",
                      "ac-tp-id": "GigabitEthernet1/0/0/0",
                      "ac-ipv6-address": "2001:db8:0:1::1",
                      "ac-ipv6-prefix-length": 64,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["100"]
                          }
                        ]
                      },
                      "incoming-qos-policy": {
                        "qos-policy-name": "Qos-Gold",
                        "rate-limits": {
                          "cir": "1000000",
                          "cbs": "1000",
                          "pir": "5000000",
                          "pbs": "1000"
                        }
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              },
              {
                "id": "SDP2",
                "description": "Central Office 2 at location PE-B",
                "node-id": "PE-B",
                "sdp-ip-address": ["2001:db8:0:2::1"],
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-vlan-match",
                      "value": ["100"],
                      "target-connection-group-id": "matrix1"
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "AC-SDP2",
                      "description": "Device 2 to PE-B",
                      "ac-node-id": "PE-B",
                      "ac-tp-id": "GigabitEthernet2/0/0/0",
                      "ac-ipv6-address": "2001:db8:0:2::1",
                      "ac-ipv6-prefix-length": 64,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["100"]
                          }
                        ]
                      },
                      "incoming-qos-policy": {
                        "qos-policy-name": "Qos-Gold",
                        "rate-limits": {
                          "cir": "1000000",
                          "cbs": "1000",
                          "pir": "5000000",
                          "pbs": "1000"
                        }
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              },
              {
                "id": "SDP3",
                "description": "Remote Office 1 at location PE-C",
                "node-id": "PE-C",
                "sdp-ip-address": ["2001:db8:0:3::1"],
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-vlan-match",
                      "value": ["100"],
                      "target-connection-group-id": "matrix1"
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "AC-SDP3",
                      "description": "Device 3 to PE-C",
                      "ac-node-id": "PE-C",
                      "ac-tp-id": "GigabitEthernet3/0/0/0",
                      "ac-ipv6-address": "2001:db8:0:3::1",
                      "ac-ipv6-prefix-length": 64,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["100"]
                          }
                        ]
                      },
                      "incoming-qos-policy": {
                        "qos-policy-name": "Qos-Gold",
                        "rate-limits": {
                          "cir": "1000000",
                          "cbs": "1000",
                          "pir": "5000000",
                          "pbs": "1000"
                        }
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              },
              {
                "id": "SDP4",
                "description": "Remote Office 2 at location PE-D",
                "node-id": "PE-D",
                "sdp-ip-address": ["2001:db8:0:4::1"],
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-vlan-match",
                      "value": ["100"],
                      "target-connection-group-id": "matrix1"
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "AC-SDP4",
                      "description": "Device 4 to PE-D",
                      "ac-node-id": "PE-A",
                      "ac-tp-id": "GigabitEthernet4/0/0/0",
                      "ac-ipv6-address": "2001:db8:0:4::1",
                      "ac-ipv6-prefix-length": 64,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["100"]
                          }
                        ]
                      },
                      "incoming-qos-policy": {
                        "qos-policy-name": "Qos-Gold",
                        "rate-limits": {
                          "cir": "1000000",
                          "cbs": "1000",
                          "pir": "5000000",
                          "pbs": "1000"
                        }
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              }
            ]
          },
          "connection-groups": {
            "connection-group": [
              {
                "id": "matrix1",
                "slo-sle-template": "low-BW-template",
                "connectivity-construct": [
                  {
                    "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"
                      }
                    ],
                    "status": {
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  }
}]]></artwork>
        </figure>
      </section>

      <section title="Example-6: SDP at CE, L3 A2A Slice Service">
        <t>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:</t>

        <t><list style="symbols">
            <t>IETF Network Slice 8 with SDP31 on CE Device1, SDP33 (with two
            ACs) on Device 3 and SDP34 on Device 4, with an A2A connectivity
            type. This is a L3 slice service and using the uniform low-latency
            slo-sle-template policy between all SDPs.</t>

            <t>This example also introduces the optional attribute of
            "sdp-ip". In this example it could be a loopback on the device.
            How this sdp-ip is used by the NSC is out-of-scope here, but an
            example could be it is the management interface of the device. The
            SDP and AC details are from the perspective of the CE in this
            example. How the CE ACs are mapped to the PE ACs are up to the NSC
            implementation and out-of-scope in this example.</t>
          </list><list style="empty">
            <t>SDP31 ac-id=ac31, node-id=Device1, interface: GigabitEthernet0
            vlan 100</t>

            <t>SDP33 ac-id=ac33a, node-id=Device3, interface: GigabitEthernet0
            vlan 101</t>

            <t>SDP33 ac-id=ac33b, node-id=Device3, interface: GigabitEthernet1
            vlan 201</t>

            <t>SDP34 ac-id=ac34, node-id=Device4, interface: GigabitEthernet3
            vlan 100</t>
          </list><figure>
            <artwork><![CDATA[SDP31
SDP-ip 203.0.113.1
(Loopback)
    |
    |     192.0.2.2/26
    v      VLAN200      +------+
+--------+ ac31         | PE A +---------------+
|  CE1   o-------/-----o|      |               |                SDP34
+--------+              +---+--+               |       SDP-ip 203.0.113.129
                            |                  |                 |
SDP33                       |                  |                 |
SDP-ip 203.0.113.65         |              +---+--+              v
    |      192.0.2.66/26    |              |      |           +--------+
    v      VLAN101          |              | PE C o-----/-----o CE2    |
+--------+ ac33a            |              +---+--+    ac34   +--------+
|        o------/           |                  |       VLAN201
|        |      |       +---+---+              |       198.51.100.66/26
|  CE3   |      +------o| PE B  +--------------+
|        o-------/-----o|       |
+--------+ ac33b        +-------+
           VLAN201
           198.51.100.2/26

]]></artwork>
          </figure><figure>
            <artwork><![CDATA[{
  "data": {
    "ietf-network-slice-service:network-slice-services": {
      "slo-sle-templates": {
        "slo-sle-template": [
          {
            "id": "high-BW-template",
            "description": "take the highest BW forwarding path"
          },
          {
            "id": "low-latency-template",
            "description": "lowest possible latency forwarding behavior"
          }
        ]
      },
      "slice-service": [
        {
          "id": "slice8",
          "description": "slice-8",
          "service-tags": {
            "tag-type": [
              {
                "tag-type": "ietf-nss:service-tag-service",
                "value": ["L3"]
              }
            ]
          },
          "slo-sle-template": "low-latency-template",
          "status": {
          },
          "sdps": {
            "sdp": [
              {
                "id": "31",
                "node-id": "Device-1",
                "sdp-ip-address": ["203.0.113.1"],
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix1",
                      "target-connectivity-construct-id": 1
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac31",
                      "description": "AC1 connected to PE-A",
                      "ac-node-id": "Device-1",
                      "ac-tp-id": "GigabitEthernet0",
                      "ac-ipv4-address": "192.0.2.2",
                      "ac-ipv4-prefix-length": 26,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["100"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              },
              {
                "id": "33",
                "node-id": "Device-3",
                "sdp-ip-address": ["203.0.113.65"],
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix1",
                      "target-connectivity-construct-id": 1
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac33a",
                      "description": "AC33a connected to PE-B",
                      "ac-node-id": "Device-3",
                      "ac-tp-id": "GigabitEthernet0",
                      "ac-ipv4-address": "192.0.2.66",
                      "ac-ipv4-prefix-length": 26,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["101"]
                          }
                        ]
                      },
                      "status": {
                      }
                    },
                    {
                      "id": "ac33b",
                      "description": "AC33b connected to PE-B",
                      "ac-node-id": "Device-3",
                      "ac-tp-id": "GigabitEthernet1",
                      "ac-ipv4-address": "198.51.100.2",
                      "ac-ipv4-prefix-length": 26,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["201"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              },
              {
                "id": "34",
                "node-id": "Device-4",
                "sdp-ip-address": ["203.0.113.129"],
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix1",
                      "target-connectivity-construct-id": 1
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac34",
                      "description": "AC34 connected to PE-C",
                      "ac-node-id": "Device-4",
                      "ac-tp-id": "GigabitEthernet3",
                      "ac-ipv4-address": "198.51.100.66",
                      "ac-ipv4-prefix-length": 26,
                      "ac-tags": {
                        "ac-tags": [
                          {
                            "tag-type": "ietf-nss:vlan-id",
                            "value": ["100"]
                          }
                        ]
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              }
            ]
          },
          "connection-groups": {
            "connection-group": [
              {
                "id": "matrix1",
                "connectivity-type": "ietf-vpn-common:any-to-any",
                "connectivity-construct": [
                  {
                    "id": 1,
                    "a2a-sdp": [
                      {
                        "sdp-id": "31"
                      },
                      {
                        "sdp-id": "33"
                      },
                      {
                        "sdp-id": "34"
                      }
                    ],
                    "status": {
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  }
}]]></artwork>
          </figure></t>
      </section>

      <section title="Example-7: SDP at CE, L3 A2A Slice Service with Network Abstraction">
        <t>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.</t>

        <t>In this example it is assumed that the NSC already has circuit
        binding details between the CE and PE which were previously assigned
        (method is out-of-scope) or the NSC has mechanisms to determine this
        mapping. While the NSC capabilities are out-of-scope of this document,
        the NSC may use the CE device name, "sdp-id", "sdp-ip", "ac-id" or the
        "peer-sap-id" to complete this AC circuit binding.</t>

        <t>We are introducing the "peer-sap-id" in this example, which in this
        case, is an operator provided identifier that the slice requester can
        use for the NSC to identify the service attachment point (saps) in an
        abstracted way. How the NSC uses the "peer-sap-id" is out of scope of
        this document, but a possible implementation would be that the NSC was
        previously provisioned with a "peer-sap-id" to PE
        device/interface/VLAN mapping table. Alternatively, the NSC can
        request this mapping from an external database.</t>

        <t><list style="symbols">
            <t>IETF Network Slice 9 with SDP31 on CPE Device1, SDP33 (with two
            ACs) on Device 3 and SDP34 on Device 4, with an A2A connectivity
            type. This is a L3 slice service and using the uniform low-latency
            slo-sle-template policy between all SDPs.</t>
          </list></t>

        <t><list style="empty">
            <t>SDP31 ac-id=ac31, node-id=Device1, peer-sap-id=
            foo.com-circuitID-12345</t>

            <t>SDP33 ac-id=ac33a, node-id=Device3,
            peer-sap-id=foo.com-circuitID-67890</t>

            <t>SDP33 ac-id=ac33b, node-id=Device3,
            peer-sap-id=foo.com-circuitID-54321ABC</t>

            <t>SDP34 ac-id=ac34, node-id=Device4,
            peer-sap-id=foo.com-circuitID-9876</t>
          </list></t>

        <figure>
          <artwork><![CDATA[SDP31
2001:db8:0:1::1
(Loopback,etc)
    |
    |
    v                   +-------------------------+
+--------+ ac31         |                         |
|Device1 o-------/-----o|sap                      |             SDP34
+--------+              |                         |       2001:db8:0:3::1
                        |     Abstracted          |              |
SDP33                   |   Provider Network      |              |
2001:db8:0:2::1         |                         |              v
    |                   |                         |           +--------+
    v                   |                      sap|-----/-----o Device4|
+--------+ ac33a        |                         |    ac41   +--------+
|        o------/       |                         |
|        |      |       |                         |
|Device3 |      +------o|sap                      |
|        o-------/-----o|sap                      |
+--------+ ac33b        +-------------------------+
]]></artwork>
        </figure>

        <t/>

        <figure>
          <artwork><![CDATA[{
  "data": {
    "ietf-network-slice-service:network-slice-services": {
      "slo-sle-templates": {
        "slo-sle-template": [
          {
            "id": "high-BW-template",
            "description": "take the highest BW forwarding path"
          },
          {
            "id": "low-latency-template",
            "description": "lowest possible latency forwarding behavior"
          }
        ]
      },
      "slice-service": [
        {
          "id": "slice-9",
          "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": [
              {
                "id": "31",
                "node-id": "Device-1",
                "sdp-ip-address": ["2001:db8:0:1::1"],
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix1"
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac31",
                      "sdp-peering": {
                        "peer-sap-id": "foo.com-circuitID-12345"
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              },
              {
                "id": "33",
                "node-id": "Device-3",
                "sdp-ip-address": ["2001:db8:0:2::1"],
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix1",
                      "target-connectivity-construct-id": 1
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac33a",
                      "sdp-peering": {
                        "peer-sap-id": "foo.com-circuitID-67890"
                      },
                      "status": {
                      }
                    },
                    {
                      "id": "ac33b",
                      "sdp-peering": {
                        "peer-sap-id": "foo.com-circuitID-54321ABC"
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              },
              {
                "id": "34",
                "node-id": "Device-4",
                "sdp-ip-address": ["2001:db8:0:3::1"],
                "service-match-criteria": {
                  "match-criterion": [
                    {
                      "index": 1,
                      "match-type": "ietf-nss:service-any-match",
                      "target-connection-group-id": "matrix1"
                    }
                  ]
                },
                "attachment-circuits": {
                  "attachment-circuit": [
                    {
                      "id": "ac34",
                      "sdp-peering": {
                        "peer-sap-id": "foo.com-circuitID-9876"
                      },
                      "status": {
                      }
                    }
                  ]
                },
                "status": {
                }
              }
            ]
          },
          "connection-groups": {
            "connection-group": [
              {
                "id": "matrix1",
                "connectivity-type": "ietf-vpn-common:any-to-any",
                "connectivity-construct": [
                  {
                    "id": 1,
                    "a2a-sdp": [
                      {
                        "sdp-id": "31"
                      },
                      {
                        "sdp-id": "33"
                      },
                      {
                        "sdp-id": "34"
                      }
                    ],
                    "status": {
                    }
                  }
                ]
              }
            ]
          }
        }
      ]
    }
  }
}]]></artwork>
        </figure>
      </section>
    </section>

    <section title="Complete Model Tree Structure">
      <figure>
        <artwork><![CDATA[module: ietf-network-slice-service
  +--rw network-slice-services
     +--rw slo-sle-templates
     |  +--rw slo-sle-template* [id]
     |     +--rw id              string
     |     +--rw description?    string
     |     +--rw template-ref?   leafref
     |     +--rw slo-policy
     |     |  +--rw metric-bound* [metric-type]
     |     |  |  +--rw metric-type          identityref
     |     |  |  +--rw metric-unit          string
     |     |  |  +--rw value-description?   string
     |     |  |  +--rw percentile-value?    percentile
     |     |  |  +--rw bound?               uint64
     |     |  +--rw availability?   identityref
     |     |  +--rw mtu?            uint16
     |     +--rw sle-policy
     |        +--rw security*               identityref
     |        +--rw isolation*              identityref
     |        +--rw max-occupancy-level?    uint8
     |        +--rw steering-constraints
     |           +--rw path-constraints
     |           +--rw service-function
     +--rw slice-service* [id]
        +--rw id                              string
        +--rw description?                    string
        +--rw service-tags
        |  +--rw tag-type* [tag-type]
        |     +--rw tag-type    identityref
        |     +--rw value*      string
        +--rw (slo-sle-policy)?
        |  +--:(standard)
        |  |  +--rw slo-sle-template?         leafref
        |  +--:(custom)
        |     +--rw service-slo-sle-policy
        |        +--rw description?   string
        |        +--rw slo-policy
        |        |  +--rw metric-bound* [metric-type]
        |        |  |  +--rw metric-type          identityref
        |        |  |  +--rw metric-unit          string
        |        |  |  +--rw value-description?   string
        |        |  |  +--rw percentile-value?    percentile
        |        |  |  +--rw bound?               uint64
        |        |  +--rw availability?   identityref
        |        |  +--rw mtu?            uint16
        |        +--rw sle-policy
        |           +--rw security*               identityref
        |           +--rw isolation*              identityref
        |           +--rw max-occupancy-level?    uint8
        |           +--rw steering-constraints
        |              +--rw path-constraints
        |              +--rw service-function
        +--rw compute-only?                   empty
        +--rw status
        |  +--rw admin-status
        |  |  +--rw status?        identityref
        |  |  +--rw last-change?   yang:date-and-time
        |  +--ro oper-status
        |     +--ro status?        identityref
        |     +--ro last-change?   yang:date-and-time
        +--rw sdps
        |  +--rw sdp* [id]
        |     +--rw id                        string
        |     +--rw description?              string
        |     +--rw location
        |     |  +--rw altitude?    int64
        |     |  +--rw latitude?    decimal64
        |     |  +--rw longitude?   decimal64
        |     +--rw node-id?                  string
        |     +--rw sdp-ip-address*           inet:ip-address
        |     +--rw tp-ref?                   leafref
        |     +--rw service-match-criteria
        |     |  +--rw match-criterion* [index]
        |     |     +--rw index
        |     |     |       uint32
        |     |     +--rw match-type
        |     |     |       identityref
        |     |     +--rw value*
        |     |     |       string
        |     |     +--rw target-connection-group-id          leafref
        |     |     +--rw connection-group-sdp-role?
        |     |     |       identityref
        |     |     +--rw target-connectivity-construct-id?   leafref
        |     +--rw incoming-qos-policy
        |     |  +--rw qos-policy-name?   string
        |     |  +--rw rate-limits
        |     |     +--rw cir?   uint64
        |     |     +--rw cbs?   uint64
        |     |     +--rw eir?   uint64
        |     |     +--rw ebs?   uint64
        |     |     +--rw pir?   uint64
        |     |     +--rw pbs?   uint64
        |     +--rw outgoing-qos-policy
        |     |  +--rw qos-policy-name?   string
        |     |  +--rw rate-limits
        |     |     +--rw cir?   uint64
        |     |     +--rw cbs?   uint64
        |     |     +--rw eir?   uint64
        |     |     +--rw ebs?   uint64
        |     |     +--rw pir?   uint64
        |     |     +--rw pbs?   uint64
        |     +--rw sdp-peering
        |     |  +--rw peer-sap-id*   string
        |     |  +--rw protocols
        |     +--rw ac-svc-name*              string
        |     +--rw attachment-circuits
        |     |  +--rw attachment-circuit* [id]
        |     |     +--rw id                       string
        |     |     +--rw description?             string
        |     |     +--rw ac-svc-name?             string
        |     |     +--rw ac-node-id?              string
        |     |     +--rw ac-tp-id?                string
        |     |     +--rw ac-ipv4-address?
        |     |     |       inet:ipv4-address
        |     |     +--rw ac-ipv4-prefix-length?   uint8
        |     |     +--rw ac-ipv6-address?
        |     |     |       inet:ipv6-address
        |     |     +--rw ac-ipv6-prefix-length?   uint8
        |     |     +--rw mtu?                     uint16
        |     |     +--rw ac-tags
        |     |     |  +--rw ac-tags* [tag-type]
        |     |     |     +--rw tag-type    identityref
        |     |     |     +--rw value*      string
        |     |     +--rw incoming-qos-policy
        |     |     |  +--rw qos-policy-name?   string
        |     |     |  +--rw rate-limits
        |     |     |     +--rw cir?   uint64
        |     |     |     +--rw cbs?   uint64
        |     |     |     +--rw eir?   uint64
        |     |     |     +--rw ebs?   uint64
        |     |     |     +--rw pir?   uint64
        |     |     |     +--rw pbs?   uint64
        |     |     +--rw outgoing-qos-policy
        |     |     |  +--rw qos-policy-name?   string
        |     |     |  +--rw rate-limits
        |     |     |     +--rw cir?   uint64
        |     |     |     +--rw cbs?   uint64
        |     |     |     +--rw eir?   uint64
        |     |     |     +--rw ebs?   uint64
        |     |     |     +--rw pir?   uint64
        |     |     |     +--rw pbs?   uint64
        |     |     +--rw sdp-peering
        |     |     |  +--rw peer-sap-id?   string
        |     |     |  +--rw protocols
        |     |     +--rw status
        |     |        +--rw admin-status
        |     |        |  +--rw status?        identityref
        |     |        |  +--rw last-change?   yang:date-and-time
        |     |        +--ro oper-status
        |     |           +--ro status?        identityref
        |     |           +--ro last-change?   yang:date-and-time
        |     +--rw status
        |     |  +--rw admin-status
        |     |  |  +--rw status?        identityref
        |     |  |  +--rw last-change?   yang:date-and-time
        |     |  +--ro oper-status
        |     |     +--ro status?        identityref
        |     |     +--ro last-change?   yang:date-and-time
        |     +--ro sdp-monitoring
        |        +--ro incoming-bw-value?     uint64
        |        +--ro incoming-bw-percent    decimal64
        |        +--ro outgoing-bw-value?     uint64
        |        +--ro outgoing-bw-percent    decimal64
        +--rw connection-groups
        |  +--rw connection-group* [id]
        |     +--rw id                                 string
        |     +--rw connectivity-type?
        |     |       identityref
        |     +--rw (slo-sle-policy)?
        |     |  +--:(standard)
        |     |  |  +--rw slo-sle-template?            leafref
        |     |  +--:(custom)
        |     |     +--rw service-slo-sle-policy
        |     |        +--rw description?   string
        |     |        +--rw slo-policy
        |     |        |  +--rw metric-bound* [metric-type]
        |     |        |  |  +--rw metric-type
        |     |        |  |  |       identityref
        |     |        |  |  +--rw metric-unit          string
        |     |        |  |  +--rw value-description?   string
        |     |        |  |  +--rw percentile-value?
        |     |        |  |  |       percentile
        |     |        |  |  +--rw bound?               uint64
        |     |        |  +--rw availability?   identityref
        |     |        |  +--rw mtu?            uint16
        |     |        +--rw sle-policy
        |     |           +--rw security*
        |     |           |       identityref
        |     |           +--rw isolation*
        |     |           |       identityref
        |     |           +--rw max-occupancy-level?    uint8
        |     |           +--rw steering-constraints
        |     |              +--rw path-constraints
        |     |              +--rw service-function
        |     +--rw service-slo-sle-policy-override?
        |     |       identityref
        |     +--rw connectivity-construct* [id]
        |     |  +--rw id
        |     |  |       uint32
        |     |  +--rw (type)?
        |     |  |  +--:(p2p)
        |     |  |  |  +--rw p2p-sender-sdp?
        |     |  |  |  |       -> ../../../../sdps/sdp/id
        |     |  |  |  +--rw p2p-receiver-sdp?
        |     |  |  |          -> ../../../../sdps/sdp/id
        |     |  |  +--:(p2mp)
        |     |  |  |  +--rw p2mp-sender-sdp?
        |     |  |  |  |       -> ../../../../sdps/sdp/id
        |     |  |  |  +--rw p2mp-receiver-sdp*
        |     |  |  |          -> ../../../../sdps/sdp/id
        |     |  |  +--:(a2a)
        |     |  |     +--rw a2a-sdp* [sdp-id]
        |     |  |        +--rw sdp-id
        |     |  |        |       -> ../../../../../sdps/sdp/id
        |     |  |        +--rw (slo-sle-policy)?
        |     |  |           +--:(standard)
        |     |  |           |  +--rw slo-sle-template?         leafref
        |     |  |           +--:(custom)
        |     |  |              +--rw service-slo-sle-policy
        |     |  |                 +--rw description?   string
        |     |  |                 +--rw slo-policy
        |     |  |                 |  +--rw metric-bound*
        |     |  |                 |  |       [metric-type]
        |     |  |                 |  |  +--rw metric-type
        |     |  |                 |  |  |       identityref
        |     |  |                 |  |  +--rw metric-unit
        |     |  |                 |  |  |       string
        |     |  |                 |  |  +--rw value-description?
        |     |  |                 |  |  |       string
        |     |  |                 |  |  +--rw percentile-value?
        |     |  |                 |  |  |       percentile
        |     |  |                 |  |  +--rw bound?
        |     |  |                 |  |          uint64
        |     |  |                 |  +--rw availability?
        |     |  |                 |  |       identityref
        |     |  |                 |  +--rw mtu?
        |     |  |                 |          uint16
        |     |  |                 +--rw sle-policy
        |     |  |                    +--rw security*
        |     |  |                    |       identityref
        |     |  |                    +--rw isolation*
        |     |  |                    |       identityref
        |     |  |                    +--rw max-occupancy-level?
        |     |  |                    |       uint8
        |     |  |                    +--rw steering-constraints
        |     |  |                       +--rw path-constraints
        |     |  |                       +--rw service-function
        |     |  +--rw (slo-sle-policy)?
        |     |  |  +--:(standard)
        |     |  |  |  +--rw slo-sle-template?              leafref
        |     |  |  +--:(custom)
        |     |  |     +--rw service-slo-sle-policy
        |     |  |        +--rw description?   string
        |     |  |        +--rw slo-policy
        |     |  |        |  +--rw metric-bound* [metric-type]
        |     |  |        |  |  +--rw metric-type
        |     |  |        |  |  |       identityref
        |     |  |        |  |  +--rw metric-unit          string
        |     |  |        |  |  +--rw value-description?   string
        |     |  |        |  |  +--rw percentile-value?
        |     |  |        |  |  |       percentile
        |     |  |        |  |  +--rw bound?               uint64
        |     |  |        |  +--rw availability?   identityref
        |     |  |        |  +--rw mtu?            uint16
        |     |  |        +--rw sle-policy
        |     |  |           +--rw security*
        |     |  |           |       identityref
        |     |  |           +--rw isolation*
        |     |  |           |       identityref
        |     |  |           +--rw max-occupancy-level?    uint8
        |     |  |           +--rw steering-constraints
        |     |  |              +--rw path-constraints
        |     |  |              +--rw service-function
        |     |  +--rw service-slo-sle-policy-override?
        |     |  |       identityref
        |     |  +--rw status
        |     |  |  +--rw admin-status
        |     |  |  |  +--rw status?        identityref
        |     |  |  |  +--rw last-change?   yang:date-and-time
        |     |  |  +--ro oper-status
        |     |  |     +--ro status?        identityref
        |     |  |     +--ro last-change?   yang:date-and-time
        |     |  +--ro connectivity-construct-monitoring
        |     |     +--ro one-way-min-delay?         uint32
        |     |     +--ro one-way-max-delay?         uint32
        |     |     +--ro one-way-delay-variation?   uint32
        |     |     +--ro one-way-packet-loss?       decimal64
        |     |     +--ro two-way-min-delay?         uint32
        |     |     +--ro two-way-max-delay?         uint32
        |     |     +--ro two-way-delay-variation?   uint32
        |     |     +--ro two-way-packet-loss?       decimal64
        |     +--ro connection-group-monitoring
        |        +--ro one-way-min-delay?         uint32
        |        +--ro one-way-max-delay?         uint32
        |        +--ro one-way-delay-variation?   uint32
        |        +--ro one-way-packet-loss?       decimal64
        |        +--ro two-way-min-delay?         uint32
        |        +--ro two-way-max-delay?         uint32
        |        +--ro two-way-delay-variation?   uint32
        |        +--ro two-way-packet-loss?       decimal64
        +--rw custom-topology
           +--rw network-ref?
                   -> /nw:networks/network/network-id

]]></artwork>
      </figure>
    </section>

    <section title="Comparison with the Design Choice of ACTN VN Model Augmentation">
      <t>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.</t>

      <t>The ACTN VN (Virtual Network) model introduced in<xref
      target="I-D.ietf-teas-actn-vn-yang"/> is the abstract customer view of
      the TE network. Its YANG structure includes four components: <list
          style="symbols">
          <t>VN: A Virtual Network (VN) is a network provided by a service
          provider to a customer for use and two types of VN has defined. The
          Type 1 VN can be seen as a set of edge-to-edge abstract links. Each
          link is an abstraction of the underlying network which can encompass
          edge points of the customer's network, access links, intra-domain
          paths, and inter-domain links.</t>

          <t>AP: An AP is a logical identifier used to identify the access
          link which is shared between the customer and the IETF scoped
          Network.</t>

          <t>VN-AP: A VN-AP is a logical binding between an AP and a given
          VN.</t>

          <t>VN-member: A VN-member is an abstract edge-to-edge link between
          any two APs or VN-APs. Each link is formed as an E2E tunnel across
          the underlying networks.</t>
        </list>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.</t>
    </section>
  </back>
</rfc>
