Network Working Group                                             X. Liu
Internet-Draft                                                     Jabil
Intended status: Standards Track                              I. Bryskin
Expires: September 2, 2018                           Huawei Technologies
                                                               V. Beeram
                                                        Juniper Networks
                                                                 T. Saad
                                                       Cisco Systems Inc
                                                                 H. Shah
                                                                   Ciena
                                                     O. Gonzalez de Dios
                                                              Telefonica
                                                           March 1, 2018


               YANG Data Model for Layer 3 TE Topologies
                   draft-ietf-teas-yang-l3-te-topo-01

Abstract

   This document defines a YANG data model for layer 3 traffic
   engineering topologies.

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 http://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 September 2, 2018.

Copyright Notice

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

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of



Liu, et al.             Expires September 2, 2018               [Page 1]


Internet-Draft             YANG L3 TE Topology                March 2018


   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
     1.1.  Terminology . . . . . . . . . . . . . . . . . . . . . . .   3
   2.  Modeling Considerations . . . . . . . . . . . . . . . . . . .   3
     2.1.  Relationship Between Layer 3 Topology and TE topology . .   3
     2.2.  Relationship Modeling . . . . . . . . . . . . . . . . . .   3
   3.  Model Structure . . . . . . . . . . . . . . . . . . . . . . .   3
     3.1.  Layer 3 TE Topology Module  . . . . . . . . . . . . . . .   3
     3.2.  Packet Switching TE Topology Module . . . . . . . . . . .   4
   4.  YANG Modules  . . . . . . . . . . . . . . . . . . . . . . . .  18
     4.1.  Layer 3 TE Topology Module  . . . . . . . . . . . . . . .  18
     4.2.  Packet Switching TE Topology Module . . . . . . . . . . .  22
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  27
   6.  Security Considerations . . . . . . . . . . . . . . . . . . .  28
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  28
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .  28
     7.2.  Informative References  . . . . . . . . . . . . . . . . .  29
   Appendix A.  Companion YANG Model for Non-NMDA Compliant
                Implementations  . . . . . . . . . . . . . . . . . .  30
     A.1.  Layer 3 TE Topology State Module  . . . . . . . . . . . .  30
     A.2.  Packet Switching TE Topology State Module . . . . . . . .  32
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  36

1.  Introduction

   This document defines a YANG [RFC7950] data model for describing the
   relationship between a layer 3 network topology
   [I-D.ietf-i2rs-yang-l3-topology] and a TE topology
   [I-D.ietf-teas-yang-te-topo].

   When traffic engineering is enabled on a layer 3 network topology,
   there will be a corresponding TE topology.  The TE topology may or
   may not be congruent to the layer 3 network topology.  When such a
   congruent TE topology exists, there will be a one-to-one association
   between the one modeling element in the layer 3 topology to another
   element in the TE topology.  When such a congruent TE topology does
   not exist, the association will not be one-to-one.  This YANG data
   model allows both cases.





Liu, et al.             Expires September 2, 2018               [Page 2]


Internet-Draft             YANG L3 TE Topology                March 2018


1.1.  Terminology

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

   The following terms are defined in [RFC7950] and are not redefined
   here:

   o  augment

   o  data model

   o  data node

2.  Modeling Considerations

2.1.  Relationship Between Layer 3 Topology and TE topology

   In general, layer 3 network topology model and TE topology model can
   be used independently.  When traffic engineering is enabled on a
   layer 3 network topology, there will be associations between objects
   in layer 3 network topologies and objects in TE topologies.  The
   properties of these relations are:

   o  The associations are between objects of the same class, i.e. node
      to node or link to link.

   o  The multiplicity of such an association is: 0..1 to 0..1.  An
      object in a layer 3 network may have zero or one associated object
      in the corresponding TE network.

2.2.  Relationship Modeling

   YANG data type leafref is used to model the association relationship
   between a layer 3 network topology and a TE topology.  YANG must
   statements are used to enforce the referenced objects are in the
   topologies of proper type.

3.  Model Structure

3.1.  Layer 3 TE Topology Module

   The model tree structure of the layer 3 TE topology module is as
   shown below:





Liu, et al.             Expires September 2, 2018               [Page 3]


Internet-Draft             YANG L3 TE Topology                March 2018


   module: ietf-l3-te-topology
     augment /nw:networks/nw:network/nw:network-types
   /l3t:l3-unicast-topology:
       +--rw l3-te!
     augment /nw:networks/nw:network/l3t:l3-topology-attributes:
       +--rw l3-te-topology-attributes
          +--rw network-ref?   -> /nw:networks/network/network-id
     augment /nw:networks/nw:network/nw:node/l3t:l3-node-attributes:
       +--rw l3-te-node-attributes
          +--rw node-ref?      -> /nw:networks
   /network[nw:network-id=current()/../network-ref]/node/node-id
          +--rw network-ref?   -> /nw:networks/network/network-id
     augment /nw:networks/nw:network/nw:node/nt:termination-point
   /l3t:l3-termination-point-attributes:
       +--rw l3-te-tp-attributes
          +--rw tp-ref?        -> /nw:networks
   /network[nw:network-id=current()/../network-ref]
   /node[nw:node-id=current()/../node-ref]/nt:termination-point/tp-id
          +--rw node-ref?      -> /nw:networks
   /network[nw:network-id=current()/../network-ref]/node/node-id
          +--rw network-ref?   -> /nw:networks/network/network-id
     augment /nw:networks/nw:network/nt:link/l3t:l3-link-attributes:
       +--rw l3-te-link-attributes
          +--rw link-ref?      -> /nw:networks
   /network[nw:network-id=current()/../network-ref]/nt:link/link-id
          +--rw network-ref?   -> /nw:networks/network/network-id


3.2.  Packet Switching TE Topology Module

   This is an augmentation to base TE topology model.

   module: ietf-te-topology-packet
     augment /nd:networks/nd:network/nd:node/tet:te
   /tet:te-node-attributes/tet:connectivity-matrices:
       +--rw performance-metric
          +--rw measurement
          |  +--rw unidirectional-delay?                 uint32
          |  +--rw unidirectional-min-delay?             uint32
          |  +--rw unidirectional-max-delay?             uint32
          |  +--rw unidirectional-delay-variation?       uint32
          |  +--rw unidirectional-packet-loss?           decimal64
          |  +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
          |  +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
          |  +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32



Liu, et al.             Expires September 2, 2018               [Page 4]


Internet-Draft             YANG L3 TE Topology                March 2018


          +--rw normality
          |  +--rw unidirectional-delay?
    te-types:performance-metric-normality
          |  +--rw unidirectional-min-delay?
    te-types:performance-metric-normality
          |  +--rw unidirectional-max-delay?
    te-types:performance-metric-normality
          |  +--rw unidirectional-delay-variation?
    te-types:performance-metric-normality
          |  +--rw unidirectional-packet-loss?
    te-types:performance-metric-normality
          |  +--rw unidirectional-residual-bandwidth?
    te-types:performance-metric-normality
          |  +--rw unidirectional-available-bandwidth?
    te-types:performance-metric-normality
          |  +--rw unidirectional-utilized-bandwidth?
    te-types:performance-metric-normality
          +--rw throttle
             +--rw unidirectional-delay-offset?           uint32
             +--rw measure-interval?                      uint32
             +--rw advertisement-interval?                uint32
             +--rw suppression-interval?                  uint32
             +--rw threshold-out
             |  +--rw unidirectional-delay?                 uint32
             |  +--rw unidirectional-min-delay?             uint32
             |  +--rw unidirectional-max-delay?             uint32
             |  +--rw unidirectional-delay-variation?       uint32
             |  +--rw unidirectional-packet-loss?           decimal64
             |  +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
             +--rw threshold-in
             |  +--rw unidirectional-delay?                 uint32
             |  +--rw unidirectional-min-delay?             uint32
             |  +--rw unidirectional-max-delay?             uint32
             |  +--rw unidirectional-delay-variation?       uint32
             |  +--rw unidirectional-packet-loss?           decimal64
             |  +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
             +--rw threshold-accelerated-advertisement
                +--rw unidirectional-delay?                 uint32



