Internet-Draft Network Slice Topology Data Model January 2024
Liu, et al. Expires 28 July 2024 [Page]
Workgroup:
TEAS Working Group
Internet-Draft:
draft-liu-teas-transport-network-slice-yang-08
Published:
Intended Status:
Standards Track
Expires:
Authors:
X. Liu
Alef Edge
J. Tantsura
Microsoft
I. Bryskin
Individual
L.M. Contreras
Telefonica
Q. Wu
Huawei
S. Belotti
Nokia
R. Rokui
Ciena
A. Guo
Futurewei
I. Busi
Huawei

IETF Network Slice Topology YANG Data Model

Abstract

An IETF network slice may use a customized topology to describe intended resource reservation for connectivities between slice endpoints. Customized topologies enable customers to request shared resources among connections activated on demand and to customize the service paths in a network slice with an extensive level of control.

This document describes a YANG data model for managing and controlling customized topologies for IETF network slices defined in RFC YYYY.

[RFC EDITOR NOTE: Please replace RFC YYYY with the RFC number of draft-ietf-teas-ietf-network-slices once it has been published.

Status of This Memo

This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.

Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.

Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

This Internet-Draft will expire on 28 July 2024.

Table of Contents

1. Introduction

[I-D.ietf-teas-ietf-network-slices] describes that an IETF network slice service customer might ask for some level of control, e.g., to customize the service paths while requesting network slice services. These customized controls may well be expressed by customer-defined topologies, i.e. customized topologies.

Furthermore, by using customized topologies, customers can request advanced resource reservation for all potential network slices that can be activated on demand in the future. This capability provides customers with full control over when and how resources are allocated by the slices. The resources can be shared by network slices created at different times as well as by connections between different edge pairs within the same network slice. This could significantly reduce the overall bandwidth requirements of a network slice and provide economic advantages to the customer.

For example, in a hub-and-spoke network slice scenario, multiple customer's spoke sites are expected to be dynamically connected to the hub site and the bandwidth is shared between the spoke sites. To create a customized topology with two virtual nodes, one representing all the spoke sites and the other representing the hub site, connected by a shared link between the two, can ensure that resources for the shared connection are reserved in advance and hence are readily available whenever needed by the customer. On the other hand, to achieve the same level of bandwidth assurance with connections, it would be necessary to create separate, dedicated connections between every spoke and the hub. However, this would result in significant waste of bandwidth.

This document defines a YANG [RFC7950] data model for representing, managing, and controlling IETF network slices over customized network topologies, where the network slices are defined in [I-D.ietf-teas-ietf-network-slices]. The YANG model augments the data model defined in [RFC8345] to enable a customer to express desired service-level objectives (SLOs) and service-level expectations (SLEs) over various constructs within the customized topology.

The defined data model is an interface between customers and providers for configurations and state retrievals, so as to support network slicing as a service. Through this model, a customer can request or negotiate with a network slicing provider to create an instance. The customer can incrementally update its requirements on individual topology elements in the slice instance, e.g., adding or removing a node or link, updating desired bandwidth of a link, and retrieve the operational states of these elements. With the help of other mechanisms and data models defined in IETF, the telemetry information can be published to the customer, too.

The YANG model defines constructs that are technology-agnostic to network slicing built on network layers with different technologies such as IP/MPLS, MPLS-TP, OTN and WDM optical. Therefore, this model can serve as a common and base model on which technology-specific models for network slicing, such as [I-D.ietf-ccamp-yang-otn-slicing], may be built.

As described in Section 3 of [I-D.contreras-teas-slice-controller-models], using customized topologies and control of resource reservation is optional for network slicing and complements the data model defined in [I-D.ietf-teas-ietf-network-slice-nbi-yang].

The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) [RFC8342].

1.1. Terminologies and Notations

The following terminologies for describing network slices are defined in [I-D.ietf-teas-ietf-network-slices] and are not redefined herein.

  • Network Slice (NS)

  • Network Slice Customer

  • Network Slice Service Provider

  • Network Slice Controller (NSC)

  • Network Resource Partition (NRP)

The following terms are defined and used in this document.

  • Customized Topology: A topology defined by the customer and served as an input to the network slice service provider, i.e. to the Network Slice Controller (NSC).

  • Abstract Topology: A topology exposed to the customer by the network slice service provider prior to the creation of network slices. The provider uses an abstract topology to expose useful information, such as available resources to the customer, which can facilitate the build-up of customized topologies by the customer.

  • NRP Topology: A topology internal to the NSC to facilitate the mapping of network slices to underlying network resources.

1.2. Tree Diagram

Tree diagrams used in this document follow the notation defined in [RFC8340].

1.3. Prefixes in Data Node Names

In this document, names of data nodes and other data model objects are prefixed using the standard prefix associated with the corresponding YANG imported modules, as shown in Table 1.

