Network Working Group                                            X. Geng
Internet-Draft                                                   M. Chen
Intended status: Standards Track                                  Huawei
Expires: January 17, 2019                                          Z. Li
                                                            China Mobile
                                                               R. Rahman
                                                           Cisco Systems
                                                           July 16, 2018


                    DetNet Configuration YANG Model
                     draft-geng-detnet-conf-yang-03

Abstract

   This document defines a YANG data model for Deterministic Networking
   (DetNet).  It covers the model of DetNet device, service layer and
   transport layer.  It also covers the DetNet topology YANG model.

Requirements Language

   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 RFC 2119 [RFC2119].

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 January 17, 2019.

Copyright Notice

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





Geng, et al.            Expires January 17, 2019                [Page 1]


Internet-Draft                DetNet Model                     July 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  . . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Terminologies . . . . . . . . . . . . . . . . . . . . . . . .   4
   3.  Model Overview  . . . . . . . . . . . . . . . . . . . . . . .   4
     3.1.  Modules Relationship  . . . . . . . . . . . . . . . . . .   4
     3.2.  Design Considerations . . . . . . . . . . . . . . . . . .   5
   4.  DetNet Topology Attributes  . . . . . . . . . . . . . . . . .   5
     4.1.  Node Type . . . . . . . . . . . . . . . . . . . . . . . .   5
     4.2.  PREOF Capability  . . . . . . . . . . . . . . . . . . . .   6
     4.3.  Queuing Management Algorithm Capability . . . . . . . . .   6
     4.4.  Resource Reservation Base . . . . . . . . . . . . . . . .   6
     4.5.  Bandwidth Metric  . . . . . . . . . . . . . . . . . . . .   6
     4.6.  Delay Metric  . . . . . . . . . . . . . . . . . . . . . .   7
     4.7.  Synchronization Accuracy  . . . . . . . . . . . . . . . .   8
   5.  DetNet Configuration Attributes . . . . . . . . . . . . . . .   8
     5.1.  DetNet Device Configuration Attribute . . . . . . . . . .   8
     5.2.  DetNet Flow Configuration Attributes  . . . . . . . . . .   8
       5.2.1.  DetNet Service Proxy Instance . . . . . . . . . . . .   9
       5.2.2.  DetNet Service Instance . . . . . . . . . . . . . . .  11
       5.2.3.  DetNet Transport Instance . . . . . . . . . . . . . .  13
   6.  DetNet Yang Structure . . . . . . . . . . . . . . . . . . . .  13
     6.1.  DetNet Topology Model Tree Diagram  . . . . . . . . . . .  13
     6.2.  DetNet Flow Configuration Model Tree Diagram  . . . . . .  14
     6.3.  DetNet Device Configuration Model Tree Diagram  . . . . .  19
   7.  DetNet YANG Model . . . . . . . . . . . . . . . . . . . . . .  20
     7.1.  DetNet Topology YANG Model  . . . . . . . . . . . . . . .  20
     7.2.  DetNet Flow Configuration YANG Model  . . . . . . . . . .  25
     7.3.  DetNet Device Configuration Yang Model  . . . . . . . . .  35
   8.  DetNet Configuration Model Classification . . . . . . . . . .  37
     8.1.  Fully Distributed Configuration Model . . . . . . . . . .  37
     8.2.  Fully Centralized Configuration Model . . . . . . . . . .  38
     8.3.  Hybrid Configuration Model  . . . . . . . . . . . . . . .  38
   9.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  40
   10. Security Considerations . . . . . . . . . . . . . . . . . . .  40
   11. Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  40
   12. References  . . . . . . . . . . . . . . . . . . . . . . . . .  40
     12.1.  Normative References . . . . . . . . . . . . . . . . . .  40



Geng, et al.            Expires January 17, 2019                [Page 2]


Internet-Draft                DetNet Model                     July 2018


     12.2.  Informative References . . . . . . . . . . . . . . . . .  40
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  42

1.  Introduction

   A lot of use cases in industry and other areas require the network to
   provide service that can satisfy strict quality requirements, e.g.,
   extremely low packet loss rate, bounded low latency and jitter,
   together with other best effort flows [I-D.ietf-detnet-use-cases].
   Deterministic Networking (DetNet) is able to provide high quality
   deterministic service in layer 3 in an IP/MPLS network.

   [I-D.ietf-detnet-architecture] defines the whole picture of DetNet;
   [I-D.dt-detnet-dp-sol] defines DetNet flow encapsulation and
   forwarding process;

   As defined in the [I-D.ietf-detnet-flow-information-model] , DetNet
   information model can be distinguished as:

   o  Flow models describe characteristics of data flows.  These models
      describe in detail all relevant aspects of a flow that are needed
      to support the flow properly by the network between the source and
      the destination(s).

   o  Service models describe characteristics of services being provided
      for data flows over a network.  These models can be treated as a
      network operator independent information model.

   o  Configuration models describe in detail the settings required on
      network nodes to serve a data flow properly.  Service and flow
      information models are used between the user and the network
      operator.  Configuration information models are used between the
      management/control plane entity of the network and the network
      nodes.

   They are shown in the Figure 1.















Geng, et al.            Expires January 17, 2019                [Page 3]


Internet-Draft                DetNet Model                     July 2018


         User                  Network Operator
                 flow/service
          /\      info model    +---+
         /  \ <---------------> | X |    management/control
         ----                   +-+-+       plane entity
                                  ^
                                  |   configuration
                                  |     info model
                           +------------+
                           v      |     |
                          +-+     |     v  Network
                          +-+     v    +-+  nodes
                                 +-+   +-+
                                 +-+

   Figure 1.  Three Information Models

   [I-D.ietf-detnet-flow-information-model] defines the user network
   interface (UNI), including flow/service information model.

   This document defines a YANG data model for Deterministic Networking
   (DetNet).  It covers the model of DetNet device, DetNet service layer
   and DetNet transport layer.  It also covers the DetNet topology.  The
   models defined in this document can be used for DetNet device
   capability configuration, DetNet flow configuration, DetNet flow
   status reporting and DetNet topology discovery.

2.  Terminologies

   This documents uses the terminologies defined in
   [I-D.ietf-detnet-architecture].

3.  Model Overview

3.1.  Modules Relationship
















Geng, et al.            Expires January 17, 2019                [Page 4]


Internet-Draft                DetNet Model                     July 2018


     +--------------------+
     |ietf-detnet-topology|
     +--------------------+

     +-------------------+                            +--------------+
     |ietf-detnet-device |                  --------->|ietf-detnet-ip|
     +-------------------+                /           +--------------+
                                         /    DetNet ip data plane solution
     +------------------------+        /
     |ietf-detnet-flow-config |o-----+
     +------------------------+       \    DetNet mpls data plane solution
                                       \              +----------------+
                                        \  ---------> |ietf-detnet-mpls|
                                                      +----------------+
                                                              o
                                                              |
                                                              V
                                                      +--------------+
                                                      |ietf-detnet-sr|
                                                      +--------------+
Figure 2 : Relationship of DetNet configuration yang modules

3.2.  Design Considerations

   There are 6 yang models defined in this draft.  The ietf-detnet-
   topology model covers the DetNet topology that can be used for DetNet
   topology discovery; the ietf-detnet-device model covers the DetNet
   device configuration; the ietf-detnet-static covers the static DetNet
   flow configuration.  The ietf-detnet-ip and ietf-detnet-mpls are
   augmentations to ietf-detnet-static, which covers the IP
   encapsulation and MPLS encapsulation respectively.  The ietf-detnet-
   sr is an augmentation to ietf-detnet-mpls.  The ietf-detnet-ip, ietf-
   detnet-mpls and ietf-detnet-mpls will be defined in future once the
   data plane encapsulations are stabilized.

4.  DetNet Topology Attributes

   This section introduces the topology related attributes for DetNet.

4.1.  Node Type

   [I-D.ietf-detnet-architecture] introduces three types of DetNet nodes
   which play different roles with different functions.  To
   differentiate to which type a node belong, Node Type is introduced.
   It also implies DetNet node capabilities, which is useful for path
   computation.





Geng, et al.            Expires January 17, 2019                [Page 5]


Internet-Draft                DetNet Model                     July 2018


4.2.  PREOF Capability

   Packet Replication, Elimination and Ordering Function (PREOF) are
   defined in [I-D.ietf-detnet-architecture], a PREOF capable node
   SHOULD advertise its capabilities that are necessary for the path
   computation nodes when compute a DetNet flow path.  PREOF capability
   is actually consist of Packet Replication Function (PRF), Packet
   Elimination Function (PEF), Packet Ordering Function (POF).