Liu, et al.             Expires September 2, 2018               [Page 5]


Internet-Draft             YANG L3 TE Topology                March 2018


                +--rw unidirectional-min-delay?             uint32
                +--rw unidirectional-max-delay?             uint32
                +--rw unidirectional-delay-variation?       uint32
                +--rw unidirectional-packet-loss?           decimal64
                +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
                +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
                +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
     augment /nd:networks/nd:network/nd:node/tet:te
   /tet:te-node-attributes/tet:connectivity-matrices
   /tet:connectivity-matrix:
       +--rw performance-metric
          +--rw measurement
          |  +--rw unidirectional-delay?                 uint32
          |  +--rw unidirectional-min-delay?             uint32
          |  +--rw unidirectional-max-delay?             uint32
          |  +--rw unidirectional-delay-variation?       uint32
          |  +--rw unidirectional-packet-loss?           decimal64
          |  +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
          |  +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
          |  +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
          +--rw normality
          |  +--rw unidirectional-delay?
    te-types:performance-metric-normality
          |  +--rw unidirectional-min-delay?
    te-types:performance-metric-normality
          |  +--rw unidirectional-max-delay?
    te-types:performance-metric-normality
          |  +--rw unidirectional-delay-variation?
    te-types:performance-metric-normality
          |  +--rw unidirectional-packet-loss?
    te-types:performance-metric-normality
          |  +--rw unidirectional-residual-bandwidth?
    te-types:performance-metric-normality
          |  +--rw unidirectional-available-bandwidth?
    te-types:performance-metric-normality
          |  +--rw unidirectional-utilized-bandwidth?
    te-types:performance-metric-normality
          +--rw throttle
             +--rw unidirectional-delay-offset?           uint32
             +--rw measure-interval?                      uint32
             +--rw advertisement-interval?                uint32
             +--rw suppression-interval?                  uint32



Liu, et al.             Expires September 2, 2018               [Page 6]


Internet-Draft             YANG L3 TE Topology                March 2018


             +--rw threshold-out
             |  +--rw unidirectional-delay?                 uint32
             |  +--rw unidirectional-min-delay?             uint32
             |  +--rw unidirectional-max-delay?             uint32
             |  +--rw unidirectional-delay-variation?       uint32
             |  +--rw unidirectional-packet-loss?           decimal64
             |  +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
             +--rw threshold-in
             |  +--rw unidirectional-delay?                 uint32
             |  +--rw unidirectional-min-delay?             uint32
             |  +--rw unidirectional-max-delay?             uint32
             |  +--rw unidirectional-delay-variation?       uint32
             |  +--rw unidirectional-packet-loss?           decimal64
             |  +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
             +--rw threshold-accelerated-advertisement
                +--rw unidirectional-delay?                 uint32
                +--rw unidirectional-min-delay?             uint32
                +--rw unidirectional-max-delay?             uint32
                +--rw unidirectional-delay-variation?       uint32
                +--rw unidirectional-packet-loss?           decimal64
                +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
                +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
                +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
     augment /nd:networks/nd:network/nd:node/tet:te
   /tet:information-source-entry/tet:connectivity-matrices:
       +--ro performance-metric
          +--ro measurement
          |  +--ro unidirectional-delay?                 uint32
          |  +--ro unidirectional-min-delay?             uint32
          |  +--ro unidirectional-max-delay?             uint32
          |  +--ro unidirectional-delay-variation?       uint32
          |  +--ro unidirectional-packet-loss?           decimal64
          |  +--ro unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
          |  +--ro unidirectional-available-bandwidth?



Liu, et al.             Expires September 2, 2018               [Page 7]


Internet-Draft             YANG L3 TE Topology                March 2018


    rt-types:bandwidth-ieee-float32
          |  +--ro unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
          +--ro normality
          |  +--ro unidirectional-delay?
    te-types:performance-metric-normality
          |  +--ro unidirectional-min-delay?
    te-types:performance-metric-normality
          |  +--ro unidirectional-max-delay?
    te-types:performance-metric-normality
          |  +--ro unidirectional-delay-variation?
    te-types:performance-metric-normality
          |  +--ro unidirectional-packet-loss?
    te-types:performance-metric-normality
          |  +--ro unidirectional-residual-bandwidth?
    te-types:performance-metric-normality
          |  +--ro unidirectional-available-bandwidth?
    te-types:performance-metric-normality
          |  +--ro unidirectional-utilized-bandwidth?
    te-types:performance-metric-normality
          +--ro throttle
             +--ro unidirectional-delay-offset?           uint32
             +--ro measure-interval?                      uint32
             +--ro advertisement-interval?                uint32
             +--ro suppression-interval?                  uint32
             +--ro threshold-out
             |  +--ro unidirectional-delay?                 uint32
             |  +--ro unidirectional-min-delay?             uint32
             |  +--ro unidirectional-max-delay?             uint32
             |  +--ro unidirectional-delay-variation?       uint32
             |  +--ro unidirectional-packet-loss?           decimal64
             |  +--ro unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--ro unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--ro unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
             +--ro threshold-in
             |  +--ro unidirectional-delay?                 uint32
             |  +--ro unidirectional-min-delay?             uint32
             |  +--ro unidirectional-max-delay?             uint32
             |  +--ro unidirectional-delay-variation?       uint32
             |  +--ro unidirectional-packet-loss?           decimal64
             |  +--ro unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--ro unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--ro unidirectional-utilized-bandwidth?



Liu, et al.             Expires September 2, 2018               [Page 8]


Internet-Draft             YANG L3 TE Topology                March 2018


    rt-types:bandwidth-ieee-float32
             +--ro threshold-accelerated-advertisement
                +--ro unidirectional-delay?                 uint32
                +--ro unidirectional-min-delay?             uint32
                +--ro unidirectional-max-delay?             uint32
                +--ro unidirectional-delay-variation?       uint32
                +--ro unidirectional-packet-loss?           decimal64
                +--ro unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
                +--ro unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
                +--ro unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
     augment /nd:networks/nd:network/nd:node/tet:te
   /tet:information-source-entry/tet:connectivity-matrices
   /tet:connectivity-matrix:
       +--ro performance-metric
          +--ro measurement
          |  +--ro unidirectional-delay?                 uint32
          |  +--ro unidirectional-min-delay?             uint32
          |  +--ro unidirectional-max-delay?             uint32
          |  +--ro unidirectional-delay-variation?       uint32
          |  +--ro unidirectional-packet-loss?           decimal64
          |  +--ro unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
          |  +--ro unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
          |  +--ro unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
          +--ro normality
          |  +--ro unidirectional-delay?
    te-types:performance-metric-normality
          |  +--ro unidirectional-min-delay?
    te-types:performance-metric-normality
          |  +--ro unidirectional-max-delay?
    te-types:performance-metric-normality
          |  +--ro unidirectional-delay-variation?
    te-types:performance-metric-normality
          |  +--ro unidirectional-packet-loss?
    te-types:performance-metric-normality
          |  +--ro unidirectional-residual-bandwidth?
    te-types:performance-metric-normality
          |  +--ro unidirectional-available-bandwidth?
    te-types:performance-metric-normality
          |  +--ro unidirectional-utilized-bandwidth?
    te-types:performance-metric-normality
          +--ro throttle
             +--ro unidirectional-delay-offset?           uint32