Table 1: Prefixes and Corresponding YANG Modules
Prefix YANG Module Reference
yang ietf-yang-types [RFC6991]
inet ietf-inet-types [RFC6991]
nt ietf-network-topology [RFC8345]
nw ietf-network-topology [RFC8345]
tet ietf-te-topology [RFC8795]
ns-topo ietf-ns-topo [RFCXXXX]
te-types ietf-te-types [RFCYYYY]
ietf-nss ietf-network-slice-service [RFCZZZZ]

RFC Editor Note: Please replace XXXX with the RFC number assigned to this document. Please replace YYYY with the RFC number assigned to [I-D.ietf-teas-rfc8776-update]. Please replace ZZZZ with the RFC number assigned to [I-D.ietf-teas-ietf-network-slice-nbi-yang]. Please remove this note.

2. Modeling Considerations

An IETF network slice topology is a customized topology modeled as network topology defined in [RFC8345], with augmentations. A new network type "network-slice" is defined in this document.
When a network topology data instance contains the network-slice network type, it represents an instance of an IETF network slice topology.

3. Model Applicability

There are many technologies to achieve network slicing. The data model defined in this document can be used to configure resource-based network slices, where the resources for network slices are reserved and represented in the form of a customized topology, which can then be mapped to a network resource partition (NRP) according to the scenarios defined in [I-D.ietf-teas-ietf-network-slices].

Network slices may be abstracted differently depending on the requirement of the network slice customer. A customer may request a network slice with direct connectivity between pairs of service demarcation points (SDPs). Each connection within the network slice may be further supported by an end-to-end tunnel that traverse a specific path in a given customized topology supplied by the customer. The resources associated with a link are immediately commissioned by the realization at the time of network slice configuration.

Alternatively, a customer can request resources to be reserved for potential network slices through a customized topology, and use the resources to build network slices in the future. The customized topology represents resources that are reserved but not commissioned at the time of request. By doing so, customers can share resources between multiple endpoints and use them on demand.

In the example shown in Figure 2, two customized topology intents named as Network Slice Blue and Network Slice Red, are created by separate customers and delivered to the network slice service provider. The provider maps the two intents to corresponding network resource partitions (NRPs) internally. In realizing the network resource partitions, node virtualization is used to separate and allocate resources in physical devices. Two virtual routers VR1 and VR2 are created over physical router R1, and two virtual routers VR3 and VR4 are created over physical router R2, respectively. Each of the virtual routers,as a partition of the physical router, takes a portion of the resources such as ports and memory in the physical router.
Depending on the requirements and the implementations, they may share certain resources such as processors, ASICs, and switch fabric.

A network slice customer can configure customized topologies without any prior knowledge of the provider's network and resource availability. However, this could potentially make it difficult for the provider to understand and realize the topology. Alternatively, the provider may choose to describe the available resources and capabilities as an abstract topology and expose it to the customer prior to network slice requests. This can facilitate the customer with building customized topologies and avoid unnecessary negotiations between the customer and provider.

The process and the data models for the provider to expose abstract topologies are outside the scope of this document.

The provider reports the operational state of the topology, which represents the allocated resources agreed upon through negotiations between the customer and the provider. Customers can subquently process the requested topology and integrate it into their own topology. It's important to note that this relationship between the customer and provider can be recursive. For example, a customer for network slices can be a provider of its own to offer network slice services using customized topologies to its own customers further up the hierarchy.

As an example, Appendix B. shows the JSON encoded data instances of the customer topology intent for Network Slice Blue.

       Customer Topology (Merged)          Customer Topology (Merged)
       Network Slice Blue                  Network Slice Red
                            +---+         +---+      +---+
                       -----|R3 |---   ---|R2 |------|R3 |
                      /     +---+         +---+      +---+
      +---+      +---+        ^             ^          ^  \     +---+
   ---|R1 |------|R2 |        |             |          |   -----|R4 |---
      +---+      +---+        |             |          |        +---+
        ^          ^          v             v          v          ^
        |          |        +---+         +---+      +---+        |
        |          |   -----|VR5|---   ---|VR2|------|VR4|        |
        v          v  /     +---+         +---+      +---+        v
      +---+      +---+                                    \     +---+
   ---|VR1|------|VR3|                                     -----|VR6|---
      +---+      +---+                                          +---+
       Customer Topology (Intended)        Customer Topology (Intended)
       Network Slice Blue                  Network Slice Red

                                 Customers
   ---------------------------------------------------------------------
                                 Provider

        Customized Topology (Network Resouce Partition)
        Provider Network with Virtual Devices

        Network Slice Blue: VR1, VR3, VR5         +---+
                                        ----------|VR5|------
                                       /          +---+
                    +---+         +---+
              ------|VR1|---------|VR3|
                    +---+         +---+
              ------|VR2|---------|VR4|
                    +---+         +---+
                                       \          +---+
                                        ----------|VR6|------
        Network Slice Red: VR2, VR4, VR6          +---+

                                 Virtual Devices
   ---------------------------------------------------------------------
                                 Physical Devices

        Native Topology
        Provider Network with Physical Devices
                                                  +---+
                                        ----------|R3 |------
                                       /          +---+
                    +---+         +---+
              ======|R1 |=========|R2 |
                    +---+         +---+
                                       \          +---+
                                        ----------|R4 |------
                                                  +---+