4.3.  Queuing Management Algorithm Capability

   Queuing Management Algorithms are for congestion protection, which
   include scheduling, shaping and preemption.  IEEE defines several
   queuing management algorithms for Time Sensitive Networking (TSN),
   most of them can be reused by DetNet.  This document introduces the
   following types to identify the corresponding Queuing Management
   Algorithms:

   o  Credit-based shaper algorithm [IEEE802.1Q-2014]

   o  Frame Preemption[IEEE802.1Qbu]

   o  Scheduled Traffic [IEEE802.1Qbv]

   o  Per-Stream Filtering and Policing [IEEE802.1Qci]

   o  Cyclic Queuing and Forwarding [IEEE802.1Qch]

4.4.  Resource Reservation Base

   There is a set of parameters that influence reservation operation for
   the entire device.  Those parameters are contained in Reservation
   Base attribute, including the following parameters:

   o  MaxFanInPorts: maximum number of fan-in ports in the device

   o  MaxPacketSize: maximum packet size that the node allows to
      transmit

   o  MaxDetNetClasses: maximum number of traffic classes that can be
      reserved for DetNet

4.5.  Bandwidth Metric

   [I-D.ietf-teas-yang-te-topo]defines the following parameters for
   bandwidth reservation:

   o  Max-link-bandwidth: maximum link bandwidth



Geng, et al.            Expires January 17, 2019                [Page 6]


Internet-Draft                DetNet Model                     July 2018


   o  Max-resv-link-bandwidth: maximum reservable link bandwidth

   o  Unreserved-bandwidth(N): unreserved bandwidth for priority N

   Considering the features of DetNet, bandwidth reservation parameters
   for DetNet are defined as follows to augment the te-topology:

   o  Maximum DetNet Reservable Bandwidth(N): is represented as a
      percentage of port transmit rate, that can be used by DetNet of
      traffic class N and it is also available for other DetNet traffic
      classes that have lower latency requirements;

   o  DetNet Unreserved Bandwidth(N): is represented as a percentage of
      maximum DetNet Reservable bandwidth that has not been reserved;

   For example, there are three classes of DetNet service A, B, and C,
   with A the lowest latency and C the highest.  'Maximum DetNet
   Reservable Bandwidth(N)' can be presented as 'MaxBw(N)'; DetNet
   Unreserved Bandwidth(N) can be presented as 'UnBw(N)'.  MaxBw(A) can
   be used by A; MaxBw(B) can by used by A&B, and MaxBw(C) can be used
   by A&B&C.  So, if MaxBw(A)=10, MaxBw(B)=25, MaxBw(C)=40, and we
   allocate 15 to A, 30 to B and 10 to C, then UnBw(A)=0, UnBw(B)= 0,
   UnBw(C)=20.

4.6.  Delay Metric

   Delay Metric is used to describe the delay of every hop, which
   includes the following parameters:

   o  Link Delay

   o  Maximum Packet Processing Delay

   o  Minimum Packet Processing Delay

   o  Maximum Output Queuing Delay

   o  Minimum Output Queuing Delay

   Link Delay specifies the delay along the network media for a packet
   transmitted from the specified Port of this node to the neighboring
   Port on a different node.

   Operations causing Packet Processing Delay includes: Per-Stream
   Filtering and Policing (PSFP) ([IEEE802.1Qci]), Flow Classification,
   Forwarding Information Base (FIB) lookup, and etc.  It covers the
   processes from the packet being received by the node to the packet
   being sent to the output queue.



Geng, et al.            Expires January 17, 2019                [Page 7]


Internet-Draft                DetNet Model                     July 2018


   Editor's Note: The delay metric is also discussed in IEEE with other
   considerations, which can be found:
   <http://www.ieee802.org/1/files/public/docs2017/cr-finn-timing-model-
   0617-v00.pdf> and <http://www.ieee802.org/1/files/public/docs2017/cr-
   specht-bridge-timing-0917-v01.pdf>.  More discussions are needed
   here.

4.7.  Synchronization Accuracy

   Most of the DetNet service requires clock synchronization.
   Synchronization Accuracy is necessary for queuing algorithm
   configuration and delay prediction.  For example, Synchronization
   Accuracy is an important parameter when calculating the guard band
   for CQF[IEEE802.1Qch].

   Editor's Note: The method used to achieve time synchronization is not
   specified in this draft.

5.  DetNet Configuration Attributes

   DetNet configuration attributes include two parts: DetNet device
   related attributes (Section 5.1) and DetNet flow related attributes
   (Section 5.2).

5.1.  DetNet Device Configuration Attribute

   DetNet device configuration is flow irrelevant, and it covers PREOF
   and interfaces configurations.  The interface configuration part is
   defined in IEEE, which are mainly about how to configure the queuing
   management algorithms and relevant parameters.

   For DetNet device configuration, the following attributes are
   included:

   o  PRF Enable

   o  PEF Enable

   o  POF Enable

   o  DetNet interface configuration

5.2.  DetNet Flow Configuration Attributes

   DetNet flow configuration attributes include three parts: DetNet
   service proxy instance attributes, DetNet service instance attributes
   and DetNet transport layer instance attributes.  Figure 3 shows the




Geng, et al.            Expires January 17, 2019                [Page 8]


Internet-Draft                DetNet Model                     July 2018


   relationship of these three parts and how they work together to do
   end-to-end configuration for DetNet flows.

  DF: DetNet Flow
  DSPI: DetNet Service Proxy Instance
  DSI: DetNet Service Instance
  DTI: DetNet Transport Instance

             |<---------- End to End DetNet Service ------>|
             |           Transit           Transit         |
      (AC)   |        |<-Tunnel->|        |<-Tnl->|        |  (AC)
 End    |    V        V     1    V        V   2   V        V   |    End
 System |    +--------+          +--------+       +--------+   |  System
 +---+  |    |   E1   |==========|   R1   |=======|   E2   |   |   +---+
 |   |--|----|--------|          |--------|       |--------|---|---|   |
 |CE1|  |    | DSPI 1 |          |        |       | DSPI 2 |   |   |CE2|
 |   |       |+-------+          |        |       +-------+|       |   |
 +---+       || DSI 1 |          |  DSI 2 |       | DSI 3 ||       +---+
             ||       +          | +------+       |       ||
             || +-----+          | |DTI 2 |..DF2..|       ||
             || |DTI 1|...DF1....| +------+       |       ||
             || +-----+          | |DTI 3 |..DF3..|       ||
             |+-------+          | +------+       +-------+|
             +--------+==========+--------+=======+--------+
              Edge Node          Relay Node       Edge Node
                 |                                   |
                 |<-------- DetNet Service --------->|


   Figure 3: End-to-end DetNet Flow Configuration

5.2.1.  DetNet Service Proxy Instance

   DetNet service proxy instance covers the function of DetNet service
   proxy defined in [I-D.ietf-detnet-architecture].
















Geng, et al.            Expires January 17, 2019                [Page 9]


Internet-Draft                DetNet Model                     July 2018


     +-------------+--------------+--------------+
     |  In-coming  |              |DetNet Service|
     |    Flow 1   |              |  Instance 1  |
     +-------------+    Flow      +--------------+
     |  In-coming  |              |DetNet Service|
     |   Flow 2    |   Service    |  Instance 2  |
     +-------------+              +--------------+
     |  In-coming  |   Mapping    |              |
     |   Flow 3    |              |DetNet Service|
     +-------------+              | Instance 3   |
     |  In-coming  |              |              |
     |   Flow 4    |              |              |
     +-------------+--------------+--------------+

   Figure 4: DetNet Service Proxy Instance at Ingress Node

   At the ingress node, the incoming flow outside this DetNet domain
   will be mapped to a DetNet service instance.  If flow aggregation is
   allowed, multiple incoming flows can be mapped onto a single DetNet
   service instance(as showed in figure 4).

     +--------------+--------------+--------------+
     |DetNet Service|              |  Out-going   |
     |  Instance 1  |              |    Flow 1    |
     +--------------+    Flow      +--------------+
     |DetNet Service|              |  Out-going   |
     |  Instance 2  |   Service    |    Flow 2    |
     +--------------+              +--------------+
     |              |   Mapping    |  Out-going   |
     |DetNet Service|              |    Flow 3    |
     |  Instance 3  |              +--------------+
     |              |              |  Out-going   |
     |              |              |    Flow 4    |
     +--------------+--------------+--------------+

   Figure 5: DetNet Service Proxy Instance at Egress Node

   At the egress node, a DetNet service instance will be mapped onto a
   out-going flow.  If flow aggregation is allowed, a DetNet Service
   Instance can be mapped onto multiple out-going flows(as showed in
   figure 5).

   So in this draft, DetNet service proxy instance covers the following
   contents: in-coming/out-going flow list, DetNet service instance
   list, and the mapping relationship between in-coming/out-going flow
   list and DetNet service instance list.