Liu, et al.             Expires September 2, 2018               [Page 9]


Internet-Draft             YANG L3 TE Topology                March 2018


             +--ro measure-interval?                      uint32
             +--ro advertisement-interval?                uint32
             +--ro suppression-interval?                  uint32
             +--ro threshold-out
             |  +--ro unidirectional-delay?                 uint32
             |  +--ro unidirectional-min-delay?             uint32
             |  +--ro unidirectional-max-delay?             uint32
             |  +--ro unidirectional-delay-variation?       uint32
             |  +--ro unidirectional-packet-loss?           decimal64
             |  +--ro unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--ro unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--ro unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
             +--ro threshold-in
             |  +--ro unidirectional-delay?                 uint32
             |  +--ro unidirectional-min-delay?             uint32
             |  +--ro unidirectional-max-delay?             uint32
             |  +--ro unidirectional-delay-variation?       uint32
             |  +--ro unidirectional-packet-loss?           decimal64
             |  +--ro unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--ro unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--ro unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
             +--ro threshold-accelerated-advertisement
                +--ro unidirectional-delay?                 uint32
                +--ro unidirectional-min-delay?             uint32
                +--ro unidirectional-max-delay?             uint32
                +--ro unidirectional-delay-variation?       uint32
                +--ro unidirectional-packet-loss?           decimal64
                +--ro unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
                +--ro unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
                +--ro unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
     augment /nd:networks/nd:network/nd:node/tet:te
   /tet:tunnel-termination-point/tet:local-link-connectivities:
       +--rw performance-metric
          +--rw measurement
          |  +--rw unidirectional-delay?                 uint32
          |  +--rw unidirectional-min-delay?             uint32
          |  +--rw unidirectional-max-delay?             uint32
          |  +--rw unidirectional-delay-variation?       uint32
          |  +--rw unidirectional-packet-loss?           decimal64



Liu, et al.             Expires September 2, 2018              [Page 10]


Internet-Draft             YANG L3 TE Topology                March 2018


          |  +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
          |  +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
          |  +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
          +--rw normality
          |  +--rw unidirectional-delay?
    te-types:performance-metric-normality
          |  +--rw unidirectional-min-delay?
    te-types:performance-metric-normality
          |  +--rw unidirectional-max-delay?
    te-types:performance-metric-normality
          |  +--rw unidirectional-delay-variation?
    te-types:performance-metric-normality
          |  +--rw unidirectional-packet-loss?
    te-types:performance-metric-normality
          |  +--rw unidirectional-residual-bandwidth?
    te-types:performance-metric-normality
          |  +--rw unidirectional-available-bandwidth?
    te-types:performance-metric-normality
          |  +--rw unidirectional-utilized-bandwidth?
    te-types:performance-metric-normality
          +--rw throttle
             +--rw unidirectional-delay-offset?           uint32
             +--rw measure-interval?                      uint32
             +--rw advertisement-interval?                uint32
             +--rw suppression-interval?                  uint32
             +--rw threshold-out
             |  +--rw unidirectional-delay?                 uint32
             |  +--rw unidirectional-min-delay?             uint32
             |  +--rw unidirectional-max-delay?             uint32
             |  +--rw unidirectional-delay-variation?       uint32
             |  +--rw unidirectional-packet-loss?           decimal64
             |  +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
             +--rw threshold-in
             |  +--rw unidirectional-delay?                 uint32
             |  +--rw unidirectional-min-delay?             uint32
             |  +--rw unidirectional-max-delay?             uint32
             |  +--rw unidirectional-delay-variation?       uint32
             |  +--rw unidirectional-packet-loss?           decimal64
             |  +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32



Liu, et al.             Expires September 2, 2018              [Page 11]


Internet-Draft             YANG L3 TE Topology                March 2018


             |  +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
             +--rw threshold-accelerated-advertisement
                +--rw unidirectional-delay?                 uint32
                +--rw unidirectional-min-delay?             uint32
                +--rw unidirectional-max-delay?             uint32
                +--rw unidirectional-delay-variation?       uint32
                +--rw unidirectional-packet-loss?           decimal64
                +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
                +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
                +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
     augment /nd:networks/nd:network/nd:node/tet:te
   /tet:tunnel-termination-point/tet:local-link-connectivities
   /tet:local-link-connectivity:
       +--rw performance-metric
          +--rw measurement
          |  +--rw unidirectional-delay?                 uint32
          |  +--rw unidirectional-min-delay?             uint32
          |  +--rw unidirectional-max-delay?             uint32
          |  +--rw unidirectional-delay-variation?       uint32
          |  +--rw unidirectional-packet-loss?           decimal64
          |  +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
          |  +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
          |  +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
          +--rw normality
          |  +--rw unidirectional-delay?
    te-types:performance-metric-normality
          |  +--rw unidirectional-min-delay?
    te-types:performance-metric-normality
          |  +--rw unidirectional-max-delay?
    te-types:performance-metric-normality
          |  +--rw unidirectional-delay-variation?
    te-types:performance-metric-normality
          |  +--rw unidirectional-packet-loss?
    te-types:performance-metric-normality
          |  +--rw unidirectional-residual-bandwidth?
    te-types:performance-metric-normality
          |  +--rw unidirectional-available-bandwidth?
    te-types:performance-metric-normality
          |  +--rw unidirectional-utilized-bandwidth?



Liu, et al.             Expires September 2, 2018              [Page 12]


Internet-Draft             YANG L3 TE Topology                March 2018


    te-types:performance-metric-normality
          +--rw throttle
             +--rw unidirectional-delay-offset?           uint32
             +--rw measure-interval?                      uint32
             +--rw advertisement-interval?                uint32
             +--rw suppression-interval?                  uint32
             +--rw threshold-out
             |  +--rw unidirectional-delay?                 uint32
             |  +--rw unidirectional-min-delay?             uint32
             |  +--rw unidirectional-max-delay?             uint32
             |  +--rw unidirectional-delay-variation?       uint32
             |  +--rw unidirectional-packet-loss?           decimal64
             |  +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
             +--rw threshold-in
             |  +--rw unidirectional-delay?                 uint32
             |  +--rw unidirectional-min-delay?             uint32
             |  +--rw unidirectional-max-delay?             uint32
             |  +--rw unidirectional-delay-variation?       uint32
             |  +--rw unidirectional-packet-loss?           decimal64
             |  +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
             +--rw threshold-accelerated-advertisement
                +--rw unidirectional-delay?                 uint32
                +--rw unidirectional-min-delay?             uint32
                +--rw unidirectional-max-delay?             uint32
                +--rw unidirectional-delay-variation?       uint32
                +--rw unidirectional-packet-loss?           decimal64
                +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
                +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
                +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
     augment /nd:networks/tet:te/tet:templates/tet:link-template
   /tet:te-link-attributes:
       +--rw performance-metric
          +--rw measurement
          |  +--rw unidirectional-delay?                 uint32
          |  +--rw unidirectional-min-delay?             uint32