Figure 2: Network Slicing Topologies for Virtualization

4. YANG Model Overview

The following constructs and attributes are defined within the YANG model:

5. Model Tree Structure

module: ietf-ns-topo

  augment /nw:networks/nw:network/nw:network-types:
    +--rw network-slice!
  augment /nw:networks/nw:network:
    +--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 disjointness?
                           te-types:te-path-disjointness
  augment /nw:networks/nw:network/nw:node:
    +--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 disjointness?
                           te-types:te-path-disjointness
  augment /nw:networks/nw:network/nw:node/nt:termination-point:
    +--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
  augment /nw:networks/nw:network/nt:link:
    +--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 disjointness?
                           te-types:te-path-disjointness
  augment /ietf-nss:network-slice-services/ietf-nss:slo-sle-templates
            /ietf-nss:slo-sle-template/ietf-nss:sle-policy
            /ietf-nss:steering-constraints:
    +--rw disjointness?   te-types:te-path-disjointness
  augment /ietf-nss:network-slice-services/ietf-nss:slice-service
            /ietf-nss:slo-sle-policy/ietf-nss:custom
            /ietf-nss:service-slo-sle-policy/ietf-nss:sle-policy
            /ietf-nss:steering-constraints:
    +--rw disjointness?   te-types:te-path-disjointness
  augment /ietf-nss:network-slice-services/ietf-nss:slice-service
            /ietf-nss:connection-groups/ietf-nss:connection-group
            /ietf-nss:slo-sle-policy/ietf-nss:custom
            /ietf-nss:service-slo-sle-policy/ietf-nss:sle-policy
            /ietf-nss:steering-constraints:
    +--rw disjointness?   te-types:te-path-disjointness
  augment /ietf-nss:network-slice-services/ietf-nss:slice-service
            /ietf-nss:connection-groups/ietf-nss:connection-group
            /ietf-nss:slo-sle-policy/ietf-nss:custom
            /ietf-nss:service-slo-sle-policy/ietf-nss:sle-policy
            /ietf-nss:steering-constraints/ietf-nss:path-constraints:
    +--rw topology-id?     -> /nw:networks/network/network-id
    +--rw explicit-path* [tp-id]
       +--rw tp-id
               -> /nw:networks/network/node/nt:termination-point/tp-id
  augment /ietf-nss:network-slice-services/ietf-nss:slice-service
            /ietf-nss:connection-groups/ietf-nss:connection-group
            /ietf-nss:connectivity-construct/ietf-nss:slo-sle-policy
            /ietf-nss:custom/ietf-nss:service-slo-sle-policy
            /ietf-nss:sle-policy/ietf-nss:steering-constraints:
    +--rw disjointness?   te-types:te-path-disjointness
  augment /ietf-nss:network-slice-services/ietf-nss:slice-service
            /ietf-nss:connection-groups/ietf-nss:connection-group
            /ietf-nss:connectivity-construct/ietf-nss:slo-sle-policy
            /ietf-nss:custom/ietf-nss:service-slo-sle-policy
            /ietf-nss:sle-policy/ietf-nss:steering-constraints
            /ietf-nss:path-constraints:
    +--rw topology-id?     -> /nw:networks/network/network-id
    +--rw explicit-path* [tp-id]
       +--rw tp-id
               -> /nw:networks/network/node/nt:termination-point/tp-id
  augment /ietf-nss:network-slice-services/ietf-nss:slice-service
            /ietf-nss:connection-groups/ietf-nss:connection-group
            /ietf-nss:connectivity-construct/ietf-nss:type
            /ietf-nss:a2a/ietf-nss:a2a-sdp/ietf-nss:slo-sle-policy
            /ietf-nss:custom/ietf-nss:service-slo-sle-policy
            /ietf-nss:sle-policy/ietf-nss:steering-constraints:
    +--rw disjointness?   te-types:te-path-disjointness
  augment /ietf-nss:network-slice-services/ietf-nss:slice-service
            /ietf-nss:connection-groups/ietf-nss:connection-group
            /ietf-nss:connectivity-construct/ietf-nss:type
            /ietf-nss:a2a/ietf-nss:a2a-sdp/ietf-nss:slo-sle-policy
            /ietf-nss:custom/ietf-nss:service-slo-sle-policy
            /ietf-nss:sle-policy/ietf-nss:steering-constraints
            /ietf-nss:path-constraints:
    +--rw topology-id?     -> /nw:networks/network/network-id
    +--rw explicit-path* [tp-id]
       +--rw tp-id
               -> /nw:networks/network/node/nt:termination-point/tp-id
Figure 3: Tree diagram for network slice topology

6. YANG Modules