Geng, et al.            Expires January 17, 2019               [Page 10]


Internet-Draft                DetNet Model                     July 2018


   The in-coming/out-going flow are identified by the following
   attributes:

   o  Flow Identification: the in-coming/out-going flow can be a DetNet
      flow from another DetNet domain, a TSN flow from a TSN domain, or
      a client flow without TSN/DetNet features.  The flow
      identification depends on which type the flow belongs to;

   o  Traffic Specification: it is used to configure the filtering and
      shaping mechanism in the edge node;

   DetNet service instance attributes are specified in section 5.2.2.

5.2.2.  DetNet Service Instance

   DetNet Service Instance (DSI) covers the function of DetNet service
   layer, including packet sequencing, replication and elimination (or
   packet encoding) for service protection.

     +--------------+--------------+--------------+
     |              |              | Out-segment 1|
     |              |              |  +-----------+
     |              |   Segment    |  |   DTI 1   |
     |              |              |  |           |
     |              |   Mapping    |  +-----------+
     |  In-segment 1|              +--------------+
     |              |     Base     | Out-segment 2|
     |              |              |  +-----------+
     |              |              |  |   DTI 2   |
     |              |              |  |           |
     |              |              |  +-----------+
     +--------------+--------------+--------------+

   Figure 6: DetNet Service Instance for packet replication

   When Packet Replication Function(PRF) is operated in the DetNet
   service instance of a relay node, a single in-segment will be mapped
   onto multiple out-segments(as showed in figure 6);













Geng, et al.            Expires January 17, 2019               [Page 11]


Internet-Draft                DetNet Model                     July 2018


     +--------------+--------------+--------------+
     | In-segment 1 |              |              |
     |              |              |              |
     +--------------+   Segment    |              |
     | In-segment 2 |              | Out-segment 1|
     |              |   Mapping    |              |
     +--------------+              |              |
     | In-segment 3 |     Base     |  +-----------+
     |              |              |  |   DTI 1   |
     +--------------+              |  |           |
     | In-segment 4 |              |  |           |
     |              |              |  +-----------+
     +--------------+--------------+--------------+

   Figure 7: DetNet Service Instance for packet elimination

   When Packet Elimination Function (PEF) is operated in the DetNet
   service instance of a relay node, multiple in-segments will be mapped
   onto a single out-segment (as showed in figure 7);

     +--------------+--------------+--------------+
     | In-segment 1 |              | Out-segment 1|
     |              |              |  +-----------+
     +--------------+   Segment    |  |   DTI 1   |
     | In-segment 2 |              |  |           |
     |              |   Mapping    |  +-----------+
     +--------------+              +--------------+
     | In-segment 3 |     Base     | Out-segment 2|
     |              |              |  +-----------+
     +--------------+              |  |   DTI 2   |
     | In-segment 4 |              |  |           |
     |              |              |  +-----------+
     +--------------+--------------+--------------+

   Figure 8: DetNet Service Instance for packet elimination and
   replication

   When both Packet Elimination Function (PEF) and Packet Replication
   Function are operated in the DetNet service instance of a relay node,
   multiple in-segments will be mapped onto multiple out-segments(as
   showed in figure 8).

   Packet ordering and packet encoding are supposed to be included in
   the in-segment attribute.

   So in this draft, DetNet service instance covers the following
   contents: in-segment list, out-segment list and the mapping
   relationship between in-segment list and out-segment list.



Geng, et al.            Expires January 17, 2019               [Page 12]


Internet-Draft                DetNet Model                     July 2018


   In-segment attributes include:

   o  Flow Identification: it is used for uniquely identifying the
      DetNet flow in this relay node;

   o  Function (PRF/PEF/POF):

   Out-segment attributes include:

   o  Flow Identification:it is used for uniquely identifying the DetNet
      flow in next relay node;

   o  DetNet Transport Instance

   DetNet transport instance attributes are specified in section 5.2.3.

   The Flow Identification highly depends on the data plane
   encapsulations that are under developing.  This part will be
   augmented by the corresponding yang model (ietf-detnet-mpls/ietf-
   detnet-ip).

5.2.3.  DetNet Transport Instance

   DetNet Transport Instance (DTI) covers the functions of DetNet
   transport layer, it describes the DetNet tunnel that is used to
   transmit DetNet flows between DetNet service instances.  Some queuing
   management algorithms mentioned in section 4.3 requires to be
   configured based on the features of flow.  If this kind of algorithem
   is used, then configuration yang modle of the corresponding
   parameters should also be included in DetNet Transport Instance.

   The tunnel attributes are closely related to the data plane
   encapsulations that are under developing.  This part will be
   augmented by the corresponding yang model(ietf-detnet-mpls/ietf-
   detnet-ip).

6.  DetNet Yang Structure

6.1.  DetNet Topology Model Tree Diagram












Geng, et al.            Expires January 17, 2019               [Page 13]


Internet-Draft                DetNet Model                     July 2018


   module: ietf-te-detnet-topology
     augment /nw:networks/nw:network/nw:node:
       +--rw detnet-performance-metric-attributes
       |  +--rw maximum-detnet-reservable-bandwidth
       |  |  +--rw te-bandwidth
       |  |     +--rw (technology)?
       |  |        +--:(generic)
       |  |           +--rw generic?   te-bandwidth
       |  +--rw reserved-detnet-bandwidth
       |  |  +--rw te-bandwidth
       |  |     +--rw (technology)?
       |  |        +--:(generic)
       |  |           +--rw generic?   te-bandwidth
       |  +--rw available-detnet-bandwidth
       |  |  +--rw te-bandwidth
       |  |     +--rw (technology)?
       |  |        +--:(generic)
       |  |           +--rw generic?   te-bandwidth
       |  +--rw minimum-detnet-device-delay?           uint32
       |  +--rw maximum-detnet-device-delay?           uint32
       +--rw detnet-queuing-management-algorithm
          +--rw queuing-management-algorithm?   enumeration
     augment /nw:networks/nw:network/nt:link:
       +--rw detnet-node-type
       |  +--rw detnet-node-type?   enumeration
       +--rw detnet-resource-reservation-attributes
       |  +--rw MaxFanInPorts?      uint32
       |  +--rw MaxPacketSize?      uint32
       |  +--rw MaxDetNetClasses?   uint32
       +--rw detnet-elimination-capability?            boolean
       +--rw detnet-replication-capability?            boolean

6.2.  DetNet Flow Configuration Model Tree Diagram

module: ietf-detnet-flow-config
    +--rw detnet-config
    |  +--rw (detnet-node-type)?
    |     +--:(detnet-transit-node-type)
    |     |  +--rw detnet-transport-instance
    |     +--:(detnet-relay-node-type)
    |     |  +--rw control-plane-protocal
    |     |  |  +--rw name?   string
    |     |  +--rw detnet-service-instance
    |     |     +--rw segment-mapping* [segment-mapping-id]
    |     |        +--rw segment-mapping-id    uint32
    |     |        +--rw active?               boolean
    |     |        +--rw last-updated?         yang:date-and-time
    |     |        +--rw in-segment



Geng, et al.            Expires January 17, 2019               [Page 14]


