Internet DRAFT - draft-qiang-coms-netslicing-information-model

draft-qiang-coms-netslicing-information-model







none                                                            L. Qiang
Internet-Draft                                                    Huawei
Intended status: Informational                                  A. Galis
Expires: July 30, 2018                         University College London
                                                                 L. Geng
                                                            China Mobile
                                                            K. Makhijani
                                                                  Huawei
                                                       P. Martinez-Julia
                                                                    NICT
                                                               H. Flinck
                                                                   Nokia
                                                               X. de Foy
                                                       InterDigital Inc.
                                                        January 26, 2018


      Technology Independent Information Model for Network Slicing
            draft-qiang-coms-netslicing-information-model-02

Abstract

   This document provides a technology independent information model for
   transport network slicing.

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 July 30, 2018.

Copyright Notice

   Copyright (c) 2018 IETF Trust and the persons identified as the
   document authors.  All rights reserved.





Qiang, et al.             Expires July 30, 2018                 [Page 1]

Internet-Draft               Network slicing                January 2018


   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (https://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   4
   3.  Network Slice Tree Structure  . . . . . . . . . . . . . . . .   4
     3.1.  resources . . . . . . . . . . . . . . . . . . . . . . . .   5
       3.1.1.  nodes . . . . . . . . . . . . . . . . . . . . . . . .   6
       3.1.2.  links . . . . . . . . . . . . . . . . . . . . . . . .   7
       3.1.3.  storage-units . . . . . . . . . . . . . . . . . . . .   8
       3.1.4.  compute-units . . . . . . . . . . . . . . . . . . . .   9
     3.2.  generalized-function-block  . . . . . . . . . . . . . . .   9
     3.3.  slice-level-attributes  . . . . . . . . . . . . . . . . .  10
   4.  Operations  . . . . . . . . . . . . . . . . . . . . . . . . .  13
   5.  Yang Module . . . . . . . . . . . . . . . . . . . . . . . . .  14
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .  27
   7.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27
   8.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  27
   9.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  27
     9.1.  Normative References  . . . . . . . . . . . . . . . . . .  27
     9.2.  Informative References  . . . . . . . . . . . . . . . . .  27
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  27

1.  Introduction

   Network slicing is a tool to share network resources and to offer
   customized network architectures for diverse use cases that share the
   same underlying infrastructure [NGMN-NS-Framework].  Customers may
   not be familiar with underlying networking technologies, and
   therefore may prefer to interface with network slices in a
   technology-agnostic way.  On the other hand, service providers may
   have multiple candidate technologies for supporting network slicing.
   As shown in Figure 1, there is a gap between technology-agnostic
   network slicing service requirements and specific implementation
   technologies, that needs to be filled by a technology independent
   information model.  Such a technology independent information model
   describes the entities that compose a network slice, their
   properties, attributes and operations, and the way they relate to
   each other of an end to end network slice that may span across



Qiang, et al.             Expires July 30, 2018                 [Page 2]

Internet-Draft               Network slicing                January 2018


   multiple technology domains.  It is independent of any specific
   repository, software usage, protocol, or platform, hence supports
   common operations and management of network slices.

     +-----------+               +-----------+
     |NS Tenant/ +---------------+NS Provider|
     |Customer   |   Service     |           |
     +-----------+   Model       +------+----+
                                        |
                                        |Service Delivery
                                        |Model
                                        |
                     +------------------+---------------+
                     |        NS Management System      |
                     |                                  |
                     |   ****************************   +----------+
                     |   *Technology Independent NS *   |          |
                     |   *    Information Model     *   |       Device
                     |   ****************************   |Configuration
                     |                                  |        Model
                     +--------+-------------------+-----+          |
                              |                   |                |
                           Network Configuration Model             |
     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~|~~~
      Available NS Activation |Technologies       |                |
                              |                   |                |
      +-----------------------+-+    +------------+------------+   |
      |Controller/Orchestrator/ |    |Controller/Orchestrator/ |   |
      |Manager of Implementation|    |Manager of Implementation|   |
      |Technology A             |    |Technology B             |  .|...
      +---------------+---------+    +-------------+-----------+   |
                      |                            |               |
                      | Device Configuration Model |               |
                      |                            |               |
      +---------------+----------------------------+---------------+-+
      |                                                              |
      |             Underlying Network Resources/Functions           |
      |                                                              |
      +--------------------------------------------------------------+


           Figure 1: Technology Independent NS Information Model

   mapping to specific technology is out of scope.







Qiang, et al.             Expires July 30, 2018                 [Page 3]

Internet-Draft               Network slicing                January 2018


2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

   Other network slicing related terminology used in this document are
   interpreted as description in [COMS-PS].

3.  Network Slice Tree Structure

   The YANG data modeling language [RFC7950] will be used to represent
   the transport network slicedata model.  Moreover,the data model for
   network topologies developed in [draft-ietf-i2rs-yang-network-topo]
   will be used as a base.

   The proposed NS information model includes the following elements:
   connectivity resources, storage resources, compute resources, service
   instance based on predefined function blocks, network slice level
   attributes, etc.  It is presented as a tree structure of attributes.
   The Yang language is used to represent the network slice information
   model.  The following tree shows an overview of the tree structure.
   New attributes proposed in this draft are in the "netslice:"
   namespace, while other attributes are defined in
   [draft-ietf-i2rs-yang-network-topo].


























Qiang, et al.             Expires July 30, 2018                 [Page 4]

Internet-Draft               Network slicing                January 2018


 module: ietf-network
 +--rw networks
    +--rw network* [network-id]
       +--rw network-id                         network-id
       +--rw network-types
       +--rw supporting-network* [network-ref]
       |  +--rw network-ref
       +--rw node* [node-id]
       |  +--...
       |  +--rw netslice:compute-unit* [compute-unit-ref]
       |  |  +--rw netslice:compute-unit-ref    compute-unit-ref
       |  +--rw netslice:storage-unit* [storage-unit-ref]
       |  |  +--rw netslice:storage-unit-ref    storage-unit-ref
       |  +--rw netslice:service-instance* [service-instance-ref]
       |     +--rw netslice:service-instance-ref    service-instance-ref
       +--rw nt:link* [link-id]
       |  +--...
       |  +--rw netslice:link-qos
       |     +--...
       +--rw netslice:compute-unit* [compute-unit-id]
       |  +--...
       +--rw netslice:storage-unit* [storage-unit-id]
       |  +--...
       +--rw netslice:service-instance* [service-instance-id]
       |  +--...
       +--rw netslice:slice-level-attributes
          +--...

3.1.  resources

   Basic resources are used to construct a network slice.  Resources
   comprise: nodes, links, compute units and storage units.

   Different resources can exist independently, they can also be bound
   together when necessary.  For example, bind a storage unit to a
   connectivity node.

   A whole network attribute can represent a network slice instance.
   The network slice instance "supporting network" list can include
   underlying networks which are used to implement the network slice.

   In this model, nodes and links will represent virtual nodes and links
   exposed to the slice user.

   The network-id attribute will represent a network slice instance ID.






Qiang, et al.             Expires July 30, 2018                 [Page 5]

Internet-Draft               Network slicing                January 2018


3.1.1.  nodes

       +--rw node* [node-id]
       |  +--rw node-id                      node-id
       |  +--rw supporting-node* [network-ref node-ref]
       |  |  +--rw network-ref
       |  |  +--rw node-ref
       |  +--rw nt:termination-point* [tp-id]
       |  |  +--rw nt:tp-id                            tp-id
       |  |  +--rw nt:supporting-termination-point*
                                    [network-ref node-ref tp-ref]
       |  |  |  +--rw nt:network-ref
       |  |  |  +--rw nt:node-ref
       |  |  |  +--rw nt:tp-ref
       |  |  +--rw netslice:packet-rate?               int64
       |  |  +--rw netslice:packet-loss-probability?   int64
       |  |  +--rw netslice:packet-loss-threshold?     int64
       |  |  +--rw netslice:received-packets?          int64
       |  |  +--rw netslice:sent-packets?              int64
       |  +--rw netslice:compute-unit* [compute-unit-ref]
       |  |  +--rw netslice:compute-unit-ref    compute-unit-ref
       |  +--rw netslice:storage-unit* [storage-unit-ref]
       |  |  +--rw netslice:storage-unit-ref    storage-unit-ref
       |  +--rw netslice:service-instance* [service-instance-ref]
       |     +--rw netslice:service-instance-ref    service-instance-ref

   Nodes are defined in [draft-ietf-i2rs-yang-network-topo].

   Nodes are augmented with the following attributes, that used to
   represent requirements, configuration and statistics associated with
   a termination point:

   packet-rate: the packet forwarding capability of a port for this node
   in the unit of pps (packet per second).

   packet-loss-probability: a statistical value which reflects the
   probability of packet loss.

   packet-loss-threshold: a threshold of the packet loss probability.
   If the value of packet-loss-probability is larger than packet-loss-
   threshold, should actively notify the management system.

   received-packets: a statistical value which reflects the number of
   received packets in a period of time.

   sent-packets: a statistical value which reflects the number of sent
   packets in a period of time.




Qiang, et al.             Expires July 30, 2018                 [Page 6]

Internet-Draft               Network slicing                January 2018


3.1.2.  links

         +--rw nt:link* [link-id]
         |  +--rw nt:link-id            link-id
         |  +--rw nt:source
         |  |  +--rw nt:source-node?
         |  |  +--rw nt:source-tp?
         |  +--rw nt:destination
         |  |  +--rw nt:dest-node?
         |  |  +--rw nt:dest-tp?
         |  +--rw nt:supporting-link* [network-ref link-ref]
         |  |  +--rw nt:network-ref
         |  |  +--rw nt:link-ref
         |  +--rw netslice:link-qos
         |     +--rw netslice:link-bandwidth-agreement?    int64
         |     +--rw netslice:link-throughput?             int64
         |     +--rw netslice:link-throughput-threshold?   int64
         |     +--rw netslice:link-latency-agreement?      int64
         |     +--rw netslice:link-latency?                int64
         |     +--rw netslice:link-jitter-agreement?       int64
         |     +--rw netslice:link-jitter?                 int64
         |     +--rw netslice:link-jitter-threshold?       int64
         |     +--rw netslice:mandatory-node* [node-ref]
         |     |  +--rw netslice:node-ref    node-ref
         |     +--rw netslice:mandatory-link* [link-ref]
         |     |  +--rw netslice:link-ref    link-ref
         |     +--rw netslice:excluded-node* [node-ref]
         |     |  +--rw netslice:node-ref    node-ref
         |     +--rw netslice:excluded-link* [link-ref]
         |        +--rw netslice:link-ref    link-ref

   Links are defined in [draft-ietf-i2rs-yang-network-topo].

   Links are associated with nodes through termination points placed
   under nodes.  Links are augmented with QoS information as follows:

   link-bandwidth-agreement: specify the bandwidth requirement for this
   link.  If this parameter does not be set specifically, then the link
   will be constructed according to the default bandwidth value provided
   by management plane.

   link-throughput: the current throughput of this link.

   link-throughput-threshold: a threshold for link throughput.  If the
   value of link-throughput is smaller than link-throughput-threshold,
   should actively notify the management system.





Qiang, et al.             Expires July 30, 2018                 [Page 7]

Internet-Draft               Network slicing                January 2018


   link-latency-agreement: specify the latency requirement for this
   link.  If this parameter does not be set specifically, then the link
   will be constructed according to the default latency agreement
   provided by management plane.

   link-latency: the current latency of this link.

   link-jitter-agreement: specify the jitter requirement for this link.
   If this parameter does not be set specifically, then the link will be
   constructed according to the default jitter agreement provided by
   management plane.

   link-jitter: the current jitter of this link.

   link-jitter-threshold: a threshold for link jitter.  If the value of
   link-jitter is larger than link-jitter-threshold, should actively
   notify the management system.

   mandatory-node/link: a list of underlying nodes/links that must be
   passed by the mapped physical path of this link.

   exclusive-node/link: a list of underlying nodes/links that cannot be
   traversed by the mapped physical path of this link.

3.1.3.  storage-units

         +--rw netslice:storage-unit* [storage-unit-id]
         |  +--rw netslice:storage-unit-id         inet:uri
         |  +--rw netslice:size?                   int64
         |  +--rw netslice:access-rate             int32
         |  +--rw netslice:access-mode?       access-qualifier
         |  +--rw netslice:read-write-mode-type?   read-write-mode-type
         |  +--rw netslice:redundancy-type?        redundancy-type
         |  +--rw netslice:location?               string

   size: size of the storage unit in MB.

   access-rate: the minimum rate to write/read 8KB files into/from the
   storage unit.

   access-mode: there are two options include public or dedicated.

   read-write-mode: there are two options include read only, and read &
   write.

   redundancy-type: there are four options include best efforts (i.e, no
   redundancy), n+1 (n storage units with one extra backup), 2n (each




Qiang, et al.             Expires July 30, 2018                 [Page 8]

Internet-Draft               Network slicing                January 2018


   storage unit has one backup), 2n+1 (n storage units with n+1 extra
   backup).

   location: a string describing the location of the storage unit.

3.1.4.  compute-units

         +--rw netslice:compute-unit* [compute-unit-id]
         |  +--rw netslice:compute-unit-id    inet:uri
         |  +--rw netslice:num-cores?         int8
         |  +--rw netslice:ram?               int64
         |  +--rw netslice:access-mode?       access-mode-type
         |  +--rw netslice:location?          string
         |  +--rw netslice:unit-type          compute-unit-type

   num-cores: the number of arithmetic logic unit.

   ram: RAM in bytes.

   access-mode: there are two options include shared or dedicated.

   location: a string describing the location of the compute unit.

   unit-type: two types of compute unit include GPU or CPU

3.2.  generalized-function-block

























Qiang, et al.             Expires July 30, 2018                 [Page 9]

Internet-Draft               Network slicing                January 2018


         +--rw netslice:service-instance* [service-instance-id]
         |  +--rw netslice:service-instance-id           inet:uri
         |  +--rw netslice:domain-agent
         |  |  +--rw netslice:agent-name?                string
         |  |  +--rw netslice:sb-ip-address?             string
         |  |  +--rw netslice:sb-port?                   string
         |  |  +--rw netslice:nb-ip-address              string
         |  |  +--rw netslice:nb-port?                   string
         |  +--rw netslice:load-balancer [element-id]
         |  |  +--rw element-id                          inet:uri
         |  |  +--rw nt:termination-point* [tp-id]
         |  |  |  +--rw nt:tp-id                         tp-id
         |  |  |  +--rw nt:supporting-termination-point*
                                      [network-ref node-ref tp-ref]
         |  |  |  |  +--rw nt:network-ref
         |  |  |  |  +--rw nt:node-ref
         |  |  |  |  +--rw nt:tp-ref
         |  |  |  +--rw netslice:packet-rate?               int64
         |  |  |  +--rw netslice:packet-loss-probability?   int64
         |  |  |  +--rw netslice:packet-loss-threshold?     int64
         |  |  |  +--rw netslice:received-packets?          int64
         |  |  |  +--rw netslice:sent-packets?              int64
         |  |  +--rw netslice:lb-name?      string
         |  |  +--rw netslice:ip-address?   string
         |  |  +--rw netslice:port?         string

   Some general features could be packaged into function blocks in
   advance, such as agent, firewall, load balancer, etc.

3.3.  slice-level-attributes

         +--rw netslice:slice-level-attributes
            +--rw netslice:service-time-start? yang:date-and-time
            +--rw netslice:service-time-end?   yang:date-and-time
            +--rw netslice:lifecycle-status?   lifecycle-status-type
            +--rw netslice:access-control
            |  +--rw netslice:match?      string
            |  +--rw netslice:action?     string
            |  +--rw netslice:priority?   string
            |  +--rw netslice:counter?    int64
            +--rw netslice:reliability-level?  reliability-level-type
            +--rw netslice:resource-reservation-level?
                                  resource-reservation-level-type
            +--rw netslice:availability?                 int64
            +--rw netslice:availability-threshold?       string






Qiang, et al.             Expires July 30, 2018                [Page 10]

Internet-Draft               Network slicing                January 2018


   The slice-level-attributes refers to a set of attributes applicable
   to a network slice.  Some explanations are provided as follows for
   easy going:

   service-time-start/end: specify the time during which the network
   slice service exists (e.g., three months, one year).

   lifecycle-status: specify the status of the network slice, there are
   four enumeration values: construction, modification, activation and
   deletion.

   access-control: illustrates each role can take what kind of
   operations on the network slice.

   reliability-level: the ability of a network slice to be in a stable
   state.  In this document, the main method to achieve reliability is
   "backup".  If necessary, other methods also can be extended based on
   the current definition.  The detailed definition of Reliability_Level
   is provided in Table 1.

   resource-reservation-level: classify different resource reservation
   levels of a network slice.  This attribute is related to the slice
   isolation but is not strictly bound.  The detailed definition is
   provided in Table 2.

   availability: a statistical value which reflects the probability for
   a network slice instance to work with expected SLA in a period of
   time (e.g., 99.999% of time).

   availability-threshold: a threshold of the availability.  If the
   value of Availability is smaller than Availability_Threshold, should
   actively notify the management system.



















Qiang, et al.             Expires July 30, 2018                [Page 11]

Internet-Draft               Network slicing                January 2018


 +=================================================+===================+
 |           |                                     |                   |
 |   Value   |            Explanation              |         Note      |
 |           |                                     |                   |
 +=================================================+===================+
 |           |                                     |                   |
 |    none   | No specific reliability requirement | The lowest        |
 |           |                                     | reliability level |
 +-----------+-------------------------------------+-------------------+
 |           |                                     |                   |
 |path-backup| Each path has a backup path         | Path reliability  |
 |           |                                     |                   |
 +-----------+-------------------------------------+-------------------+
 |           |                                     |                   |
 |  logical- | Each node/link has a backup node/   | Logical resource  |
 |  backup   | link                                | reliability       |
 +-----------+-------------------------------------+-------------------+
 |           |                                     |                   |
 |           | Each node/link has a backup node/   | Physical resource |
 |           | link, and the primary and backup    | reliability       |
 |  physical-| nodes/links must be mapped to       |                   |
 |  backup   | different physical devices/paths    |                   |
 |           | (the mapped two physical paths      |                   |
 |           |  couldn't have any shared device)   |                   |
 |           |                                     |                   |
 ==================================================+===================+


   Table 1: Explanation of reliability-level






















Qiang, et al.             Expires July 30, 2018                [Page 12]

Internet-Draft               Network slicing                January 2018


 +=======+=====================================+=======================+
 |       |                                     |                       |
 | Value |            Explanation              |         Note          |
 |       |                                     |                       |
 +=======+=====================================+=======================+
 |       |                                     |                       |
 | none  | No specific resource reservation    |The lowest resource    |
 |       | requirement                         |reservation level, the |
 |       |                                     |network slice instance |
 |       |                                     |will share and compete |
 |       |                                     |for resource with other|
 |       |                                     |network slice instances|
 |       |                                     |                       |
 +-------+-------------------------------------+-----------------------+
 |       |                                     |                       |
 |shared-| A certain of resource reservation,  |Shared and             |
 |non-   | the free reserved resources could be|non-preemptive         |
 |preemp | used by other slice instances, and  |                       |
 |tive   | uable to be retrieved if other slice|                       |
 |       | instances are usring them           |                       |
 |       |                                     |                       |
 +-------+-------------------------------------+-----------------------+
 |       |                                     |                       |
 |shared-| More stringent resouce reservation, |Shared and preemptive  |
 |preemp | the free reserved resources could be|                       |
 |tive   | used by other slice instances, and  |                       |
 |       | will be retrieved if the network    |                       |
 |       | slice needs them                    |                       |
 |       |                                     |                       |
 +-------+-------------------------------------+-----------------------+
 |       |                                     |                       |
 |exclus | The reserved resources couldn't be  |The highest resource   |
 |ive    | used by other slice instances, even |reservartion level,    |
 |       | if these resources are free         |exclusive              |
 |       |                                     |                       |
 +=======+=====================================+=======================+

   Table 2: Explanation of resource-reservation-level

4.  Operations

   The defined information model should be able to support the following
   operations on network slices.  Except for support the operations on a
   complete network slice, each element insides a network slice also
   should be able to be operated specifically.

   o  construct: construct a network slice




Qiang, et al.             Expires July 30, 2018                [Page 13]

Internet-Draft               Network slicing                January 2018


   o  delete: delete a network slice

   o  modify: modify a constructed network slice

   o  set_element_value: set the value of an indicated element in a
      network slice

   o  get_element_value: get the value of an indicated element in a
      network slice

   o  monitor: monitor the status of a network slice

   o  enable_report: enable the active report to the subscribes/
      management system when the monitored status changes beyond
      expectation

5.  Yang Module

 <CODE BEGINS> module ietf-coms-core {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-coms-core";
  prefix netslice;

  import ietf-yang-types { prefix "yang"; }
  import ietf-inet-types { prefix inet; }
  import ietf-network { prefix nd;  }
  import ietf-network-topology { prefix lnk;  }

  organization
    "IETF";

  contact
    "Editors:    X. de Foy, Cristina QIANG
                <mailto:>";

  description
    "This module contains a collection of YANG definitions for COMS.

    Copyright (c) 2016 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 Simplified BSD License
    set forth in Section 4.c of the IETF Trust's Legal Provisions
    Relating to IETF Documents
    (http://trustee.ietf.org/license-info).




Qiang, et al.             Expires July 30, 2018                [Page 14]

Internet-Draft               Network slicing                January 2018


    This version of this YANG module is part of
    draft-...;
    see the RFC itself for full legal notices.";

  revision "2018-01-26" {
    description
      "Initial revision of COMS topology.";
    reference
      "draft-qiang-coms-netslicing-information-model-02";
  }

  /*
    Types
  */

  typedef read-write-mode-type {
    type enumeration {
      enum read-write {
        description "R/W";
      }
      enum read-only {
        description "R/O";
      }
    }
    description "Indicates if entity is read-write,
    read-only, etc.";
  }

  typedef access-mode {
    type enumeration {
      enum access-mode-public {
        description "Underlying storage can be
        shared with other instances";
      }
      enum access-mode-dedicated {
        description "Underlying storage is not
        shared with other instances";
      }
    }
    description "access-mode";
  }

  typedef compute-unit-type {
    type enumeration {
      enum compute-unit-cpu {
        description "Underlying compute unit is CPU based";
      }
      enum compute-unit-gpu {



Qiang, et al.             Expires July 30, 2018                [Page 15]

Internet-Draft               Network slicing                January 2018


        description "Underlying compute unit is GPU based";
      }
    }
    description "compute-unit-type";
  }

  typedef lifecycle-status-type {
    type enumeration {
      enum construction {
        description "construction";
      }
      enum modification {
        description "modification";
      }
      enum activation  {
        description "activation";
      }
      enum deletion {
        description "deletion";
      }
    }
    description "Lifecycle status";
  }

  typedef resource-reservation-level-type {
    type enumeration {
      enum none {
        description "No specific reliability requirement";
      }
      enum shared-non-preemptive {
        description "Each path has a backup path";
      }
      enum shared-preemptive  {
        description "Each node/link has a backup node/link";
      }
      enum exclusive {
        description "Each node/link has a backup node/link,
        mapped to different physical devices/paths";
      }
    }
    description "Resource reservation level";
  }

  typedef reliability-level-type {
    type enumeration {
      enum none {
        description "No specific reliability requirement";
      }



Qiang, et al.             Expires July 30, 2018                [Page 16]

Internet-Draft               Network slicing                January 2018


      enum path-backup {
        description "Each path has a backup path";
      }
      enum logical-backup  {
        description "Each node/link has a backup node/link";
      }
      enum physical-backup {
        description "Each node/link has a backup node/link,
        mapped to different physical devices/paths";
      }
    }
    description "Reliability level";
  }

  typedef redundancy-type {
    type enumeration {
      enum none {
        description "no redundancy";
      }
      enum n+1 {
        description "n storage units with one extra backup";
      }
      enum 2n {
        description "each storage unit has one backup";
      }
      enum 2n+1 {
        description "n storage units with n+1 extra backup";
      }
    }
    description "Redundancy type";
  }

  typedef node-ref {
    type instance-identifier;
    description "A reference to a node";
  }

  typedef link-ref {
    type instance-identifier;
    description "A reference to a link";
  }

  typedef compute-unit-ref {
    type instance-identifier;
    description "A reference to a compute unit";
  }

  typedef storage-unit-ref {



Qiang, et al.             Expires July 30, 2018                [Page 17]

Internet-Draft               Network slicing                January 2018


    type instance-identifier;
    description "A reference to a storage unit";
  }

  typedef service-instance-ref {
    type instance-identifier;
    description "A reference to a service instance";
  }

  grouping rule {
    description "Access Control Rule";
    leaf match{
      type string;
      description "Match";
    }
    leaf action{
      type string;
      description "Action";
    }
    leaf priority{
      type string;
      description "Priority";
    }
    leaf counter{
      type int64;
      description "Counter";
    }
  }

  grouping port-config {
    description "Configuration of a port/connection point";
    leaf packet-rate {
      type int64;
      description "Data rate in packets per seconds";
    }
    leaf packet-loss-probability {
      type int64;
      description "Packet loss probability (actual type is TBD)";
    }
    leaf packet-loss-threshold {
      type int64;
      description "Packet loss probability threshold to alert
      management system (actual type is TBD)";
    }
  }

  grouping port-stats {
    description "Statistics of a port/connection point";



Qiang, et al.             Expires July 30, 2018                [Page 18]

Internet-Draft               Network slicing                January 2018


    leaf received-packets {
      type int64;
      description "Total number of packets received";
    }
    leaf sent-packets {
      type int64;
      description "Total number of packets sent";
    }
  }

  grouping storage-unit-specs {
    description "Storage unit specs";
    leaf size {
      type int64;
      description "storage size in MB";
    }
    leaf access-rate {
      type int32;
      description "lower limit of storage access rate";
    }
    leaf access-mode {
      type access-mode;
      description "access-mode";
    }
    leaf read-write-mode-type {
      type read-write-mode-type;
      description "Read and write mode";
    }
    leaf redundancy-type {
      type redundancy-type;
      description "Redundancy type";
    }
  }

  grouping storage-unit-desc {
    description "Storage unit description";
    leaf storage-unit-id {
      type inet:uri;
      description "storage-unit ID";
    }
    uses storage-unit-specs;
    leaf location {
      type string;
      description "Location hint";
    }
  }

  grouping compute-unit-specs {



Qiang, et al.             Expires July 30, 2018                [Page 19]

Internet-Draft               Network slicing                January 2018


    description "Compute unit specs";
    leaf num-cores {
      type int8;
      description "Number of CPU Cores";
    }
    leaf ram {
      type int64;
      description "RAM in bytes";
    }
    leaf access-mode {
      type access-mode-type;
      description "access mode";
    }
  }

  grouping compute-unit-desc {
    description "Compute unit description";
    leaf compute-unit-id {
      type inet:uri;
      description "storage-unit ID";
    }
    uses compute-unit-specs;
    leaf location {
      type string;
      description "Location hint";
    }
    leaf unit-type {
      type compute-unit-type;
      description "specify the category of compute unit";
    }
  }

  grouping path-restrictions {
    description "Physical path restriction type: nodes and
    links of underlying networks
    that must or must not be traversed by a link";
    list mandatory-node {
      key "node-ref";
      description "List of mandatory nodes";
      leaf node-ref {
        type node-ref;
        description "Node";
      }
    }
    list mandatory-link {
      key "link-ref";
      description "List of mandatory links";
      leaf link-ref {



Qiang, et al.             Expires July 30, 2018                [Page 20]

Internet-Draft               Network slicing                January 2018


        type link-ref;
        description "Link";
      }
    }
    list excluded-node {
      key "node-ref";
      description "List of excluded nodes";
      leaf node-ref {
        type node-ref;
        description "Node";
      }
    }
    list excluded-link {
      key "link-ref";
      description "List of excluded links";
      leaf link-ref {
        type link-ref;
        description "Link";
      }
    }
  }

  grouping link-qos-desc {
    description "QoS associated with a link";
    leaf link-bandwidth-agreement {
      type int64;
      description "Link bandwidth agreement";
    }
    leaf link-throughput {
      type int64;
      description "Link throughput";
    }
    leaf link-throughput-threshold {
      type int64;
      description "Link throughput threshold";
    }
    leaf link-latency-agreement {
      type int64;
      description "Link latency agreement";
    }
    leaf link-latency {
      type int64;
      description "Link latency";
    }
    leaf link-jitter-agreement {
      type int64;
      description "Link jitter agreement";
    }



Qiang, et al.             Expires July 30, 2018                [Page 21]

Internet-Draft               Network slicing                January 2018


    leaf link-jitter {
      type int64;
      description "Link jitter";
    }
    leaf link-jitter-threshold {
      type int64;
      description "Link jitter threshold";
    }
    uses path-restrictions;
  }

  grouping slice-level-attributes {
    description "network slice level attributes";
    leaf service-time-start {
      type yang:date-and-time;
      description "Start of service";
    }
    leaf service-time-end {
      type yang:date-and-time;
      description "End of service";
    }
    leaf lifecycle-status {
      type lifecycle-status-type;
      description "Step in the slice lifecycle";
    }
    container access-control {
      uses rule;
      description "Control of access to operations per role";
    }
    leaf reliability-level {
      type reliability-level-type;
      description "Reliability level";
    }
    leaf resource-reservation-level {
      type resource-reservation-level-type;
      description "Resource reservation level";
    }
    leaf availability {
      type int64;
      description "Measure of probability to work with
      expected SLA (TBD: type should be expanded)";
    }
    leaf availability-threshold {
      type string;
      description "Availability threshold to actively
      notify the management system";
    }
  }



Qiang, et al.             Expires July 30, 2018                [Page 22]

Internet-Draft               Network slicing                January 2018


  grouping generalized-function-block {
    description "generalized function blocks that can be
    used to create an instance (more funcution blocks TBD)";

    container domain-agent {
      description "a network slice agent to receive manager request";
      leaf agent-name {
        type string;
        description "agent name";
      }
      leaf sb-ip-address {
        type string;
        description "IP Address of the server which for southbound protocols";
      }
      leaf sb-port {
        type string;
        description "Port of the server which for southbound protocols";
      }
      leaf nb-ip-address {
        type string;
        description "IP Address of the server which for northbound protocols";
      }
      leaf nb-port {
        type string;
        description "Port of the server which for northbound protocols";
      }
    }

    container load-balancer {
      description "load balancer (type TBD)";
      leaf element-id {
          type inet:uri;
          description "load balancer element id";
      }
      list termination-point {
        use  termination-point-desc;
      }

      leaf LB-name {
        type string;
        description "load balancer name";
      }
      leaf ip-address {
        type string;
        description "IP Address of the load balancer (type TBD)";
      }
      leaf port {
        type string;



Qiang, et al.             Expires July 30, 2018                [Page 23]

Internet-Draft               Network slicing                January 2018


        description "Port of the load balancer (type TBD)";
      }
    }
  }

  grouping termination-point-desc {
    description "Augment network nodes termination points with
    port information.";

    leaf tp-id {
      type tp-id;
      description
            "Termination point identifier.";
    }

    list supporting-termination-point {
      key "network-ref node-ref tp-ref";
      description
            "This list identifies any termination points that
           the termination point is dependent on, or maps onto.
           Those termination points will themselves be contained
           in a supporting node.
           This dependency information can be inferred from
           the dependencies between links.  For this reason,
           this item is not separately configurable.  Hence no
           corresponding constraint needs to be articulated.
           The corresponding information is simply provided by the
           implementing system.";
      leaf network-ref {
        type leafref {
          path
            "../../../nw:supporting-node/nw:network-ref";
        }
        description
              "This leaf identifies in which topology the
             supporting termination point is present.";
      }

      leaf node-ref {
        type leafref {
          path
            "../../../nw:supporting-node/nw:node-ref";
        }
        description
              "This leaf identifies in which node the supporting
             termination point is present.";
      }




Qiang, et al.             Expires July 30, 2018                [Page 24]

Internet-Draft               Network slicing                January 2018


      leaf tp-ref {
        type leafref {
          path
            "/nw:networks/nw:network[nw:network-id=current()/"
                  + "../network-ref]/nw:node[nw:node-id=current()/../"
                  + "node-ref]/termination-point/tp-id";
        }
        description
          "Reference to the underlay node, must be in a
             different topology";
      }
    }  // list supporting-termination-point
    uses port-config;
    uses port-stats;
  }

  grouping service-instance-desc {
    description "Service instance description. An instance
    is based on a predefined function block";
    leaf service-instance-id {
      type inet:uri;
      description "service instance ID";
    }
    uses generalized-function-block;
  }

  /*
    Model
  */

  augment "/nd:networks/nd:network" {
    description "Augment network nodes with slice information.";
    list compute-unit {
      key "compute-unit-id";
      description "Compute units";
      uses compute-unit-desc;
    }
    list storage-unit {
      key "storage-unit-id";
      description "Storage units";
      uses storage-unit-desc;
    }
    list service-instance {
      key "service-instance-id";
      description "Service instance";
      uses service-instance-desc;
    }
    container slice-level-attributes {



Qiang, et al.             Expires July 30, 2018                [Page 25]

Internet-Draft               Network slicing                January 2018


      description "Attributes that apply to a whole network slice";
      uses slice-level-attributes;
    }
  }

  augment "/nd:networks/nd:network/nd:node" {
    description "Augment network nodes with slice information.";
    list compute-unit {
      key "compute-unit-ref";
      description "List of compute units present in node";
      leaf compute-unit-ref {
        type compute-unit-ref;
        description "Compute unit present in node";
      }
    }
    list storage-unit {
      key "storage-unit-ref";
      description "List of storage units present in node";
      leaf storage-unit-ref {
        type storage-unit-ref;
        description "Storage unit present in node";
      }
    }
    list service-instance {
      key "service-instance-ref";
      description "an instance of a service provided by the node";
      leaf service-instance-ref {
        type service-instance-ref;
        description "Service instance present in node";
      }
    }
  }

  augment "/nd:networks/nd:network/nd:node/lnk:termination-point" {
    description "Augment network nodes termination points with
    port information.";
    uses port-config;
    uses port-stats;
  }

  augment "/nd:networks/nd:network/lnk:link" {
    description "Augment network links with slice information.";
    container link-qos {
      description "QoS specifications for this link";
      uses link-qos-desc;
    }
  }
}



Qiang, et al.             Expires July 30, 2018                [Page 26]

Internet-Draft               Network slicing                January 2018


 <CODE ENDS>

6.  Security Considerations

   Each component of the network slice has its own security
   requirements.

7.  IANA Considerations

   There is no IANA action required by this document.

8.  Acknowledgements

   Authors would like to acknowledge Guangpeng Li for help coding.

9.  References

9.1.  Normative References

   [draft-ietf-i2rs-yang-network-topo]
              "i2rs-yang-network-topo", <https://www.ietf.org/id/
              draft-ietf-i2rs-yang-network-topo-17.txt>.

   [RFC7950]  Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
              RFC 7950, DOI 10.17487/RFC7950, August 2016,
              <https://www.rfc-editor.org/info/rfc7950>.

9.2.  Informative References

   [COMS-PS]  "COMS Problem Statement", <https://www.ietf.org/id/
              draft-geng-coms-problem-statement-00.txt>.

   [NGMN-NS-Framework]
              "NGMN Network Slicing Framework",
              <https://www.ngmn.org/uploads/
              media/161010_NGMN_Network_Slicing_framework_v1.0.8.pdf>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/info/rfc2119>.

Authors' Addresses

   Li Qiang
   Huawei

   Email: qiangli3@huawei.com



Qiang, et al.             Expires July 30, 2018                [Page 27]

Internet-Draft               Network slicing                January 2018


   Alex Galis
   University College London

   Email: a.galis@ucl.ac.uk


   Liang Geng
   China Mobile

   Email: gengliang@chinamobile.com


   Kiran Makhijani
   Huawei

   Email: Kiran.Makhijani@huawei.com


   Pedro Martinez-Julia
   NICT

   Email: pedro@nict.go.jp


   Hannu Flinck
   Nokia

   Email: hannu.flinck@nokia.com


   Xavier de Foy
   InterDigital Inc.

   Email: Xavier.DeFoy@InterDigital.com

















Qiang, et al.             Expires July 30, 2018                [Page 28]