<CODE BEGINS> file "ietf-ns-topo@2023-07-07.yang"

   module ietf-ns-topo {
     yang-version 1.1;
     namespace
       "urn:ietf:params:xml:ns:yang:ietf-ns-topo";
     prefix "ns-topo";

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

     import ietf-te-types {
       prefix "te-types";
       reference
         "draft-ietf-teas-rfc8776-update-04:
          Common YANG Data Types for Traffic Engineering";
     }

     import ietf-network-slice-service {
       prefix "ietf-nss";
       reference
         "draft-ietf-teas-ietf-network-slice-nbi-yang-05:
          IETF Network Slice Service YANG Model";
     }

     organization
       "IETF CCAMP Working Group";
     contact
       "WG Web: <http://tools.ietf.org/wg/ccamp/>
        WG List: <mailto:ccamp@ietf.org>

        Editor: Xufeng Liu
                <mailto:xufeng.liu.ietf@gmail.com>

        Editor: Italo Busi
                <mailto:italo.busi@huawei.com>

        Editor: Aihua Guo
                <mailto:aihuaguo.ietf@gmail.com>

        Editor: Sergio Belotti
                <mailto:sergio.belotti@nokia.com>

        Editor: Luis M. Contreras
                <mailto:luismiguel.contrerasmurillo@telefonica.com>";

     description
       "This module defines a base YANG data model for configuring
        generic network slices in optical transport networks, e.g.,
        Optical Transport Network (OTN).

        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-07-07 {
       description "Initial revision";
       reference
         "RFC XXXX: IETF Network Slice Topology YANG Data Model";
     }

     /*
      * Groupings
      */
     grouping ns-topo-steering-constraints {
       description
         "Policy grouping for specifying steering constraints for
          Transport Network Slices.";

       leaf disjointness {
         type te-types:te-path-disjointness;
         description
           "Indicate the level of disjointness for slice
            resources.";
       }
     }

     grouping topology-ref {
       description
         "Grouping for network topology reference.";
       leaf topology-id {
         type leafref {
           path "/nw:networks/nw:network/nw:network-id";
         }
         description
           "Relative reference to network slice topology id.";
       }
       uses explicit-path;
     }

     grouping explicit-path {
       description
         "Explicit path for a connectivity matrix entry";

       list explicit-path {
         key "tp-id";
         description
           "List of TPs within a network topology that form a
            path.";
         leaf tp-id {
           type leafref {
             path "/nw:networks/nw:network/nw:node"+
                  "/nt:termination-point/nt:tp-id";
           }
           description
             "Relative reference to TP id.";
         }
       }
     }

     /*
      * Augmented data nodes
      */
     /* network type augments */
     augment "/nw:networks/nw:network/nw:network-types" {
       description
         "Defines the Network Slice topology type.";
       container network-slice {
         presence "Indicates Network Slice topology";
         description
           "Its presence identifies the Network Slice type.";
       }
     }

     /* network topology augments */
     augment "/nw:networks/nw:network" {
       when "./nw:network-types/ns-topo:network-slice" {
         description "Augment only for Network Slice topology.";
       }
       description "Augment topology configuration and state.";
       uses ietf-nss:service-slo-sle-policy;
     }

     augment "/nw:networks/nw:network" +
             "/ns-topo:slo-sle-policy" +
             "/ns-topo:custom" +
             "/ns-topo:service-slo-sle-policy" +
             "/ns-topo:sle-policy" +
             "/ns-topo:steering-constraints" {
       when "../../../nw:network-types/ns-topo:network-slice" {
         description "Augment only for Network Slice topology.";
       }
       description "Augment topology configuration and state.";
       uses ns-topo-steering-constraints;
     }

     /* network node augments */
     augment "/nw:networks/nw:network/nw:node" {
       when "../nw:network-types/ns-topo:network-slice" {
         description "Augment only for Network Slice topology.";
       }
       description "Augment node configuration and state.";
       uses ietf-nss:service-slo-sle-policy;
     }

     augment "/nw:networks/nw:network/nw:node" +
             "/ns-topo:slo-sle-policy" +
             "/ns-topo:custom" +
             "/ns-topo:service-slo-sle-policy" +
             "/ns-topo:sle-policy" +
             "/ns-topo:steering-constraints" {
       when "../../../../nw:network-types/ns-topo:network-slice" {
         description "Augment only for Network Slice topology.";
       }
       description
       "Augment IETF network slice services to include steering
          constraints for nodes.";
       uses ns-topo-steering-constraints;
     }

     /* network node's termination point augments */
     augment "/nw:networks/nw:network/nw:node" +
             "/nt:termination-point" {
       when "../../nw:network-types/ns-topo:network-slice" {
         description "Augment only for Network Slice topology.";
       }
       description "Augment node configuration and state.";

     uses ietf-nss:service-slo-sle-policy;
     }

     /* network link augments */
     augment "/nw:networks/nw:network/nt:link" {
       when "../nw:network-types/ns-topo:network-slice" {
         description "Augment only for Network Slice topology.";
       }
       description "Augment link configuration and state.";
       uses ietf-nss:service-slo-sle-policy;
     }

     augment "/nw:networks/nw:network/nt:link" +
             "/ns-topo:slo-sle-policy" +
             "/ns-topo:custom" +
             "/ns-topo:service-slo-sle-policy" +
             "/ns-topo:sle-policy" +
             "/ns-topo:steering-constraints" {
       when "../../../../nw:network-types/ns-topo:network-slice" {
         description "Augment only for Network Slice topology.";
       }
       description
       "Augment IETF network slice services to include steering
          constraints for links within a resource-based transport
          network slice.";
       uses ns-topo-steering-constraints;
     }

     augment "/ietf-nss:network-slice-services" +
             "/ietf-nss:slo-sle-templates" +
             "/ietf-nss:slo-sle-template" +
             "/ietf-nss:sle-policy" +
             "/ietf-nss:steering-constraints" {
       description
          "Augment IETF network slice service templates with
                   technology-specific steering constraints.";

       uses ns-topo-steering-constraints;
     }

     augment "/ietf-nss:network-slice-services" +
             "/ietf-nss:slice-service" +
             "/ietf-nss:slo-sle-policy" +
             "/ietf-nss:custom" +
             "/ietf-nss:service-slo-sle-policy" +
             "/ietf-nss:sle-policy" +
             "/ietf-nss:steering-constraints" {
       description
         "Augment IETF network slice services to include steering
         constraints for connectivity-based transport network
         slices.";

       uses ns-topo-steering-constraints;
     }

     /* connectivity construct augments */
     augment "/ietf-nss:network-slice-services" +
             "/ietf-nss:slice-service" +
             "/ietf-nss:connection-groups" +
             "/ietf-nss:connection-group" +
             "/ietf-nss:slo-sle-policy" +
             "/ietf-nss:custom" +
             "/ietf-nss:service-slo-sle-policy" +
             "/ietf-nss:sle-policy" +
             "/ietf-nss:steering-constraints" {
       description
         "Augment IETF network slice services to include steering
         constraints for connectivity-constructs within a
         connectivity-based transport network slice.";
       uses ns-topo-steering-constraints;
     }

     augment "/ietf-nss:network-slice-services" +
             "/ietf-nss:slice-service" +
             "/ietf-nss:connection-groups" +
             "/ietf-nss:connection-group" +
             "/ietf-nss:slo-sle-policy" +
             "/ietf-nss:custom" +
             "/ietf-nss:service-slo-sle-policy" +
             "/ietf-nss:sle-policy" +
             "/ietf-nss:steering-constraints" +
             "/ietf-nss:path-constraints" {
       description
         "Add toplogy id and explicit path to the connection group";

       uses topology-ref;
     }

     augment "/ietf-nss:network-slice-services" +
             "/ietf-nss:slice-service" +
             "/ietf-nss:connection-groups" +
             "/ietf-nss:connection-group" +
             "/ietf-nss:connectivity-construct" +
             "/ietf-nss:slo-sle-policy" +
             "/ietf-nss:custom" +
             "/ietf-nss:service-slo-sle-policy" +
             "/ietf-nss:sle-policy" +
             "/ietf-nss:steering-constraints" {
       description
         "Augment IETF network slice services to include steering
         constraints for connectivity-constructs within a
         connectivity-based transport network slice.";
       uses ns-topo-steering-constraints;
     }

     augment "/ietf-nss:network-slice-services" +
             "/ietf-nss:slice-service" +
             "/ietf-nss:connection-groups" +
             "/ietf-nss:connection-group" +
             "/ietf-nss:connectivity-construct" +
             "/ietf-nss:slo-sle-policy" +
             "/ietf-nss:custom" +
             "/ietf-nss:service-slo-sle-policy" +
             "/ietf-nss:sle-policy" +
             "/ietf-nss:steering-constraints" +
             "/ietf-nss:path-constraints" {
       description
         "Add toplogy id and explicit path to the connectivity
                  construct";

       uses topology-ref;
     }

     augment "/ietf-nss:network-slice-services" +
             "/ietf-nss:slice-service" +
             "/ietf-nss:connection-groups" +
             "/ietf-nss:connection-group" +
             "/ietf-nss:connectivity-construct" +
             "/ietf-nss:type" +
             "/ietf-nss:a2a" +
             "/ietf-nss:a2a-sdp" +
             "/ietf-nss:slo-sle-policy" +
             "/ietf-nss:custom" +
             "/ietf-nss:service-slo-sle-policy" +
             "/ietf-nss:sle-policy" +
             "/ietf-nss:steering-constraints" {
       description
         "Augment IETF network slice services to include steering
         constraints for a2a connectivity-constructs within a
         connectivity-based transport network slice.";
       uses ns-topo-steering-constraints;
     }

     augment "/ietf-nss:network-slice-services" +
             "/ietf-nss:slice-service" +
             "/ietf-nss:connection-groups" +
             "/ietf-nss:connection-group" +
             "/ietf-nss:connectivity-construct" +
             "/ietf-nss:type" +
             "/ietf-nss:a2a" +
             "/ietf-nss:a2a-sdp" +
             "/ietf-nss:slo-sle-policy" +
             "/ietf-nss:custom" +
             "/ietf-nss:service-slo-sle-policy" +
             "/ietf-nss:sle-policy" +
             "/ietf-nss:steering-constraints" +
             "/ietf-nss:path-constraints" {
       description
         "Add toplogy id and explicit path to a2a connectivity
                  construct";

       uses topology-ref;
     }
   }