Liu, et al.             Expires September 2, 2018              [Page 13]


Internet-Draft             YANG L3 TE Topology                March 2018


          |  +--rw unidirectional-max-delay?             uint32
          |  +--rw unidirectional-delay-variation?       uint32
          |  +--rw unidirectional-packet-loss?           decimal64
          |  +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
          |  +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
          |  +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
          +--rw normality
          |  +--rw unidirectional-delay?
    te-types:performance-metric-normality
          |  +--rw unidirectional-min-delay?
    te-types:performance-metric-normality
          |  +--rw unidirectional-max-delay?
    te-types:performance-metric-normality
          |  +--rw unidirectional-delay-variation?
    te-types:performance-metric-normality
          |  +--rw unidirectional-packet-loss?
    te-types:performance-metric-normality
          |  +--rw unidirectional-residual-bandwidth?
    te-types:performance-metric-normality
          |  +--rw unidirectional-available-bandwidth?
    te-types:performance-metric-normality
          |  +--rw unidirectional-utilized-bandwidth?
    te-types:performance-metric-normality
          +--rw throttle
             +--rw unidirectional-delay-offset?           uint32
             +--rw measure-interval?                      uint32
             +--rw advertisement-interval?                uint32
             +--rw suppression-interval?                  uint32
             +--rw threshold-out
             |  +--rw unidirectional-delay?                 uint32
             |  +--rw unidirectional-min-delay?             uint32
             |  +--rw unidirectional-max-delay?             uint32
             |  +--rw unidirectional-delay-variation?       uint32
             |  +--rw unidirectional-packet-loss?           decimal64
             |  +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
             +--rw threshold-in
             |  +--rw unidirectional-delay?                 uint32
             |  +--rw unidirectional-min-delay?             uint32
             |  +--rw unidirectional-max-delay?             uint32
             |  +--rw unidirectional-delay-variation?       uint32



Liu, et al.             Expires September 2, 2018              [Page 14]


Internet-Draft             YANG L3 TE Topology                March 2018


             |  +--rw unidirectional-packet-loss?           decimal64
             |  +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
             +--rw threshold-accelerated-advertisement
                +--rw unidirectional-delay?                 uint32
                +--rw unidirectional-min-delay?             uint32
                +--rw unidirectional-max-delay?             uint32
                +--rw unidirectional-delay-variation?       uint32
                +--rw unidirectional-packet-loss?           decimal64
                +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
                +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
                +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
     augment /nd:networks/nd:network/lnk:link/tet:te
   /tet:te-link-attributes:
       +--rw performance-metric
          +--rw measurement
          |  +--rw unidirectional-delay?                 uint32
          |  +--rw unidirectional-min-delay?             uint32
          |  +--rw unidirectional-max-delay?             uint32
          |  +--rw unidirectional-delay-variation?       uint32
          |  +--rw unidirectional-packet-loss?           decimal64
          |  +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
          |  +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
          |  +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
          +--rw normality
          |  +--rw unidirectional-delay?
    te-types:performance-metric-normality
          |  +--rw unidirectional-min-delay?
    te-types:performance-metric-normality
          |  +--rw unidirectional-max-delay?
    te-types:performance-metric-normality
          |  +--rw unidirectional-delay-variation?
    te-types:performance-metric-normality
          |  +--rw unidirectional-packet-loss?
    te-types:performance-metric-normality
          |  +--rw unidirectional-residual-bandwidth?
    te-types:performance-metric-normality
          |  +--rw unidirectional-available-bandwidth?



Liu, et al.             Expires September 2, 2018              [Page 15]


Internet-Draft             YANG L3 TE Topology                March 2018


    te-types:performance-metric-normality
          |  +--rw unidirectional-utilized-bandwidth?
    te-types:performance-metric-normality
          +--rw throttle
             +--rw unidirectional-delay-offset?           uint32
             +--rw measure-interval?                      uint32
             +--rw advertisement-interval?                uint32
             +--rw suppression-interval?                  uint32
             +--rw threshold-out
             |  +--rw unidirectional-delay?                 uint32
             |  +--rw unidirectional-min-delay?             uint32
             |  +--rw unidirectional-max-delay?             uint32
             |  +--rw unidirectional-delay-variation?       uint32
             |  +--rw unidirectional-packet-loss?           decimal64
             |  +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
             +--rw threshold-in
             |  +--rw unidirectional-delay?                 uint32
             |  +--rw unidirectional-min-delay?             uint32
             |  +--rw unidirectional-max-delay?             uint32
             |  +--rw unidirectional-delay-variation?       uint32
             |  +--rw unidirectional-packet-loss?           decimal64
             |  +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
             +--rw threshold-accelerated-advertisement
                +--rw unidirectional-delay?                 uint32
                +--rw unidirectional-min-delay?             uint32
                +--rw unidirectional-max-delay?             uint32
                +--rw unidirectional-delay-variation?       uint32
                +--rw unidirectional-packet-loss?           decimal64
                +--rw unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
                +--rw unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
                +--rw unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
     augment /nd:networks/nd:network/lnk:link/tet:te
   /tet:information-source-entry:
       +--ro performance-metric
          +--ro measurement



Liu, et al.             Expires September 2, 2018              [Page 16]


Internet-Draft             YANG L3 TE Topology                March 2018


          |  +--ro unidirectional-delay?                 uint32
          |  +--ro unidirectional-min-delay?             uint32
          |  +--ro unidirectional-max-delay?             uint32
          |  +--ro unidirectional-delay-variation?       uint32
          |  +--ro unidirectional-packet-loss?           decimal64
          |  +--ro unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
          |  +--ro unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
          |  +--ro unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
          +--ro normality
          |  +--ro unidirectional-delay?
    te-types:performance-metric-normality
          |  +--ro unidirectional-min-delay?
    te-types:performance-metric-normality
          |  +--ro unidirectional-max-delay?
    te-types:performance-metric-normality
          |  +--ro unidirectional-delay-variation?
    te-types:performance-metric-normality
          |  +--ro unidirectional-packet-loss?
    te-types:performance-metric-normality
          |  +--ro unidirectional-residual-bandwidth?
    te-types:performance-metric-normality
          |  +--ro unidirectional-available-bandwidth?
    te-types:performance-metric-normality
          |  +--ro unidirectional-utilized-bandwidth?
    te-types:performance-metric-normality
          +--ro throttle
             +--ro unidirectional-delay-offset?           uint32
             +--ro measure-interval?                      uint32
             +--ro advertisement-interval?                uint32
             +--ro suppression-interval?                  uint32
             +--ro threshold-out
             |  +--ro unidirectional-delay?                 uint32
             |  +--ro unidirectional-min-delay?             uint32
             |  +--ro unidirectional-max-delay?             uint32
             |  +--ro unidirectional-delay-variation?       uint32
             |  +--ro unidirectional-packet-loss?           decimal64
             |  +--ro unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--ro unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--ro unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
             +--ro threshold-in
             |  +--ro unidirectional-delay?                 uint32
             |  +--ro unidirectional-min-delay?             uint32