Internet-Draft                DetNet Model                     July 2018


    |     |        |  +--rw in-segment-list
    |     |        |     +--rw in-segment* [in-segment-id]
    |     |        |        +--rw in-segment-id                 uint32
    |     |        |        +--rw function
    |     |        |        |  +--rw (function-type)?
    |     |        |        |     +--:(packet-replication-function)
    |     |        |        |     +--:(packet-elimination-function)
    |     |        |        |     +--:(packet-ordering-function)
    |     |        |        |     +--:(detnet-inter-working-function)
    |     |        |        +--rw (in-segment-type)?
    |     |        |           +--:(non-detnet-in-segment)
    |     |        |           |  +--rw sequence-number-generation
    |     |        |           |     +--rw bit-number?    uint32
    |     |        |           |     +--rw upper-bound?   uint32
    |     |        |           |     +--rw lower-bound?   uint32
    |     |        |           +--:(detnet-in-segment)
    |     |        |              +--rw incoming-interface?           if:interface-ref
    |     |        |              +--rw flow-identification
    |     |        |                 +--rw source-ip-address?         inet:ip-address
    |     |        |                 +--rw destination-ip-address?    inet:ip-address
    |     |        |                 +--rw source-mac-address?        yang:mac-address
    |     |        |                 +--rw destination-mac-address?   yang:mac-address
    |     |        |                 +--rw ipv6-flow-label?           uint32
    |     |        |                 +--rw mpls-label?                rt-types:mpls-label
    |     |        +--rw out-segment
    |     |           +--rw out-segment-list
    |     |              +--rw out-segment* [out-segment-id]
    |     |                 +--rw out-segment-id               uint32
    |     |                 +--rw outgoing-interface?          if:interface-ref
    |     |                 +--rw flow-identification
    |     |                 |  +--rw source-ip-address?         inet:ip-address
    |     |                 |  +--rw destination-ip-address?    inet:ip-address
    |     |                 |  +--rw source-mac-address?        yang:mac-address
    |     |                 |  +--rw destination-mac-address?   yang:mac-address
    |     |                 |  +--rw ipv6-flow-label?           uint32
    |     |                 |  +--rw mpls-label?                rt-types:mpls-label
    |     |                 +--rw detnet-transport-instance
    |     |                    +--rw detnet-transport-instance
    |     +--:(detnet-edge-node-type)
    |        +--rw detnet-service-proxy-instance
    |           +--rw flow-to-detnet-mappings* [flow-to-detnet-mapping-id]
    |              +--rw flow-to-detnet-mapping-id    uint16
    |              +--rw client-flows
    |              |  +--rw client-flows* [client-flow-id]
    |              |     +--rw client-flow-id           uint16
    |              |     +--rw flow-id?                 uint16
    |              |     +--rw flow-identification
    |              |     |  +--rw flow-identification



Geng, et al.            Expires January 17, 2019               [Page 15]


Internet-Draft                DetNet Model                     July 2018


    |              |     |     +--rw source-ip-address?         inet:ip-address
    |              |     |     +--rw destination-ip-address?    inet:ip-address
    |              |     |     +--rw source-mac-address?        yang:mac-address
    |              |     |     +--rw destination-mac-address?   yang:mac-address
    |              |     |     +--rw ipv6-flow-label?           uint32
    |              |     |     +--rw mpls-label?                rt-types:mpls-label
    |              |     +--rw traffic-specification
    |              |        +--rw max-packets-per-interval?      uint16
    |              |        +--rw max-packet-size?               uint16
    |              |        +--rw queuing-algorithm-selection?   uint8
    |              +--rw control-plane-protocal
    |              |  +--rw name?   string
    |              +--rw detnet-service-instance
    |                 +--rw segment-mapping* [segment-mapping-id]
    |                    +--rw segment-mapping-id    uint32
    |                    +--rw active?               boolean
    |                    +--rw last-updated?         yang:date-and-time
    |                    +--rw in-segment
    |                    |  +--rw in-segment-list
    |                    |     +--rw in-segment* [in-segment-id]
    |                    |        +--rw in-segment-id                 uint32
    |                    |        +--rw function
    |                    |        |  +--rw (function-type)?
    |                    |        |     +--:(packet-replication-function)
    |                    |        |     +--:(packet-elimination-function)
    |                    |        |     +--:(packet-ordering-function)
    |                    |        |     +--:(detnet-inter-working-function)
    |                    |        +--rw (in-segment-type)?
    |                    |           +--:(non-detnet-in-segment)
    |                    |           |  +--rw sequence-number-generation
    |                    |           |     +--rw bit-number?    uint32
    |                    |           |     +--rw upper-bound?   uint32
    |                    |           |     +--rw lower-bound?   uint32
    |                    |           +--:(detnet-in-segment)
    |                    |              +--rw incoming-interface?           if:interface-ref
    |                    |              +--rw flow-identification
    |                    |                 +--rw source-ip-address?         inet:ip-address
    |                    |                 +--rw destination-ip-address?    inet:ip-address
    |                    |                 +--rw source-mac-address?        yang:mac-address
    |                    |                 +--rw destination-mac-address?   yang:mac-address
    |                    |                 +--rw ipv6-flow-label?           uint32
    |                    |                 +--rw mpls-label?                rt-types:mpls-label
    |                    +--rw out-segment
    |                       +--rw out-segment-list
    |                          +--rw out-segment* [out-segment-id]
    |                             +--rw out-segment-id               uint32
    |                             +--rw outgoing-interface?          if:interface-ref
    |                             +--rw flow-identification



Geng, et al.            Expires January 17, 2019               [Page 16]


Internet-Draft                DetNet Model                     July 2018


    |                             |  +--rw source-ip-address?         inet:ip-address
    |                             |  +--rw destination-ip-address?    inet:ip-address
    |                             |  +--rw source-mac-address?        yang:mac-address
    |                             |  +--rw destination-mac-address?   yang:mac-address
    |                             |  +--rw ipv6-flow-label?           uint32
    |                             |  +--rw mpls-label?                rt-types:mpls-label
    |                             +--rw detnet-transport-instance
    |                                +--rw detnet-transport-instance
    +--ro detnet-state
       +--ro (detnet-node-type)?
          +--:(detnet-transit-node-type)
          |  +--ro detnet-transport-instance
          +--:(detnet-relay-node-type)
          |  +--ro control-plane-protocal
          |  |  +--ro name?   string
          |  +--ro detnet-service-instance
          |     +--ro segment-mapping* [segment-mapping-id]
          |        +--ro segment-mapping-id    uint32
          |        +--ro active?               boolean
          |        +--ro last-updated?         yang:date-and-time
          |        +--ro in-segment
          |        |  +--ro in-segment-list
          |        |     +--ro in-segment* [in-segment-id]
          |        |        +--ro in-segment-id                 uint32
          |        |        +--ro function
          |        |        |  +--ro (function-type)?
          |        |        |     +--:(packet-replication-function)
          |        |        |     +--:(packet-elimination-function)
          |        |        |     +--:(packet-ordering-function)
          |        |        |     +--:(detnet-inter-working-function)
          |        |        +--ro (in-segment-type)?
          |        |           +--:(non-detnet-in-segment)
          |        |           |  +--ro sequence-number-generation
          |        |           |     +--ro bit-number?    uint32
          |        |           |     +--ro upper-bound?   uint32
          |        |           |     +--ro lower-bound?   uint32
          |        |           +--:(detnet-in-segment)
          |        |              +--ro incoming-interface?           if:interface-ref
          |        |              +--ro flow-identification
          |        |                 +--ro source-ip-address?         inet:ip-address
          |        |                 +--ro destination-ip-address?    inet:ip-address
          |        |                 +--ro source-mac-address?        yang:mac-address
          |        |                 +--ro destination-mac-address?   yang:mac-address
          |        |                 +--ro ipv6-flow-label?           uint32
          |        |                 +--ro mpls-label?                rt-types:mpls-label
          |        +--ro out-segment
          |           +--ro out-segment-list
          |              +--ro out-segment* [out-segment-id]



Geng, et al.            Expires January 17, 2019               [Page 17]


Internet-Draft                DetNet Model                     July 2018


          |                 +--ro out-segment-id               uint32
          |                 +--ro outgoing-interface?          if:interface-ref
          |                 +--ro flow-identification
          |                 |  +--ro source-ip-address?         inet:ip-address
          |                 |  +--ro destination-ip-address?    inet:ip-address
          |                 |  +--ro source-mac-address?        yang:mac-address
          |                 |  +--ro destination-mac-address?   yang:mac-address
          |                 |  +--ro ipv6-flow-label?           uint32
          |                 |  +--ro mpls-label?                rt-types:mpls-label
          |                 +--ro detnet-transport-instance
          |                    +--ro detnet-transport-instance
          +--:(detnet-edge-node-type)
             +--ro detnet-service-proxy-instance
                +--ro flow-to-detnet-mappings* [flow-to-detnet-mapping-id]
                   +--ro flow-to-detnet-mapping-id    uint16
                   +--ro client-flows
                   |  +--ro client-flows* [client-flow-id]
                   |     +--ro client-flow-id           uint16
                   |     +--ro flow-id?                 uint16
                   |     +--ro flow-identification
                   |     |  +--ro flow-identification
                   |     |     +--ro source-ip-address?         inet:ip-address
                   |     |     +--ro destination-ip-address?    inet:ip-address
                   |     |     +--ro source-mac-address?        yang:mac-address
                   |     |     +--ro destination-mac-address?   yang:mac-address
                   |     |     +--ro ipv6-flow-label?           uint32
                   |     |     +--ro mpls-label?                rt-types:mpls-label
                   |     +--ro traffic-specification
                   |        +--ro max-packets-per-interval?      uint16
                   |        +--ro max-packet-size?               uint16
                   |        +--ro queuing-algorithm-selection?   uint8
                   +--ro control-plane-protocal
                   |  +--ro name?   string
                   +--ro detnet-service-instance
                      +--ro segment-mapping* [segment-mapping-id]
                         +--ro segment-mapping-id    uint32
                         +--ro active?               boolean
                         +--ro last-updated?         yang:date-and-time
                         +--ro in-segment
                         |  +--ro in-segment-list
                         |     +--ro in-segment* [in-segment-id]
                         |        +--ro in-segment-id                 uint32
                         |        +--ro function
                         |        |  +--ro (function-type)?
                         |        |     +--:(packet-replication-function)
                         |        |     +--:(packet-elimination-function)
                         |        |     +--:(packet-ordering-function)
                         |        |     +--:(detnet-inter-working-function)