<CODE ENDS>
Figure 4: YANG model for network slice topology

7. Manageability Considerations

To ensure the security and controllability of physical resource isolation, slice-based independent operation and management are required to achieve management isolation. Each network slice typically requires dedicated accounts, permissions, and resources for independent access and O&M. This mechanism is to guarantee the information isolation among slice tenants and to avoid resource conflicts. The access to slice management functions will only be permitted after successful security checks.

8. Security Considerations

The YANG module specified in this document defines a schema for data that is designed to be accessed via network management protocols such as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer is the secure transport layer, and the mandatory-to-implement secure transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer is HTTPS, and the mandatory-to-implement secure transport is TLS [RFC8446].

The NETCONF access control model [RFC8341] provides the means to restrict access for particular NETCONF or RESTCONF users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.

There are a number of data nodes defined in this YANG module that are writable/creatable/deletable (i.e., config true, which is the default). These data nodes may be considered sensitive or vulnerable in some network environments. Write operations (e.g., edit-config) to these data nodes without proper protection can have a negative effect on network operations. Considerations in Section 8 of [RFC8795] are also applicable to their subtrees in the module defined in this document.

Some of the readable data nodes in this YANG module may be considered sensitive or vulnerable in some network environments. It is thus important to control read access (e.g., via get, get-config, or notification) to these data nodes. Considerations in Section 8 of [RFC8795] are also applicable to their subtrees in the module defined in this document.