Liu, et al.             Expires September 2, 2018              [Page 17]


Internet-Draft             YANG L3 TE Topology                March 2018


             |  +--ro unidirectional-max-delay?             uint32
             |  +--ro unidirectional-delay-variation?       uint32
             |  +--ro unidirectional-packet-loss?           decimal64
             |  +--ro unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--ro unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
             |  +--ro unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
             +--ro threshold-accelerated-advertisement
                +--ro unidirectional-delay?                 uint32
                +--ro unidirectional-min-delay?             uint32
                +--ro unidirectional-max-delay?             uint32
                +--ro unidirectional-delay-variation?       uint32
                +--ro unidirectional-packet-loss?           decimal64
                +--ro unidirectional-residual-bandwidth?
    rt-types:bandwidth-ieee-float32
                +--ro unidirectional-available-bandwidth?
    rt-types:bandwidth-ieee-float32
                +--ro unidirectional-utilized-bandwidth?
    rt-types:bandwidth-ieee-float32
     augment /nd:networks/tet:te/tet:templates/tet:link-template
   /tet:te-link-attributes/tet:interface-switching-capability:
       +--rw packet-switch-capable
          +--rw minimum-lsp-bandwidth?   rt-types:bandwidth-ieee-float32
          +--rw interface-mtu?           uint16
     augment /nd:networks/nd:network/lnk:link/tet:te
   /tet:te-link-attributes/tet:interface-switching-capability:
       +--rw packet-switch-capable
          +--rw minimum-lsp-bandwidth?   rt-types:bandwidth-ieee-float32
          +--rw interface-mtu?           uint16
     augment /nd:networks/nd:network/lnk:link/tet:te
   /tet:information-source-entry/tet:interface-switching-capability:
       +--ro packet-switch-capable
          +--ro minimum-lsp-bandwidth?   rt-types:bandwidth-ieee-float32
          +--ro interface-mtu?           uint16


4.  YANG Modules

4.1.  Layer 3 TE Topology Module


   <CODE BEGINS> file "ietf-l3-te-topology@2018-02-28.yang"
   module ietf-l3-te-topology {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-l3-te-topology";
     prefix "l3tet";



Liu, et al.             Expires September 2, 2018              [Page 18]


Internet-Draft             YANG L3 TE Topology                March 2018


     import ietf-network {
       prefix "nw";
     }
     import ietf-network-topology {
       prefix "nt";
     }
     import ietf-l3-unicast-topology {
       prefix "l3t";
     }
     import ietf-te-topology {
       prefix "tet";
     }

     organization "TBD";
     contact "TBD";
     description "L3 TE Topology model";

     revision 2018-02-28 {

       description "Initial revision";
       reference "TBD";
     }

     grouping l3-te-topology-type {
       description
         "Identifies the L3 TE topology type.";
       container l3-te {
         presence "indiates L3 TE Topology";
         description
           "Its presence identifies the L3 TE topology type.";
       }
     }

     augment "/nw:networks/nw:network/nw:network-types/"
       + "l3t:l3-unicast-topology" {
       description
         "Defines the L3 TE topology type.";
       uses l3-te-topology-type;
     }

     augment "/nw:networks/nw:network/l3t:l3-topology-attributes" {
       when "../nw:network-types/l3t:l3-unicast-topology/l3tet:l3-te" {
         description "Augment only for L3 TE topology";
       }
       description "Augment topology configuration";
       uses l3-te-topology-attributes;
     }




Liu, et al.             Expires September 2, 2018              [Page 19]


Internet-Draft             YANG L3 TE Topology                March 2018


     augment "/nw:networks/nw:network/nw:node/l3t:l3-node-attributes" {
       when "../../nw:network-types/l3t:l3-unicast-topology/"
         + "l3tet:l3-te" {
         description "Augment only for L3 TE topology";
       }
       description "Augment node configuration";
       uses l3-te-node-attributes;
     }

     augment "/nw:networks/nw:network/nw:node/nt:termination-point/"
       + "l3t:l3-termination-point-attributes" {
       when "../../../nw:network-types/l3t:l3-unicast-topology/"
         + "l3tet:l3-te" {
         description "Augment only for L3 TE topology";
       }
       description "Augment termination point configuration";
       uses l3-te-tp-attributes;
     }

     augment "/nw:networks/nw:network/nt:link/l3t:l3-link-attributes" {
       when "../../nw:network-types/l3t:l3-unicast-topology/"
         + "l3tet:l3-te" {
         description "Augment only for L3 TE topology";
       }
       description "Augment link configuration";
       uses l3-te-link-attributes;
     }

     grouping l3-te-topology-attributes {
       description "L3 TE topology scope attributes";
       container l3-te-topology-attributes {
         must "/nw:networks/nw:network"
           + "[nw:network-id = current()/network-ref]/nw:network-types/"
           + "tet:te-topology" {
           error-message
             "The referenced network must be a TE topology.";
           description
             "The referenced network must be a TE topology.";
         }
         description "Containing TE topology references";
         uses nw:network-ref;
       } // l3-te-topology-attributes
     } // l3-te-topology-attributes

     grouping l3-te-node-attributes {
       description "L3 TE node scope attributes";
       container l3-te-node-attributes {
         must "/nw:networks/nw:network"



Liu, et al.             Expires September 2, 2018              [Page 20]


Internet-Draft             YANG L3 TE Topology                March 2018


           + "[nw:network-id = current()/network-ref]/nw:network-types/"
           + "tet:te-topology" {
           error-message
             "The referenced network must be a TE topology.";
           description
             "The referenced network must be a TE topology.";
         }
         description "Containing TE node references";
         uses nw:node-ref;
       } // l3-te
     } // l3-te-node-attributes

     grouping l3-te-tp-attributes {
       description "L3 TE termination point scope attributes";
       container l3-te-tp-attributes {
         must "/nw:networks/nw:network"
           + "[nw:network-id = current()/network-ref]/nw:network-types/"
           + "tet:te-topology" {
           error-message
             "The referenced network must be a TE topology.";
           description
             "The referenced network must be a TE topology.";
         }
         description "Containing TE termination point references";
         uses nt:tp-ref;
       } // l3-te
     } // l3-te-tp-attributes

     grouping l3-te-link-attributes {
       description "L3 TE link scope attributes";
       container l3-te-link-attributes {
         must "/nw:networks/nw:network"
           + "[nw:network-id = current()/network-ref]/nw:network-types/"
           + "tet:te-topology" {
           error-message
             "The referenced network must be a TE topology.";
           description
             "The referenced network must be a TE topology.";
         }
         description "Containing TE link references";
         uses nt:link-ref;
       }
     } // l3-te-link-attributes
   }
   <CODE ENDS>






Liu, et al.             Expires September 2, 2018              [Page 21]


Internet-Draft             YANG L3 TE Topology                March 2018