Geng, et al.            Expires January 17, 2019               [Page 18]


Internet-Draft                DetNet Model                     July 2018


                         |        +--ro (in-segment-type)?
                         |           +--:(non-detnet-in-segment)
                         |           |  +--ro sequence-number-generation
                         |           |     +--ro bit-number?    uint32
                         |           |     +--ro upper-bound?   uint32
                         |           |     +--ro lower-bound?   uint32
                         |           +--:(detnet-in-segment)
                         |              +--ro incoming-interface?           if:interface-ref
                         |              +--ro flow-identification
                         |                 +--ro source-ip-address?         inet:ip-address
                         |                 +--ro destination-ip-address?    inet:ip-address
                         |                 +--ro source-mac-address?        yang:mac-address
                         |                 +--ro destination-mac-address?   yang:mac-address
                         |                 +--ro ipv6-flow-label?           uint32
                         |                 +--ro mpls-label?                rt-types:mpls-label
                         +--ro out-segment
                            +--ro out-segment-list
                               +--ro out-segment* [out-segment-id]
                                  +--ro out-segment-id               uint32
                                  +--ro outgoing-interface?          if:interface-ref
                                  +--ro flow-identification
                                  |  +--ro source-ip-address?         inet:ip-address
                                  |  +--ro destination-ip-address?    inet:ip-address
                                  |  +--ro source-mac-address?        yang:mac-address
                                  |  +--ro destination-mac-address?   yang:mac-address
                                  |  +--ro ipv6-flow-label?           uint32
                                  |  +--ro mpls-label?                rt-types:mpls-label
                                  +--ro detnet-transport-instance
                                     +--ro detnet-transport-instance

6.3.  DetNet Device Configuration Model Tree Diagram

   module: ietf-detnet-device
       +--rw detnet-device-config
       |  +--rw PEF-enabled?         boolean
       |  +--rw PRF-enabled?         boolean
       |  +--rw POF-enabled?         boolean
       |  +--rw detnet-interfaces
       +--ro detnet-device-states
          +--ro PEF-enabled?         boolean
          +--ro PRF-enabled?         boolean
          +--ro POF-enabled?         boolean
          +--ro detnet-interfaces








Geng, et al.            Expires January 17, 2019               [Page 19]


Internet-Draft                DetNet Model                     July 2018


7.  DetNet YANG Model

7.1.  DetNet Topology YANG Model

   <CODE BEGINS> file "ietf-detnet-topology@2018-01-15.yang"
     module ietf-detnet-topology {
       namespace "urn:ietf:params:xml:ns:yang:ietf-detnet-topology";
       prefix "detnet-topo";


       import ietf-te-types {
         prefix "te-types";
       }

       import ietf-routing-types {
         prefix "rt-types";
       }

       import ietf-te-topology {
         prefix "tet";
       }

       import ietf-network {
         prefix "nw";
       }

       import ietf-network-topology {
         prefix "nt";
       }

       organization
         "IETF Deterministic Networking(detnet)Working Group";

       contact
        "WG Web:   <http://tools.ietf.org/wg/detnet/>
         WG List:  <mailto:detnet@ietf.org>

         WG Chair: Lou Berger
                   <mailto:lberger@labn.net>
         Editor:   Xuesong Geng
                   <mailto:gengxuesong@huawei.com>
         Editor:   Mach Chen
                   <mailto:mach.chen@huawei.com>
         Editor:  Zhenqiang Li
                   <mailto:lizhenqiang@chinamobile.com>
         Editor:   Reshad Rahman
                   <mailto:rrahman@cisco.com>";




Geng, et al.            Expires January 17, 2019               [Page 20]


Internet-Draft                DetNet Model                     July 2018


       description
         "This YAGN module augments the 'ietf-te-topology'
          module with detnet capability data for detnet
          configuration";

       revision "2018-01-15" {
         description "Initial revision";
         reference "RFC XXXX: YANG Data Model for DetNet Topologies";
         //RFC Ed.: replace XXXX with actual RFC number and remove
         // this note
       }

       grouping detnet-link-info-attributes{
         description
           "DetNet capability attributes in a DetNet topology";
         container detnet-performance-metric-attributes{
           description
             "Link performance information in real time.";
           uses detnet-performance-metric-attributes;
         }
         container detnet-queuing-management-algorithm{
           description
             "Detnet queuing management algorithm used in
              output queue";
           uses detnet-queuing-management-algorithm;
         }
       }

       grouping detnet-performance-metric-attributes{
         description
           "Link performance information in real time.";
         container maximum-detnet-reservable-bandwidth{
           uses te-types:te-bandwidth;
           description
             "This container specifies the maximum bandwidth
              that is reserved for DetNet on this link.";
         }
         container reserved-detnet-bandwidth{
           uses te-types:te-bandwidth;
           description
             "This container specifies the bandwidth that has
              been reserved for DetNet on this link.";
         }
         container available-detnet-bandwidth{
           uses te-types:te-bandwidth;
           description
             "This container specifies the bandwidth that can
              be used for new DetNet flows on this link.";



Geng, et al.            Expires January 17, 2019               [Page 21]


Internet-Draft                DetNet Model                     July 2018


         }
         leaf minimum-detnet-device-delay{
           type uint32;
           description
             "Minimum delay in the device for DetNet flows";
         }
         leaf maximum-detnet-device-delay{
           type uint32;
           description
             "Maximum delay in the device for DetNet flows";
         }
       }

       grouping detnet-queuing-management-algorithm{
         description
           "Detnet queuing management algorithm used in
            output queue";
         leaf queuing-management-algorithm{
           type enumeration{
             enum credit-based-shaping{
               reference
                 "IEEE P802.1 Qav";
             }
             enum time-aware-shaping{
               reference
                 "IEEE P802.1 Qbv";
             }
             enum  cyclic-queuing-and-forwarding{
               reference
                 "IEEE P802.1 Qch";
             }
             enum  asynchronous-traffic-shaping{
               reference
                 "IEEE P802.1 Qcr";
             }
           }
           description
             "Detnet queuing management algorithm type";
         }
       }


       grouping detnet-node-info-attributes{
         description
           "DetNet capability attributes in a DetNet node";
         container detnet-node-type{
           description
             "Three types of DetNet nodes";



Geng, et al.            Expires January 17, 2019               [Page 22]


Internet-Draft                DetNet Model                     July 2018


           reference
             "draft-ietf-detnet-architecture-03:
              Deterministic Networking Architecture";
           uses detnet-node-type;
         }
         container detnet-resource-reservation-attributes{
           description
             "Attributes about resource reservation for
              DetNet flows";
           uses detnet-resource-reservation-attributes;
         }
         leaf detnet-elimination-capability{
           type boolean;
           description
             "This node is able to do DetNet packet
              elimination";
         }
         leaf detnet-replication-capability{
           type boolean;
           description
             "This node is able to do DetNet packet
              replication";
         }
       }

       grouping detnet-node-type{
         description
           "This grouping defines three types of DetNet nodes";
         reference
           "draft-ietf-detnet-architecture-03:Deterministic
            Networking Architecture";
         leaf detnet-node-type{
           type enumeration{
             enum edge-node{
               description
                 "An instance of a DetNet relay node that
                  includes either a DetNet service layer proxy
                  function for DetNet service protection (e.g.
                  the addition or removal of packet sequencing
                  information) for one or more end systems, or
                  starts or terminate congestion protection at
                  the DetNet transport layer,analogous to a
                  Label Edge Router (LER).";
             }
             enum relay-node{
               description
                 "A DetNet node including a service layer
                  function that interconnects different DetNet



Geng, et al.            Expires January 17, 2019               [Page 23]


Internet-Draft                DetNet Model                     July 2018


                  transport layer paths to provide service
                  protection.A DetNet relay node can be a bridge,
                  a router, a firewall, or any other system that
                  participates in the DetNet service layer. It
                  typically incorporates DetNet transport layer
                  functions as well, in which case it is
                  collocated with a transit node.";
             }
             enum  transit-node{
               description
                 "A node operating at the DetNet transport layer,
                  that utilizes link layer and/or network layer
                  switching across multiple links and/or
                  sub-networks to provide paths for DetNet
                  service layer functions.Optionally provides
                  congestion protection over those paths.An MPLS
                  LSR is an example of a DetNet transit node.";
             }
           }
           description
           "The type this node belongs to, which also determines
            the role the node can play in DetNet ";
         }
       }

       grouping detnet-resource-reservation-attributes{
         description
           "This grouping describs reservation operation for
            the entire device";
         leaf MaxFanInPorts{
           type uint32;
           description
             "maximum number of fan-in ports in the device";
         }
         leaf MaxPacketSize{
           type uint32;
           description
           "maximum Packet size the device allows";
         }
         leaf MaxDetNetClasses{
           type uint32;
           description
             "maximum number of traffic classes that can be
              reserved for DetNet";
         }
       }

       augment "/nw:networks/nw:network/nw:node" {



Geng, et al.            Expires January 17, 2019               [Page 24]


Internet-Draft                DetNet Model                     July 2018


         when "../nw:network-types/tet:te-topology"
         {
           description
           "";
         }
         description
           "Advertised DetNet link information attributes.";
         uses detnet-link-info-attributes;
       }

       augment "/nw:networks/nw:network/nt:link" {
         when "../nw:network-types/tet:te-topology"
         {
           description
           "";
         }
         description
           "Advertised DetNet node information attributes.";
         uses detnet-node-info-attributes;
       }
     }
   <CODE ENDS>