9. IANA Considerations

It is proposed to IANA to assign new URIs from the "IETF XML Registry" [RFC3688] as follows:

   URI: urn:ietf:params:xml:ns:yang:ietf-ns-topo
   Registrant Contact: The IESG
   XML: N/A; the requested URI is an XML namespace.

This document registers a YANG module in the YANG Module Names registry [RFC6020].

   name: ietf-ns-topo
   namespace: urn:ietf:params:xml:ns:yang:ietf-ns-topo
   prefix: ns-topo
   reference: RFC XXXX

10. References

10.1. Normative References

[RFC3688]
Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10.17487/RFC3688, , <https://www.rfc-editor.org/info/rfc3688>.
[RFC6020]
Bjorklund, M., Ed., "YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)", RFC 6020, DOI 10.17487/RFC6020, , <https://www.rfc-editor.org/info/rfc6020>.
[RFC6241]
Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., and A. Bierman, Ed., "Network Configuration Protocol (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, , <https://www.rfc-editor.org/info/rfc6241>.
[RFC6242]
Wasserman, M., "Using the NETCONF Protocol over Secure Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, , <https://www.rfc-editor.org/info/rfc6242>.
[RFC6991]
Schoenwaelder, J., Ed., "Common YANG Data Types", RFC 6991, DOI 10.17487/RFC6991, , <https://www.rfc-editor.org/info/rfc6991>.
[RFC7950]
Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", RFC 7950, DOI 10.17487/RFC7950, , <https://www.rfc-editor.org/info/rfc7950>.
[RFC7951]
Lhotka, L., "JSON Encoding of Data Modeled with YANG", RFC 7951, DOI 10.17487/RFC7951, , <https://www.rfc-editor.org/info/rfc7951>.
[RFC8040]
Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF Protocol", RFC 8040, DOI 10.17487/RFC8040, , <https://www.rfc-editor.org/info/rfc8040>.
[RFC8340]
Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", BCP 215, RFC 8340, DOI 10.17487/RFC8340, , <https://www.rfc-editor.org/info/rfc8340>.
[RFC8341]
Bierman, A. and M. Bjorklund, "Network Configuration Access Control Model", STD 91, RFC 8341, DOI 10.17487/RFC8341, , <https://www.rfc-editor.org/info/rfc8341>.
[RFC8342]
Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K., and R. Wilton, "Network Management Datastore Architecture (NMDA)", RFC 8342, DOI 10.17487/RFC8342, , <https://www.rfc-editor.org/info/rfc8342>.
[RFC8345]
Clemm, A., Medved, J., Varga, R., Bahadur, N., Ananthakrishnan, H., and X. Liu, "A YANG Data Model for Network Topologies", RFC 8345, DOI 10.17487/RFC8345, , <https://www.rfc-editor.org/info/rfc8345>.
[RFC8446]
Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, , <https://www.rfc-editor.org/info/rfc8446>.
[RFC8795]
Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and O. Gonzalez de Dios, "YANG Data Model for Traffic Engineering (TE) Topologies", RFC 8795, DOI 10.17487/RFC8795, , <https://www.rfc-editor.org/info/rfc8795>.

10.2. Informative References