4.2.  Packet Switching TE Topology Module


   <CODE BEGINS> file "ietf-te-topology-packet@2017-10-29.yang"
   module ietf-te-topology-packet {
     yang-version 1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-te-topology-packet";

     prefix "tet-pkt";

     import ietf-network {
       prefix "nd";
     }

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

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

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

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

     organization
       "Traffic Engineering Architecture and Signaling (TEAS)
        Working Group";

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

        WG Chair: Lou Berger
                  <mailto:lberger@labn.net>

        WG Chair: Vishnu Pavan Beeram
                  <mailto:vbeeram@juniper.net>

        Editors:  Xufeng Liu
                  <mailto:Xufeng_Liu@jabil.com>

                  Igor Bryskin



Liu, et al.             Expires September 2, 2018              [Page 22]


Internet-Draft             YANG L3 TE Topology                March 2018


                  <mailto:Igor.Bryskin@huawei.com>

                  Vishnu Pavan Beeram
                  <mailto:vbeeram@juniper.net>

                  Tarek Saad
                  <mailto:tsaad@cisco.com>

                  Himanshu Shah
                  <mailto:hshah@ciena.com>

                  Oscar Gonzalez De Dios
                  <mailto:oscar.gonzalezdedios@telefonica.com>";

     description "TE topology model";

     revision 2017-10-29 {
       description "Initial revision";
       reference "TBD";
     }

     /*
      * Features
      */

     feature te-performance-metric {
       description
         "This feature indicates that the system supports
          TE performance metric.";
       reference
         "RFC7471: OSPF Traffic Engineering (TE) Metric Extensions.
          RFC7810: IS-IS Traffic Engineering (TE) Metric Extensions.
          RFC7823: Performance-Based Path Selection for Explicitly
          Routed Label Switched Paths (LSPs) Using TE Metric
          Extensions";
     }

     /*
      * Groupings
      */
     grouping packet-switch-capable-container {
       description
         "The container of packet switch capable attributes.";
       container packet-switch-capable {
         description
           "Interface has packet-switching capabilities.";
         leaf minimum-lsp-bandwidth {
           type rt-types:bandwidth-ieee-float32;



Liu, et al.             Expires September 2, 2018              [Page 23]


Internet-Draft             YANG L3 TE Topology                March 2018


           description
             "Minimum LSP Bandwidth. Units in bytes per second";
         }
         leaf interface-mtu {
           type uint16;
           description
             "Interface MTU.";
         }
       }
     }



     /*
      * Augmentations
      */
     /* Augmentations to connectivity-matrix */
     augment "/nd:networks/nd:network/nd:node/tet:te/"
       + "tet:te-node-attributes/tet:connectivity-matrices" {
       description
         "Parameters for PSC TE topology.";
       uses te-types:performance-metric-container {
         if-feature te-performance-metric;
       }
     }

     augment "/nd:networks/nd:network/nd:node/tet:te/"
           + "tet:te-node-attributes/tet:connectivity-matrices/"
           + "tet:connectivity-matrix" {
       description
         "Parameters for PSC TE topology.";
       uses te-types:performance-metric-container {
         if-feature te-performance-metric;
       }
     }

     augment "/nd:networks/nd:network/nd:node/tet:te/"
           + "tet:information-source-entry/tet:connectivity-matrices" {
       description
         "Parameters for PSC TE topology.";
       uses te-types:performance-metric-container {
         if-feature te-performance-metric;
       }
     }

     augment "/nd:networks/nd:network/nd:node/tet:te/"
           + "tet:information-source-entry/tet:connectivity-matrices/"
           + "tet:connectivity-matrix" {



Liu, et al.             Expires September 2, 2018              [Page 24]


Internet-Draft             YANG L3 TE Topology                March 2018


       description
         "Parameters for PSC TE topology.";
       uses te-types:performance-metric-container {
         if-feature te-performance-metric;
       }
     }

     /* Augmentations to tunnel-termination-point */
     augment "/nd:networks/nd:network/nd:node/tet:te/"
           + "tet:tunnel-termination-point/"
           + "tet:local-link-connectivities" {
       description
         "Parameters for PSC TE topology.";
       uses te-types:performance-metric-container {
         if-feature te-performance-metric;
       }
     }

     augment "/nd:networks/nd:network/nd:node/tet:te/"
           + "tet:tunnel-termination-point/"
           + "tet:local-link-connectivities/"
           + "tet:local-link-connectivity" {
       description
         "Parameters for PSC TE topology.";
       uses te-types:performance-metric-container {
         if-feature te-performance-metric;
       }
     }

     /* Augmentations to te-link-attributes */
     augment "/nd:networks/tet:te/tet:templates/"
           + "tet:link-template/tet:te-link-attributes" {
       when "tet:interface-switching-capability "
         + "[tet:switching-capability = 'te-types:switching-psc1']" {
         description "Valid only for PSC";
       }
       description
         "Parameters for PSC TE topology.";
       uses te-types:performance-metric-container {
         if-feature te-performance-metric;
       }
     }

     augment "/nd:networks/nd:network/lnk:link/tet:te/"
           + "tet:te-link-attributes" {
       when "tet:interface-switching-capability "
         + "[tet:switching-capability = 'te-types:switching-psc1']" {
         description "Valid only for PSC";



Liu, et al.             Expires September 2, 2018              [Page 25]


Internet-Draft             YANG L3 TE Topology                March 2018


       }
       description
         "Parameters for PSC TE topology.";
       uses te-types:performance-metric-container {
         if-feature te-performance-metric;
       }
     }

     augment "/nd:networks/nd:network/lnk:link/tet:te/"
           + "tet:information-source-entry" {
       when "tet:interface-switching-capability "
         + "[tet:switching-capability = 'te-types:switching-psc1']" {
         description "Valid only for PSC";
       }
       description
         "Parameters for PSC TE topology.";
       uses te-types:performance-metric-container {
         if-feature te-performance-metric;
       }
     }

     /* Augmentations to interface-switching-capability */
     augment "/nd:networks/tet:te/tet:templates/"
           + "tet:link-template/tet:te-link-attributes/"
           + "tet:interface-switching-capability" {
       when "tet:switching-capability = 'te-types:switching-psc1' " {
         description "Valid only for PSC";
       }
       description
         "Parameters for PSC TE topology.";
       uses packet-switch-capable-container;
     }

     augment "/nd:networks/nd:network/lnk:link/tet:te/"
           + "tet:te-link-attributes/"
           + "tet:interface-switching-capability" {
       when "tet:switching-capability = 'te-types:switching-psc1' " {
         description "Valid only for PSC";
       }
       description
         "Parameters for PSC TE topology.";
       uses packet-switch-capable-container;
     }

     augment "/nd:networks/nd:network/lnk:link/tet:te/"
           + "tet:information-source-entry/"
           + "tet:interface-switching-capability" {
       when "tet:switching-capability = 'te-types:switching-psc1' " {



Liu, et al.             Expires September 2, 2018              [Page 26]


Internet-Draft             YANG L3 TE Topology                March 2018


         description "Valid only for PSC";
       }
       description
         "Parameters for PSC TE topology.";
       uses packet-switch-capable-container;
     }
   }
   <CODE ENDS>



5.  IANA Considerations

   RFC Ed.: In this section, replace all occurrences of 'XXXX' with the
   actual RFC number (and remove this note).

   This document registers the following namespace URIs in the IETF XML
   registry [RFC3688]:

   --------------------------------------------------------------------
   URI: urn:ietf:params:xml:ns:yang:ietf-l3-te-topology
   Registrant Contact: The IESG.
   XML: N/A, the requested URI is an XML namespace.
   --------------------------------------------------------------------

   --------------------------------------------------------------------
   URI: urn:ietf:params:xml:ns:yang:ietf-l3-te-topology-state
   Registrant Contact: The IESG.
   XML: N/A, the requested URI is an XML namespace.
   --------------------------------------------------------------------

   --------------------------------------------------------------------
   URI: urn:ietf:params:xml:ns:yang:ietf-te-topology-packet
   Registrant Contact: The IESG.
   XML: N/A, the requested URI is an XML namespace.
   --------------------------------------------------------------------

   --------------------------------------------------------------------
   URI: urn:ietf:params:xml:ns:yang:ietf-te-topology-packet-state
   Registrant Contact: The IESG.
   XML: N/A, the requested URI is an XML namespace.
   --------------------------------------------------------------------

   This document registers the following YANG modules in the YANG Module
   Names registry [RFC6020]:






Liu, et al.             Expires September 2, 2018              [Page 27]


Internet-Draft             YANG L3 TE Topology                March 2018


   --------------------------------------------------------------------
   name:         ietf-l3-te-topology
   namespace:    urn:ietf:params:xml:ns:yang:ietf-l3-te-topology
   prefix:       l3te
   reference:    RFC XXXX
   --------------------------------------------------------------------

   --------------------------------------------------------------------
   name:         ietf-l3-te-topology-state
   namespace:    urn:ietf:params:xml:ns:yang:ietf-l3-te-topology-state
   prefix:       l3te-s
   reference:    RFC XXXX
   --------------------------------------------------------------------

   --------------------------------------------------------------------
   name:         ietf-te-topology-packet
   namespace:    urn:ietf:params:xml:ns:yang:ietf-te-topology-packet
   prefix:       tet-pkt
   reference:    RFC XXXX
   --------------------------------------------------------------------

   --------------------------------------------------------------------
   name:         ietf-te-topology-packet-state
   namespace:  urn:ietf:params:xml:ns:yang:ietf-te-topology-packet-state
   prefix:       tet-pkt-s
   reference:    RFC XXXX
   --------------------------------------------------------------------

6.  Security Considerations

   The configuration, state, action and notification data defined in
   this document are designed to be accessed via the NETCONF protocol
   [RFC6241].  The data-model by itself does not create any security
   implications.  The security considerations for the NETCONF protocol
   are applicable.  The NETCONF protocol used for sending the data
   supports authentication and encryption.

7.  References

7.1.  Normative References

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






Liu, et al.             Expires September 2, 2018              [Page 28]


Internet-Draft             YANG L3 TE Topology                March 2018


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

   [I-D.ietf-netmod-revised-datastores]
              Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
              and R. Wilton, "Network Management Datastore
              Architecture", draft-ietf-netmod-revised-datastores-10
              (work in progress), January 2018.