7.2.  DetNet Flow Configuration YANG Model

   <CODE BEGINS> file "ietf-detnet-flow-config.yang"
     module ietf-detnet-flow-config {
       namespace "urn:ietf:params:xml:ns:yang:ietf-detnet-flow-config";
       prefix "detnet";

       import ietf-yang-types {
         prefix "yang";
       }

       import ietf-interfaces {
         prefix "if";
       }

       import ietf-inet-types{
         prefix "inet";
       }

       import ietf-routing-types {
         prefix "rt-types";
       }

       organization "IETF DetNet Working Group";




Geng, et al.            Expires January 17, 2019               [Page 25]


Internet-Draft                DetNet Model                     July 2018


       contact
         "WG Web:   <http://tools.ietf.org/wg/detnet/>
          WG List:  <mailto: detnet@ietf.org>
          WG Chair: Lou Berger
                    <mailto:lberger@labn.net>
          Editor:  Xuesong Geng
                   <mailto:gengxuesong@huawei.com>
          Editor:  Mach Chen
                   <mailto:mach.chen@huawei.com>
          Editor:  Zhenqiang Li
                   <mailto:lizhenqiang@chinamobile.com>
          Editor:   Reshad Rahman
                   <mailto:rrahman@cisco.com>";
       description
         "This YAGN module describes the parameters needed
          for DetNet configuration";

       revision "2018-06-26" {
         description "Latest revision for ietf-detnet";
         reference
           "RFC XXXX: YANG Data Model for ietf-detnet";
       }

       identity detnet-node-type {
         description
           "base detnet-node-type";
       }

       identity detnet-edge-node-type {
         base detnet-node-type;
         description
           "An instance of a DetNet relay node that
            includes either a DetNet service layer proxy
            function for DetNet service protection (e.g.
            the addition or removal of packet sequencing
            information) for one or more end systems, or
            starts or terminate congestion protection at
            the DetNet transport layer,analogous to a
            Label Edge Router (LER).";
       }

       identity detnet-relay-node-type {
         base detnet-node-type;
         description
           "A DetNet node including a service layer
            function that interconnects different DetNet
            transport layer paths to provide service
            protection.A DetNet relay node can be a bridge,



Geng, et al.            Expires January 17, 2019               [Page 26]


Internet-Draft                DetNet Model                     July 2018


            a router, a firewall, or any other system that
            participates in the DetNet service layer. It
            typically incorporates DetNet transport layer
            functions as well, in which case it is
            collocated with a transit node.";
       }

       identity detnet-transit-node-type {
         base detnet-node-type;
         description
           "A node operating at the DetNet transport layer,
            that utilizes link layer and/or network layer
            switching across multiple links and/or
            sub-networks to provide paths for DetNet
            service layer functions.Optionally provides
            congestion protection over those paths.An MPLS
            LSR is an example of a DetNet transit node.";
       }

       identity detnet-transport-layer {
         description
           "The layer that optionally provides congestion
            protection for DetNet flows over paths provided
            by the underlying network.";
       }

       identity detnet-service-layer {
         description
           "The layer at which service protection is
            provided, either packet sequencing, replication,
            and elimination or packet encoding";
       }

       typedef segment-operation-type {
         type enumeration {
           enum replication {
             description
               "One of the Packet Replication and
                Elimination Function (PREF), which does
                the packet elimination
                processing of DetNet flow packets in
                edge or relay nodes.";
           }
           enum elimination {
             description
               "One of the Packet Replication and
                Elimination Function (PREF), which does
                the packet replication processing of



Geng, et al.            Expires January 17, 2019               [Page 27]


Internet-Draft                DetNet Model                     July 2018


                DetNet flow packets in
                edge or relay nodes.";
           }
           enum elimination-and-replication {
             description
               "One of the Packet Replication and
                Elimination Function (PREF), which does
                the packet elimination and replication
                processing of DetNet flow packets in
                edge or relay nodes.";
           }
         }
         description
           "";
       }
       grouping detnet-transport-instance{
         description
           "";
         container detnet-transport-instance{
           description
             "the contents of detnet transport instance
              depend on data plane solution of this detnet
              domain";
         }
       }

       grouping sequence-number-generation {
         description
           "";
         leaf bit-number{
           type uint32;
           description
             "";
         }
         leaf upper-bound {
           type uint32;
             description
               "";
         }
         leaf lower-bound {
           type uint32;
           description
             "";
         }
       }

       grouping in-segment-content {
         description



Geng, et al.            Expires January 17, 2019               [Page 28]


Internet-Draft                DetNet Model                     July 2018


           "in-segment grouping in the detnet service
            layer";
         list in-segments {
           key "in-segment-id";
           description
             "";
           leaf in-segment-id{
             type uint32;
             description
               "";
           }
           container function {
             description
               "";
           choice function-type{
             description
               "";
             case packet-replication-function{
               description
                 "PRF";
             }
             case packet-elimination-function{
               description
                 "PEF";
             }
             case packet-ordering-function{
               description
                 "POF";
             }
             case detnet-inter-working-function{
               description
                 "DN-IWF";
             }
           }
         }
         choice in-segment-type{
           description
             "";
           case non-detnet-in-segment{
              description
                "";
              container sequence-number-generation{
                description
                  "";
                uses sequence-number-generation;
              }
            }
            case detnet-in-segment{



Geng, et al.            Expires January 17, 2019               [Page 29]


Internet-Draft                DetNet Model                     July 2018


              description
                "";
              leaf incoming-interface {
                type if:interface-ref;
                description
                  "Name of the incoming interface.";
              }
              uses flow-identification;
            }
           }
         }
       }

       grouping out-segment-content{
         description
           "";
         container out-segment-list {
           description
             "";
           list out-segment{
             key "out-segment-id";
               description
                 "";
             leaf out-segment-id{
               type uint32;
               description
                 "";
             }
             leaf outgoing-interface {
               type if:interface-ref;
               description
                 "Name of the outgoing interface.";
             }
             uses flow-identification;
             container detnet-transport-instance{
               description
                 "";
               uses detnet-transport-instance;
             }
           }
         }
       }

       grouping segment-mapping-metadata{
         description
           "";
         leaf active {
           type boolean;



Geng, et al.            Expires January 17, 2019               [Page 30]


Internet-Draft                DetNet Model                     July 2018


           description
             "Whether the segment mapping base is active
              or not";
         }
         leaf last-updated {
           type yang:date-and-time;
           description
             "Time stamp of the last modification of the
              mapping. If the mapping was never modified,
              it is the time when the mapping was
              inserted into the RIB.";
         }
       }

       grouping detnet-service-instance{
         description
           "";
         container control-plane-protocal{
           description
               "";
           leaf name{
             type string;
             description
               "the name of the control plane protocal";
           }
         }
         container detnet-service-instance{
           description
             "";
           list segment-mapping{
             key "segment-mapping-id";
             description
               "";
             leaf segment-mapping-id{
               type uint32;
                 description
                   "";
             }
             uses segment-mapping-metadata;
             container in-segment{
               description
                 "";
               uses in-segment-content;
             }
             container out-segment{
               description
                 "";
               uses out-segment-content;



Geng, et al.            Expires January 17, 2019               [Page 31]


Internet-Draft                DetNet Model                     July 2018


             }
           }
         }
       }

       grouping flow-identification {
         description
           "DetNet flow identification";
         reference
           "draft-farkas-detnet-flow-information-model";
         container flow-identification{
           description
             "DetNet flow identification";
           leaf source-ip-address {
             type inet:ip-address;
             description
               "Source IP address";
           }
           leaf destination-ip-address {
             type inet:ip-address;
             description
               "Destination IP address";
           }
           leaf source-mac-address {
             type yang:mac-address;
             description
               "Source MAC address";
           }
           leaf destination-mac-address {
             type yang:mac-address;
             description
               "Destination MAC address";
           }
           leaf ipv6-flow-label {
             type uint32;
             description
               "ipv6 flow label";
           }
           leaf mpls-label {
             type rt-types:mpls-label;
             description
             "MPLS Label";
           }
         }
       }

       grouping traffic-specification{
         description



Geng, et al.            Expires January 17, 2019               [Page 32]


Internet-Draft                DetNet Model                     July 2018


           "traffic-specification specifies how the Source
            transmits packets for the flow.  This is the
            promise/request of the Source to the network.
            The network uses this traffic specification
            to allocate resources and adjust queue
            parameters in network nodes.";
         reference
           "draft-farkas-detnet-flow-information-model";
         leaf max-packets-per-interval{
           type uint16;
           description
             "max-packets-per-interval specifies the maximum
              number of packets that the application shall
              transmit in one Interval.";
         }
         leaf max-packet-size{
           type uint16;
           description
             "max-packet-size specifies maximum packet size
              that the Source will transmit";
         }
         leaf queuing-algorithm-selection{
           type uint8;
           description
             "";
         }
       }

       grouping client-flow{
         description
           "";
         leaf flow-id{
           type uint16;
           description
             "";
         }
         container flow-identification{
           description
             "";
           uses flow-identification;
         }
         container traffic-specification{
           description
             "";
           uses traffic-specification;
         }
       }




Geng, et al.            Expires January 17, 2019               [Page 33]


Internet-Draft                DetNet Model                     July 2018


       grouping detnet-service-proxy-instance{
         description
           "";
         container detnet-service-proxy-instance{
           description
             "";
           list flow-to-detnet-mappings{
             key "flow-to-detnet-mapping-id";
             description
               "";
             leaf flow-to-detnet-mapping-id{
               type uint16;
               description
                 "";
             }
             container client-flows{
               description
                 "";
               list client-flows{
                 key "client-flow-id";
                 description
                   "";
                 leaf client-flow-id{
                 type uint16;
                 description
                   "";
                 }
                 uses client-flow;
               }
             }
             uses detnet-service-instance;
           }
         }
       }

       /* Congfiguration Data */

       container detnet-config{
         description
           "";
         choice detnet-node-type{
           description
           "";
           case detnet-transit-node-type{
             description
               "";
             uses detnet-transport-instance;
           }



Geng, et al.            Expires January 17, 2019               [Page 34]


Internet-Draft                DetNet Model                     July 2018


           case detnet-relay-node-type{
             description
               "";
             uses detnet-service-instance;
           }
           case detnet-edge-node-type{
             description
               "";
             uses detnet-service-proxy-instance;
           }
         }
       }

       /* Status Data */

       container detnet-state{
         config "false";
         description
           "";
         choice detnet-node-type{
           description
           "";
           case detnet-transit-node-type{
             description
               "";
             uses detnet-transport-instance;
           }
           case detnet-relay-node-type{
             description
               "";
             uses detnet-service-instance;
           }
           case detnet-edge-node-type{
             description
               "";
             uses detnet-service-proxy-instance;
           }
         }
       }
     }
   <CODE ENDS>