[I-D.contreras-teas-slice-controller-models]
Contreras, L. M., Rokui, R., Tantsura, J., Wu, B., Liu, X., Dhody, D., and S. Belotti, "IETF Network Slice Controller and its associated data models", Work in Progress, Internet-Draft, draft-contreras-teas-slice-controller-models-05, , <https://datatracker.ietf.org/doc/html/draft-contreras-teas-slice-controller-models-05>.
[I-D.ietf-ccamp-yang-otn-slicing]
Guo, A., Contreras, L. M., Belotti, S., Rokui, R., Xu, Y., Zhao, Y., and X. Liu, "Framework and Data Model for OTN Network Slicing", Work in Progress, Internet-Draft, draft-ietf-ccamp-yang-otn-slicing-05, , <https://datatracker.ietf.org/doc/html/draft-ietf-ccamp-yang-otn-slicing-05>.
[I-D.ietf-teas-ietf-network-slice-nbi-yang]
Wu, B., Dhody, D., Rokui, R., Saad, T., and J. Mullooly, "A YANG Data Model for the IETF Network Slice Service", Work in Progress, Internet-Draft, draft-ietf-teas-ietf-network-slice-nbi-yang-08, , <https://datatracker.ietf.org/doc/html/draft-ietf-teas-ietf-network-slice-nbi-yang-08>.
[I-D.ietf-teas-ietf-network-slices]
Farrel, A., Drake, J., Rokui, R., Homma, S., Makhijani, K., Contreras, L. M., and J. Tantsura, "A Framework for Network Slices in Networks Built from IETF Technologies", Work in Progress, Internet-Draft, draft-ietf-teas-ietf-network-slices-25, , <https://datatracker.ietf.org/doc/html/draft-ietf-teas-ietf-network-slices-25>.
[I-D.ietf-teas-rfc8776-update]
Busi, I., Guo, A., Liu, X., Saad, T., and I. Bryskin, "Common YANG Data Types for Traffic Engineering", Work in Progress, Internet-Draft, draft-ietf-teas-rfc8776-update-07, , <https://datatracker.ietf.org/doc/html/draft-ietf-teas-rfc8776-update-07>.

Appendix A. Acknowledgments

The authors would like to thank Danielle Ceccarelli, Bo Wu, Mohamed Boucadair, and Vishnu Beeram for providing valuable insights.

Appendix B. Data Tree for the Example in Section 3.1

B.1. Native Topology

This section contains an example of an instance data tree in the JSON encoding [RFC7951]. The example instantiates "ietf-network" for the topology of Network Slice Blue depicted in Figure 2.

=============== NOTE: '\' line wrapping per RFC 8792 ================