7.2.  Informative References

   [I-D.ietf-i2rs-yang-l3-topology]
              Clemm, A., Medved, J., Varga, R., Liu, X.,
              Ananthakrishnan, H., and N. Bahadur, "A YANG Data Model
              for Layer 3 Topologies", draft-ietf-i2rs-yang-
              l3-topology-16 (work in progress), December 2017.

   [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-14 (work in
              progress), February 2018.




























Liu, et al.             Expires September 2, 2018              [Page 29]


Internet-Draft             YANG L3 TE Topology                March 2018


Appendix A.  Companion YANG Model for Non-NMDA Compliant Implementations

   The YANG modules ietf-l3-te-topology and ietf-te-topology-packet
   defined in this document are designed to be used in conjunction with
   implementations that support the Network Management Datastore
   Architecture (NMDA) defined in [I-D.ietf-netmod-revised-datastores].
   In order to allow implementations to use the model even in cases when
   NMDA is not supported, the following companion modules, ietf-l3-te-
   topology-state and ietf-te-topology-packet-state, are defined as
   state models, which mirror the modules ietf-l3-te-topology and ietf-
   te-topology-packet defined earlier in this document.  However, all
   data nodes in the companion module are non-configurable, to represent
   the applied configuration or the derived operational states.

   The companion modules, ietf-l3-te-topology-state and ietf-te-
   topology-packet-state, are redundant and SHOULD NOT be supported by
   implementations that support NMDA.

   As the structure of the companion modules mirrors that of the
   coorespinding NMDA models, the YANG trees of the companion modules
   are not depicted separately.

A.1.  Layer 3 TE Topology State Module


   <CODE BEGINS> file "ietf-l3-te-topology-state@2018-02-28.yang"
   module ietf-l3-te-topology-state {
     yang-version 1.1;
     namespace "urn:ietf:params:xml:ns:yang:ietf-l3-te-topology-state";
     prefix "l3tet-s";

     import ietf-l3-te-topology {
       prefix "l3tet";
     }
     import ietf-network-state {
       prefix "nw-s";
     }
     import ietf-network-topology-state {
       prefix "nt-s";
     }
     import ietf-l3-unicast-topology-state {
       prefix "l3t-s";
     }

     organization "TBD";
     contact "TBD";
     description "L3 TE Topology model";




Liu, et al.             Expires September 2, 2018              [Page 30]


Internet-Draft             YANG L3 TE Topology                March 2018


     revision 2018-02-28 {

       description "Initial revision";
       reference "TBD";
     }

     augment "/nw-s:networks/nw-s:network/nw-s:network-types/"
       + "l3t-s:l3-unicast-topology" {
       description
         "Defines the L3 TE topology type.";
       uses l3tet:l3-te-topology-type;
     }

     augment "/nw-s:networks/nw-s:network/"
       + "l3t-s:l3-topology-attributes" {
       when "../nw-s:network-types/l3t-s:l3-unicast-topology/"
         + "l3tet-s:l3-te" {
         description "Augment only for L3 TE topology";
       }
       description "Augment topology configuration";
       uses l3tet:l3-te-topology-attributes;
     }

     augment "/nw-s:networks/nw-s:network/nw-s:node/"
       + "l3t-s:l3-node-attributes" {
       when "../../nw-s:network-types/l3t-s:l3-unicast-topology/"
         + "l3tet-s:l3-te" {
         description "Augment only for L3 TE topology";
       }
       description "Augment node configuration";
       uses l3tet:l3-te-node-attributes;
     }

     augment "/nw-s:networks/nw-s:network/nw-s:node/"
       + "nt-s:termination-point/"
       + "l3t-s:l3-termination-point-attributes" {
       when "../../../nw-s:network-types/l3t-s:l3-unicast-topology/"
         + "l3tet-s:l3-te" {
         description "Augment only for L3 TE topology";
       }
       description "Augment termination point configuration";
       uses l3tet:l3-te-tp-attributes;
     }

     augment "/nw-s:networks/nw-s:network/nt-s:link/"
       + "l3t-s:l3-link-attributes" {
       when "../../nw-s:network-types/l3t-s:l3-unicast-topology/"
         + "l3tet-s:l3-te" {



Liu, et al.             Expires September 2, 2018              [Page 31]


Internet-Draft             YANG L3 TE Topology                March 2018


         description "Augment only for L3 TE topology";
       }
       description "Augment link configuration";
       uses l3tet:l3-te-link-attributes;
     }
   }
   <CODE ENDS>



A.2.  Packet Switching TE Topology State Module


   <CODE BEGINS> file "ietf-te-topology-packet-state@2017-10-29.yang"
   module ietf-te-topology-packet-state {
     yang-version 1;
     namespace
       "urn:ietf:params:xml:ns:yang:ietf-te-topology-packet-state";

     prefix "tet-pkt-s";

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

     import ietf-network-state {
       prefix "nd-s";
     }

     import ietf-network-topology-state {
       prefix "lnk-s";
     }

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

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

     organization
       "Traffic Engineering Architecture and Signaling (TEAS)
        Working Group";

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



Liu, et al.             Expires September 2, 2018              [Page 32]


Internet-Draft             YANG L3 TE Topology                March 2018


        WG Chair: Lou Berger
                  <mailto:lberger@labn.net>

        WG Chair: Vishnu Pavan Beeram
                  <mailto:vbeeram@juniper.net>

        Editors:  Xufeng Liu
                  <mailto:Xufeng_Liu@jabil.com>

                  Igor Bryskin
                  <mailto:Igor.Bryskin@huawei.com>

                  Vishnu Pavan Beeram
                  <mailto:vbeeram@juniper.net>

                  Tarek Saad
                  <mailto:tsaad@cisco.com>

                  Himanshu Shah
                  <mailto:hshah@ciena.com>

                  Oscar Gonzalez De Dios
                  <mailto:oscar.gonzalezdedios@telefonica.com>";

     description "TE topology model";

     revision 2017-10-29 {
       description "Initial revision";
       reference "TBD";
     }

     /*
      * Augmentations
      */
     /* Augmentations to connectivity-matrix */
     augment "/nd-s:networks/nd-s:network/nd-s:node/tet-s:te/"
       + "tet-s:te-node-attributes/tet-s:connectivity-matrices" {
       description
         "Parameters for PSC TE topology.";
       uses te-types:performance-metric-container {
         if-feature tet-pkt:te-performance-metric;
       }
     }

     augment "/nd-s:networks/nd-s:network/nd-s:node/tet-s:te/"
           + "tet-s:te-node-attributes/tet-s:connectivity-matrices/"
           + "tet-s:connectivity-matrix" {
       description



Liu, et al.             Expires September 2, 2018              [Page 33]


Internet-Draft             YANG L3 TE Topology                March 2018


         "Parameters for PSC TE topology.";
       uses te-types:performance-metric-container {
         if-feature tet-pkt:te-performance-metric;
       }
     }

     augment "/nd-s:networks/nd-s:network/nd-s:node/tet-s:te/"
           + "tet-s:information-source-entry/"
           + "tet-s:connectivity-matrices" {
       description
         "Parameters for PSC TE topology.";
       uses te-types:performance-metric-container {
         if-feature tet-pkt:te-performance-metric;
       }
     }

     augment "/nd-s:networks/nd-s:network/nd-s:node/tet-s:te/"
           + "tet-s:information-source-entry/"
           + "tet-s:connectivity-matrices/"
           + "tet-s:connectivity-matrix" {
       description
         "Parameters for PSC TE topology.";
       uses te-types:performance-metric-container {
         if-feature tet-pkt:te-performance-metric;
       }
     }

     /* Augmentations to tunnel-termination-point */
     augment "/nd-s:networks/nd-s:network/nd-s:node/tet-s:te/"
           + "tet-s:tunnel-termination-point/"
           + "tet-s:local-link-connectivities" {
       description
         "Parameters for PSC TE topology.";
       uses te-types:performance-metric-container {
         if-feature tet-pkt:te-performance-metric;
       }
     }

     augment "/nd-s:networks/nd-s:network/nd-s:node/tet-s:te/"
           + "tet-s:tunnel-termination-point/"
           + "tet-s:local-link-connectivities/"
           + "tet-s:local-link-connectivity" {
       description
         "Parameters for PSC TE topology.";
       uses te-types:performance-metric-container {
         if-feature tet-pkt:te-performance-metric;
       }
     }



Liu, et al.             Expires September 2, 2018              [Page 34]


Internet-Draft             YANG L3 TE Topology                March 2018


     /* Augmentations to te-link-attributes */
     augment "/nd-s:networks/tet-s:te/tet-s:templates/"
           + "tet-s:link-template/tet-s:te-link-attributes" {
       when "tet-s:interface-switching-capability "
         + "[tet-s:switching-capability = 'te-types:switching-psc1']" {
         description "Valid only for PSC";
       }
       description
         "Parameters for PSC TE topology.";
       uses te-types:performance-metric-container {
         if-feature tet-pkt:te-performance-metric;
       }
     }

     augment "/nd-s:networks/nd-s:network/lnk-s:link/tet-s:te/"
           + "tet-s:te-link-attributes" {
       when "tet-s:interface-switching-capability "
         + "[tet-s:switching-capability = 'te-types:switching-psc1']" {
         description "Valid only for PSC";
       }
       description
         "Parameters for PSC TE topology.";
       uses te-types:performance-metric-container {
         if-feature tet-pkt:te-performance-metric;
       }
     }

     augment "/nd-s:networks/nd-s:network/lnk-s:link/tet-s:te/"
           + "tet-s:information-source-entry" {
       when "tet-s:interface-switching-capability "
         + "[tet-s:switching-capability = 'te-types:switching-psc1']" {
         description "Valid only for PSC";
       }
       description
         "Parameters for PSC TE topology.";
       uses te-types:performance-metric-container {
         if-feature tet-pkt:te-performance-metric;
       }
     }

     /* Augmentations to interface-switching-capability */
     augment "/nd-s:networks/tet-s:te/tet-s:templates/"
           + "tet-s:link-template/tet-s:te-link-attributes/"
           + "tet-s:interface-switching-capability" {
       when "tet-s:switching-capability = 'te-types:switching-psc1' " {
         description "Valid only for PSC";
       }
       description



Liu, et al.             Expires September 2, 2018              [Page 35]


Internet-Draft             YANG L3 TE Topology                March 2018


         "Parameters for PSC TE topology.";
       uses tet-pkt:packet-switch-capable-container;
     }

     augment "/nd-s:networks/nd-s:network/lnk-s:link/tet-s:te/"
           + "tet-s:te-link-attributes/"
           + "tet-s:interface-switching-capability" {
       when "tet-s:switching-capability = 'te-types:switching-psc1' " {
         description "Valid only for PSC";
       }
       description
         "Parameters for PSC TE topology.";
       uses tet-pkt:packet-switch-capable-container;
     }

     augment "/nd-s:networks/nd-s:network/lnk-s:link/tet-s:te/"
           + "tet-s:information-source-entry/"
           + "tet-s:interface-switching-capability" {
       when "tet-s:switching-capability = 'te-types:switching-psc1' " {
         description "Valid only for PSC";
       }
       description
         "Parameters for PSC TE topology.";
       uses tet-pkt:packet-switch-capable-container;
     }
   }
   <CODE ENDS>



Authors' Addresses

   Xufeng Liu
   Jabil
   8281 Greensboro Drive, Suite 200
   McLean  VA 22102
   USA

   EMail: Xufeng_Liu@jabil.com


   Igor Bryskin
   Huawei Technologies

   EMail: Igor.Bryskin@huawei.com






Liu, et al.             Expires September 2, 2018              [Page 36]


Internet-Draft             YANG L3 TE Topology                March 2018


   Vishnu Pavan Beeram
   Juniper Networks

   EMail: vbeeram@juniper.net


   Tarek Saad
   Cisco Systems Inc

   EMail: tsaad@cisco.com


   Himanshu Shah
   Ciena

   EMail: hshah@ciena.com


   Oscar Gonzalez de Dios
   Telefonica

   EMail: oscar.gonzalezdedios@telefonica.com





























Liu, et al.             Expires September 2, 2018              [Page 37]