7.3.  DetNet Device Configuration Yang Model

  <CODE BEGINS> file "ietf-detnet-device@2018-06-29.yang"
  module ietf-detnet-device {
    namespace "urn:ietf:params:xml:ns:yang:ietf-detnet-device";
    prefix "detnet-device";



Geng, et al.            Expires January 17, 2019               [Page 35]


Internet-Draft                DetNet Model                     July 2018


    organization "IETF DetNet Working Group";
    contact
      "WG Web:   <http://tools.ietf.org/wg/detnet/>
       WG List:  <mailto: detnet@ietf.org>
       WG Chair: Lou Berger
                 <mailto:lberger@labn.net>
       Editor:  Xuesong Geng
                <mailto:gengxuesong@huawei.com>
       Editor:  Mach Chen
                <mailto:mach.chen@huawei.com>
       Editor:  Zhenqiang Li
                <mailto:lizhenqiang@chinamobile.com>
       Editor:  Reshad Rahman
                <mailto:rrahman@cisco.com>";
       description
         "This YAGN module describes the parameters needed
          for DetNet configuration in device";
    revision "2018-06-29" {
      description
        "Latest revision for ietf-detnet-device";
      reference
        "RFC XXXX: YANG Data Model for ietf-detnet-device";
    }

    grouping detnet-device-parameters {
      description
        "Parameters of queuing, bandwidth on device.";
      leaf PEF-enabled {
        type boolean;
        description
          "A Packet Elimination Function (PEF) eliminates duplicate
           copies of packets to prevent excess packets flooding the
           network or duplicate packets being sent out of the DetNet
           domain.  PEF can be implemented by an edge node, a relay
           node, or an end system.";
      }
      leaf PRF-enabled {
        type boolean;
        description
          "A Packet Replication Function (PRF) replicates DetNet flow
           packets and forwards them to one or more next hops in the
           DetNet domain.  The number of packet copies sent to each next
           hop is a DetNet flow specific parameter at the node doing the
           replication.  PRF can be implemented by an edge node, a relay
           node, or an end system.";
      }
      leaf POF-enabled {
        type boolean;



Geng, et al.            Expires January 17, 2019               [Page 36]


Internet-Draft                DetNet Model                     July 2018


        description
          "A Packet Ordering Function (POF) re-orders packets within a
           DetNet flow that are received out of order.  This function
           can be implemented by an edge node, a relay node, or an end
           system.";
      }

      container detnet-interfaces {
        description
          "A list of interfaces that are DetNet enabled.";
      //Edior notes: This is heavily related to the YANG models
      //defined in IEEE Qcw project.
      }
    }

    container detnet-device-config {
      description
        "DetNet device configurations.";
      uses detnet-device-parameters;
    }

    container detnet-device-states {
      config false;
      description
        "DetNet device states.";
      uses detnet-device-parameters;
    }
  }
<CODE ENDS>

8.  DetNet Configuration Model Classification

   This section defines three classes of DetNet configuration model:
   fully distributed configuration model, fully centralized
   configuration model, hybrid configuration model, based on different
   network architectures, showing how configuration information
   exchanges between various entities in the network.

8.1.  Fully Distributed Configuration Model

   In a fully distributed configuration model, UNI information is
   transmitted over DetNet UNI protocol from the user side to the
   network side; then UNI information and network configuration
   information propagate in the network over distributed control plane
   protocol.  For example:

   1) IGP collects topology information and DetNet capabilities of
   network([I-D.geng-detnet-info-distribution]);



Geng, et al.            Expires January 17, 2019               [Page 37]


Internet-Draft                DetNet Model                     July 2018


   2) Control Plane of the Edge Node(Ingress) receives a flow
   establishment request from UNI and calculates a/some valid path(s);

   3) Using RSVP-TE, Edge Node(Ingress) sends a PATH message with
   explicit route.  After receiving the PATH message, the other Edge
   Node(Egress) sends a Resv message with distributed label and resource
   reservation request.

   Current distributed control plane protocol,e.g., RSVP-TE[RFC3209],
   SRP[IEEE802.1Qcc], can only reserve bandwidth along the path, while
   the configuration of a fine-grained schedule, e.g.,Time Aware
   Shaping(TAS) defined in [IEEE802.1Qbv], is not supported.

   The fully distributed configuration model is not covered by this
   draft.  It should be discussed in the future DetNet control plane
   work.