{
  "ietf-network:networks": {
    "network": [
      {
        "network-id": "example-customized-blue-topology",
        "network-types": {
          "ietf-ns-topo:network-slice": {
          }
        },
        "node": [
          {
            "node-id": "VR1",
            "ietf-ns-topo:service-slo-sle-policy": {
              "sle-policy": {
                "isolation": [
                  {
                    "ietf-network-slice-service:service-traffic-iso\
lation"
                  }
                ]
              }
            },
            "ietf-network-topology:termination-point": [
              {
                "tp-id": "1-0-1"
              },
              {
                "tp-id": "1-3-1"
              }
            ]
          },
          {
            "node-id": "VR3",
            "ietf-ns-topo:service-slo-sle-policy": {
              "sle-policy": {
                "isolation": [
                  {
                    "ietf-network-slice-service:service-traffic-iso\
lation"
                  }
                ]
              }
            },
            "ietf-network-topology:termination-point": [
              {
                "tp-id": "3-1-1"
              },
              {
                "tp-id": "3-5-1"
              }
            ]
          },
          {
            "node-id": "VR5",
            "ietf-ns-topo:service-slo-sle-policy": {
              "sle-policy": {
                "isolation": [
                  {
                    "ietf-network-slice-service:service-traffic-iso\
lation"
                  }
                ]
              }
            },
            "ietf-network-topology:termination-point": [
              {
                "tp-id": "5-3-1"
              },
              {
                "tp-id": "5-0-1"
              }
            ]
          }
        ],
        "ietf-network-topology:link": [
          {
            "link-id": "VR1,1-0-1,,",
            "source": {
              "source-node": "VR1",
              "source-tp": "1-0-1"
            },
            "ietf-ns-topo:service-slo-sle-policy": {
              "slo-policy": {
                "metric-bounds": {
                  "metric-bound": [
                    {
                      "metric-type": "ietf-network-slice-service:se\
rvice-slo-two-way-delay",
                      "metric-unit": "ms",
                      "bound": 60
                    }
                  ]
                }
              },
              "sle-policy": {
                "isolation": [
                  {
                    "ietf-network-slice-service:service-traffic-iso\
lation"
                  }
                ]
              }
            }
          },
          {
            "link-id": ",,VR1,1-0-1",
            "destination": {
              "dest-node": "VR1",
              "dest-tp": "1-0-1"
            },
            "ietf-ns-topo:service-slo-sle-policy": {
              "slo-policy": {
                "metric-bounds": {
                  "metric-bound": [
                    {
                      "metric-type": "ietf-network-slice-service:se\
rvice-slo-two-way-delay",
                      "metric-unit": "ms",
                      "bound": 30
                    }
                  ]
                }
              },
              "sle-policy": {
                "isolation": [
                  {
                    "ietf-network-slice-service:service-traffic-iso\
lation"
                  }
                ]
              }
            }
          },
          {
            "link-id": "VR1,1-3-1,VR3,3-1-1",
            "source": {
              "source-node": "VR1",
              "source-tp": "1-3-1"
            },
            "destination": {
              "dest-node": "VR3",
              "dest-tp": "3-1-1"
            },
            "ietf-ns-topo:service-slo-sle-policy": {
              "slo-policy": {
                "metric-bounds": {
                  "metric-bound": [
                    {
                      "metric-type": "ietf-network-slice-service:se\
rvice-slo-two-way-delay",
                      "metric-unit": "ms",
                      "bound": 30
                    }
                  ]
                }
              },
              "sle-policy": {
                "isolation": [
                  {
                    "ietf-network-slice-service:service-traffic-iso\
lation"
                  }
                ]
              }
            }
          },
          {
            "link-id": "VR3,3-1-1,VR1,1-3-1",
            "source": {
              "source-node": "VR3",
              "source-tp": "3-1-1"
            },
            "destination": {
              "dest-node": "R1",
              "dest-tp": "1-3-1"
            },
            "ietf-ns-topo:service-slo-sle-policy": {
              "slo-policy": {
                "metric-bounds": {
                  "metric-bound": [
                    {
                      "metric-type": "ietf-network-slice-service:se\
rvice-slo-two-way-delay",
                      "metric-unit": "ms",
                      "bound": 30
                    }
                  ]
                }
              },
              "sle-policy": {
                "isolation": [
                  {
                    "ietf-network-slice-service:service-traffic-iso\
lation"
                  }
                ]
              }
            }
          },
          {
            "link-id": "VR3,3-5-1,VR5,5-3-1",
            "source": {
              "source-node": "VR3",
              "source-tp": "3-5-1"
            },
            "destination": {
              "dest-node": "VR5",
              "dest-tp": "5-3-1"
            },
            "ietf-ns-topo:service-slo-sle-policy": {
              "slo-policy": {
                "metric-bounds": {
                  "metric-bound": [
                    {
                      "metric-type": "ietf-network-slice-service:se\
rvice-slo-two-way-delay",
                      "metric-unit": "ms",
                      "bound": 35
                    }
                  ]
                }
              },
              "sle-policy": {
                "isolation": [
                  {
                    "ietf-network-slice-service:service-traffic-iso\
lation"
                  }
                ]
              }
            }
          },
          {
            "link-id": "VR5,5-3-1,VR3,3-5-1",
            "source": {
              "source-node": "VR5",
              "source-tp": "5-3-1"
            },
            "destination": {
              "dest-node": "VR3",
              "dest-tp": "3-5-1"
            },
            "ietf-ns-topo:service-slo-sle-policy": {
              "slo-policy": {
                "metric-bounds": {
                  "metric-bound": [
                    {
                      "metric-type": "ietf-network-slice-service:se\
rvice-slo-two-way-delay",
                      "metric-unit": "ms",
                      "bound": 35
                    }
                  ]
                }
              },
              "sle-policy": {
                "isolation": [
                  {
                    "ietf-network-slice-service:service-traffic-iso\
lation"
                  }
                ]
              }
            }
          },
          {
            "link-id": "VR5,5-0-1,,",
            "source": {
              "source-node": "VR5",
              "source-tp": "5-0-1"
            },
            "ietf-ns-topo:service-slo-sle-policy": {
              "slo-policy": {
                "metric-bounds": {
                  "metric-bound": [
                    {
                      "metric-type": "ietf-network-slice-service:se\
rvice-slo-two-way-delay",
                      "metric-unit": "ms",
                      "bound": 25
                    }
                  ]
                }
              },
              "sle-policy": {
                "isolation": [
                  {
                    "ietf-network-slice-service:service-traffic-iso\
lation"
                  }
                ]
              }
                        }
          },
          {
            "link-id": ",,VR5,5-0-1",
            "destination": {
              "dest-node": "VR5",
              "dest-tp": "5-0-1"
            },
            "ietf-ns-topo:service-slo-sle-policy": {
              "slo-policy": {
                "metric-bounds": {
                  "metric-bound": [
                    {
                      "metric-type": "ietf-network-slice-service:se\
rvice-slo-two-way-delay",
                      "metric-unit": "ms",
                      "bound": 25
                    }
                  ]
                }
              },
              "sle-policy": {
                "isolation": [
                  {
                    "ietf-network-slice-service:service-traffic-iso\
lation"
                  }
                ]
              }
            }
          }
        ],
        "ietf-ns-topo:service-slo-sle-policy": {
          "sle-policy": {
            "isolation": [
              {
                "ietf-network-slice-service:service-traffic-isolati\
on"
              }
            ]
          }
        }
      }
    ]
  }
}

Authors' Addresses

Xufeng Liu
Alef Edge
Jeff Tantsura
Microsoft
Igor Bryskin
Individual
Luis M. Contreras
Telefonica
Qin Wu
Huawei
Sergio Belotti
Nokia
Reza Rokui
Ciena
Aihua Guo
Futurewei
Italo Busi
Huawei