8.2.  Fully Centralized Configuration Model

   In the fully centralized configuration model, UNI information is
   transmitted from Centralized User Configuration (CUC) to Centralized
   Network Configuration(CNC).  Configurations of routers for DetNet
   flows are performed by CNC with network management protocol.For
   example:

   1) CNC collects topology information and DetNet capability of network
   through Netconf;

   2) CNC receives a flow establishment request from UNI and calculates
   a/some valid path(s);

   3) CNC configures the devices along the path for flow transmission.

8.3.  Hybrid Configuration Model

   In the hybrid configuration model, controller and control plane
   protocols work together to offer DetNet service, and there are a lot
   of possible combinations.  For example:

   1) CNC collects topology information and DetNet capability of network
   through IGP/BGP-LS;

   2) CNC receives a flow establishment request from UNI and calculates
   a/some valid path(s);

   3) Based on the calculation result, CNC distributes flow path
   information to Edge Node(Ingress) and other information(e.g.
   replication/elimination) to the relevant nodes.



Geng, et al.            Expires January 17, 2019               [Page 38]


Internet-Draft                DetNet Model                     July 2018


   4) Using RSVP-TE, Edge Node(Ingress) sends a PATH message with
   explicit route.  After receiving the PATH message, the other Edge
   Node(Egress) sends a Resv message with distributed label and resource
   reservation request.

   or

   1) Controller collects topology information and DetNet capability of
   network through IGP/BGP-LS;

   2) Control Plane of Edge Node(Ingress) receives a flow establishment
   request from UNI;

   3) Edge Node(Ingress) sends the path establishment request to CNC
   through PCEP;

   4) After Calculation, CNC sends back the path information of the flow
   to the Edge Node(Ingress) through PCEP;

   5) Using RSVP-TE, Edge Node(Ingress) sends a PATH message with
   explicit route.  After receiving the PATH message, the other Edge
   Node(Egress) sends a Resv message with distributed label and resource
   reservation request.

   There are also other variations that can be included in the hybrid
   model.  This draft can not coverer all the control plane data needed
   in hybrid configuration models.  Every solution has there own
   mechanism and corresponding parameters to make it work.

   Editor's Note:

   1.  There are a lot of optional DetNet configuration models, and
   different scenario in different use case can choose one of them based
   on its conditions.  Maybe next step of the work is to pick up one or
   more typical scenarios and give a practical solution.

   2.  [IEEE802.1Qcc] also defines three TSN configuration models:
   fully-centralized model, fully-distributed model, centralized Network
   / distributed User Model.  This section defines the configuration
   model roughly the same, to keep the design of L2 and L3 in the same
   structure.  Hybrid configuration model is slightly different from the
   'centralized Network / distributed User Model'.  The hybrid
   configuration model intends to contain more variations.








Geng, et al.            Expires January 17, 2019               [Page 39]


Internet-Draft                DetNet Model                     July 2018


9.  IANA Considerations

   This document makes no request of IANA.

   Note to RFC Editor: this section may be removed on publication as an
   RFC.

10.  Security Considerations

11.  Acknowledgements

12.  References

12.1.  Normative References

   [I-D.dt-detnet-dp-sol]
              Korhonen, J., Andersson, L., Jiang, Y., Finn, N., Varga,
              B., Farkas, J., Bernardos, C., Mizrahi, T., and L. Berger,
              "DetNet Data Plane Encapsulation", draft-dt-detnet-dp-
              sol-02 (work in progress), September 2017.

   [I-D.ietf-detnet-architecture]
              Finn, N., Thubert, P., Varga, B., and J. Farkas,
              "Deterministic Networking Architecture", draft-ietf-
              detnet-architecture-06 (work in progress), June 2018.

   [I-D.ietf-detnet-flow-information-model]
              Farkas, J., Varga, B., rodney.cummings@ni.com, r., Jiang,
              Y., and Y. Zha, "DetNet Flow Information Model", draft-
              ietf-detnet-flow-information-model-01 (work in progress),
              March 2018.

   [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>.

12.2.  Informative References

   [I-D.geng-detnet-info-distribution]
              Geng, X., Chen, M., and Z. Li, "IGP-TE Extensions for
              DetNet Information Distribution", draft-geng-detnet-info-
              distribution-02 (work in progress), March 2018.

   [I-D.ietf-detnet-use-cases]
              Grossman, E., "Deterministic Networking Use Cases", draft-
              ietf-detnet-use-cases-17 (work in progress), June 2018.




Geng, et al.            Expires January 17, 2019               [Page 40]


Internet-Draft                DetNet Model                     July 2018


   [I-D.ietf-teas-yang-te]
              Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and
              I. Bryskin, "A YANG Data Model for Traffic Engineering
              Tunnels and Interfaces", draft-ietf-teas-yang-te-16 (work
              in progress), July 2018.

   [I-D.ietf-teas-yang-te-topo]
              Liu, X., Bryskin, I., Beeram, V., Saad, T., Shah, H., and
              O. Dios, "YANG Data Model for Traffic Engineering (TE)
              Topologies", draft-ietf-teas-yang-te-topo-18 (work in
              progress), June 2018.

   [I-D.thubert-tsvwg-detnet-transport]
              Thubert, P., "A Transport Layer for Deterministic
              Networks", draft-thubert-tsvwg-detnet-transport-01 (work
              in progress), October 2017.

   [I-D.varga-detnet-service-model]
              Varga, B. and J. Farkas, "DetNet Service Model", draft-
              varga-detnet-service-model-02 (work in progress), May
              2017.

   [IEEE802.1CB]
              "IEEE, "Frame Replication and Elimination for Reliability
              (IEEE Draft P802.1CB)", 2017,
              <http://www.ieee802.org/1/files/private/cb-drafts/>.",
              2016.

   [IEEE802.1Q-2014]
              "IEEE, "IEEE Std 802.1Q Bridges and Bridged Networks",
              2014, <http://ieeexplore.ieee.org/document/6991462/>.",
              2014.

   [IEEE802.1Qbu]
              "IEEE, "IEEEE Std 802.1Qbu Bridges and Bridged Networks -
              Amendment 26: Frame Preemption", 2016,
              <http://ieeexplore.ieee.org/document/7553415/>.", 2016.

   [IEEE802.1Qbv]
              "IEEE, "IEEE Std 802.1Qbu Bridges and Bridged Networks -
              Amendment 25: Enhancements for Scheduled Traffic", 2015,
              <http://ieeexplore.ieee.org/document/7572858/>.", 2016.

   [IEEE802.1Qcc]
              "IEEE, "Stream Reservation Protocol (SRP) Enhancements and
              Performance Improvements (IEEE Draft P802.1Qcc)", 2017,
              <http://www.ieee802.org/1/files/private/cc-drafts/>.".




Geng, et al.            Expires January 17, 2019               [Page 41]


Internet-Draft                DetNet Model                     July 2018


   [IEEE802.1Qch]
              "IEEE, "Cyclic Queuing and Forwarding (IEEE Draft
              P802.1Qch)", 2017,
              <http://www.ieee802.org/1/files/private/ch-drafts/>.",
              2016.

   [IEEE802.1Qci]
              "IEEE, "Per-Stream Filtering and Policing (IEEE Draft
              P802.1Qci)", 2016,
              <http://www.ieee802.org/1/files/private/ci-drafts/>.",
              2016.

   [RFC3209]  Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V.,
              and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP
              Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001,
              <https://www.rfc-editor.org/info/rfc3209>.

   [RFC4875]  Aggarwal, R., Ed., Papadimitriou, D., Ed., and S.
              Yasukawa, Ed., "Extensions to Resource Reservation
              Protocol - Traffic Engineering (RSVP-TE) for Point-to-
              Multipoint TE Label Switched Paths (LSPs)", RFC 4875,
              DOI 10.17487/RFC4875, May 2007,
              <https://www.rfc-editor.org/info/rfc4875>.

Authors' Addresses

   Xuesong Geng
   Huawei

   Email: gengxuesong@huawei.com


   Mach(Guoyi) Chen
   Huawei

   Email: mach.chen@huawei.com


   Zhenqiang Li
   China Mobile

   Email: lizhenqiang@chinamobile.com


   Reshad Rahman
   Cisco Systems

   Email: rrahman@cisco.com



Geng, et al.            Expires January 17, 2019               [Page 42]