Internet DRAFT - draft-gandhi-mpls-te-yang-model

draft-gandhi-mpls-te-yang-model



 



MPLS Working Group                                         Rakesh Gandhi
Internet-Draft                                                Tarek Saad
Intended Status: Standards Track                           Robert Sawaya
Expires: May 14, 2015                                Cisco Systems, Inc.
                                                       November 10, 2014

   YANG Data Model for MPLS Traffic Engineering Tunnels and Links
                   draft-gandhi-mpls-te-yang-model-02

Abstract

   This document defines YANG data model for the management of Multi-
   Protocol Label Switching Traffic Engineering (MPLS-TE) tunnels, Label
   Switched Paths (LSPs) and links.  The data model covers configuration
   data, operational state data, RPC execution commands and event
   notifications.

Status of this Memo

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

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF), its areas, and its working groups.  Note that
   other groups may also distribute working documents as Internet-
   Drafts.

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

   The list of current Internet-Drafts can be accessed at
   http://www.ietf.org/ietf/1id-abstracts.txt.

   The list of Internet-Draft Shadow Directories can be accessed at
   http://www.ietf.org/shadow.html.

Copyright Notice

   Copyright (c) 2014 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
   publication of this document. Please review these documents
   carefully, as they describe your rights and restrictions with respect
 


Gandhi, et al.            Expires May 14, 2015                  [Page 1]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   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 . . . . . . . . . . . . . . . . . . . . . . . . .  4
   2.  Terminology and Notation . . . . . . . . . . . . . . . . . . .  4
     2.1.  Terminology  . . . . . . . . . . . . . . . . . . . . . . .  4
     2.2.  Prefixes in Data Node Names  . . . . . . . . . . . . . . .  4
   3.  Objectives . . . . . . . . . . . . . . . . . . . . . . . . . .  5
   4.  MPLS-TE Data Models Overview . . . . . . . . . . . . . . . . .  5
     4.1.  Global Configuration Data Model Overview . . . . . . . . .  5
       4.1.1.  Global Configuration Tunnel-template Data Model  . . .  6
       4.1.2.  Global Configuration Link-template Data Model  . . . .  6
     4.2.  Global State Data Model Overview . . . . . . . . . . . . .  6
     4.3.  Global RPC Data Model Overview . . . . . . . . . . . . . .  6
     4.4.  Global Notification Data Model Overview  . . . . . . . . .  7
     4.5.  Tunnel Configuration Data Model Overview . . . . . . . . .  7
     4.6.  Tunnel State Data Model Overview . . . . . . . . . . . . .  7
     4.7.  Tunnel RPC Data Model Overview . . . . . . . . . . . . . .  8
     4.8.  Tunnel Notification Data Model Overview  . . . . . . . . .  8
     4.9.  LSP Configuration Data Model Overview  . . . . . . . . . .  8
     4.10.  LSP State Data Model Overview . . . . . . . . . . . . . .  9
     4.11.  LSP RPC Data Model Overview . . . . . . . . . . . . . . .  9
     4.12.  LSP Notification Data Model Overview  . . . . . . . . . .  9
     4.13.  Link Configuration Data Model Overview  . . . . . . . . . 10
     4.14.  Link State Data Model Overview  . . . . . . . . . . . . . 10
     4.15.  Link RPC Data Model Overview  . . . . . . . . . . . . . . 11
     4.16.  Link Notification Data Model Overview . . . . . . . . . . 11
   5.  MPLS-TE Data Models Tree Structures  . . . . . . . . . . . . . 11
     5.1.  Global Configuration Data Model Subtree Structure  . . . . 14
       5.1.1.  Global Tunnel-template List  . . . . . . . . . . . . . 16
       5.1.2.  Global Link-template List  . . . . . . . . . . . . . . 18
     5.2.  Global State Data Model Subtree Structure  . . . . . . . . 20
     5.3.  Global RPC Data Model Subtree Structure  . . . . . . . . . 20
     5.4.  Global Notification Data Model Subtree Structure . . . . . 20
     5.5.  Tunnel Configuration Data Model Subtree Structure  . . . . 20
 


Gandhi, et al.            Expires May 14, 2015                  [Page 2]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


       5.5.1.  Tunnel List  . . . . . . . . . . . . . . . . . . . . . 23
     5.6.  Tunnel State Data Model Subtree Structure  . . . . . . . . 23
     5.7.  Tunnel RPC Data Model Subtree Structure  . . . . . . . . . 24
     5.8.  Tunnel Notification Data Model Subtree Structure . . . . . 24
     5.9.  LSP Configuration Data Model Subtree Structure . . . . . . 24
     5.10.  LSP State Data Model Subtree Structure  . . . . . . . . . 25
     5.11.  LSP RPC Data Model Subtree Structure  . . . . . . . . . . 25
     5.12.  LSP Notification Data Model Subtree Structure . . . . . . 25
     5.13.  Link Configuration Data Model Subtree Structure . . . . . 25
       5.13.1.  Link List . . . . . . . . . . . . . . . . . . . . . . 28
     5.14.  Link State Data Model Subtree Structure . . . . . . . . . 28
     5.15.  Link RPC Data Model Subtree Structure . . . . . . . . . . 28
     5.16.  Link Notification Data Model Subtree Structure  . . . . . 28
   6.  IETF MPLS-TE YANG Generic Types Module . . . . . . . . . . . . 29
   7.  IETF MPLS-TE YANG Module . . . . . . . . . . . . . . . . . . . 34
   8.  IANA Considerations  . . . . . . . . . . . . . . . . . . . . . 72
   9.  Security Considerations  . . . . . . . . . . . . . . . . . . . 72
   10.  Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 73
   11.  References  . . . . . . . . . . . . . . . . . . . . . . . . . 73
     11.1.  Normative References  . . . . . . . . . . . . . . . . . . 73
     11.2.  Informative References  . . . . . . . . . . . . . . . . . 74
   12.  Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . 74


























 


Gandhi, et al.            Expires May 14, 2015                  [Page 3]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


1.  Introduction

   This document defines YANG [RFC6020] data model for the management of
   Multi-Protocol Label Switching Traffic Engineering (MPLS-TE)
   [RFC3209] tunnels and links.  Resource Reservation Protocol (RSVP)
   [RFC2205] signaled MPLS-TE paths are represented as tunnels at the
   head-end Label Switching Router (LSR), and as Label Switched Paths
   (LSPs) at the head-end, mid-point and tail-end LSRs in the YANG data
   model defined.

   The data model defined in this document includes configuration data,
   operational state data (status information and counters), execution
   commands using RPCs (Remote Procedure Calls), and logging event
   notifications pertaining to MPLS-TE tunnels, LSPs and MPLS-TE enabled
   links, as well as system-wide global MPLS-TE properties that relate
   to the behavior and operation of the MPLS-TE enabled LSR node.

   Further modules augmenting this data model with advanced features can
   be handled in a future revision or a separate document.


2.  Terminology and Notation

2.1.  Terminology

   The keywords "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].

2.2.  Prefixes in Data Node Names

   In this document, names of data nodes and other data model objects
   are often used without a prefix, as long as it is clear from the
   context in which YANG module each name is defined.  Otherwise, names
   are prefixed using the standard prefix associated with the
   corresponding YANG module, as shown in Table 1.


                +--------+-----------------+-----------+
                | Prefix | YANG module     | Reference |
                +--------+-----------------+-----------+
                | yang   | ietf-yang-types | [RFC6991] |
                | inet   | ietf-inet-types | [RFC6991] |
                +--------+-----------------+-----------+

            Table 1: Prefixes and corresponding YANG modules


 


Gandhi, et al.            Expires May 14, 2015                  [Page 4]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


3.  Objectives

   This section outlines some of the design objectives for the model:

   o  In case of existing implementations, it needs to map the data
   model defined in this document to their proprietary native data
   model.  To facilitate such mappings, the data model should be simple.

   o  The data model should be suitable for new implementations to use
   as is, without requiring a mapping to a different native model.

   o  Mapping to the MPLS-TE MIB Module should be clear.

   o  The data model should include read-only counters in order to
   gather statistics for sent and received octets and packets, received
   packets with errors, and packets that could not be sent due to
   errors.

   o  It should be straightforward to augment the base data model for
   advanced MPLS-TE features.


4.  MPLS-TE Data Models Overview

   MPLS-TE YANG data models are defined for various management
   components including configuration, operational state, execution
   commands and event notifications.

   Following sections provide overview and some selective examples of
   management components for global MPLS-TE, MPLS-TE tunnels, MPLS-TE
   LSPs and MPLS-TE enabled links.

4.1.  Global Configuration Data Model Overview

   This module defines YANG data model for configuration data globally
   for MPLS-TE.

   The global MPLS-TE configuration data model is a read-write YANG data
   model that controls the LSR behavior system-wide.  Examples of such
   configuration items for global MPLS-TE are:

      o  List of TE enabled IGP instances and areas and TE router IDs 
      o  Auto-tunnel backup
         This module controls and manages the automatic
         creation of fast reroute backup tunnels for protected
         MPLS-TE enabled links.
      o  Auto-tunnel mesh-group
         This module controls and manages the automatic
 


Gandhi, et al.            Expires May 14, 2015                  [Page 5]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


         creation of tunnels for mesh-groups.
      o  Auto-bandwidth 
         This module controls and manages the
         auto-bandwidth specific system-wide properties.
      o  Table of SRLG name and value mapping
      o  Table of (Extended) Administrative group name and value mapping
      o  MPLS-TE diff-serve TE-class maps
      o  System-wide capabilities for LSP reoptimization
         o  Reoptimization timers (periodic interval,
            LSP installation and cleanup)
      o  System-wide capabilities for MPLS TE link flooding
         o  Periodic flooding interval
      o  System-wide capabilities that affect the originating,
         traversing and terminating LSPs.  For example:
         o  Path selection parameters (e.g. metric) at head-end LSR
         o  Path protection parameters at head-end LSR
         o  (Soft) preemption parameters

4.1.1.  Global Configuration Tunnel-template Data Model

   This module defines YANG data model for tunnel-templates in global
   configuration data.  MPLS-TE tunnel-templates are templates that can
   be used to instantiate tunnels and LSPs with identical configuration
   properties.

4.1.2.  Global Configuration Link-template Data Model

   This module defines YANG data model for link-templates in global
   configuration data.  MPLS-TE link templates are templates that can be
   used to apply identical configuration properties to MPLS-TE links.


4.2.  Global State Data Model Overview

   This module defines YANG data model for state data globally for MPLS-
   TE.

   The global MPLS-TE state data model is a read-only YANG data model. 
   This module defines system-wide operational data for various MPLS-TE
   features.  Examples of such system-wide MPLS-TE states are:

      o  Global statistics (signaling, admission, preemption, flooding) 
      o  Global counters (number of tunnels/LSPs/links)

4.3.  Global RPC Data Model Overview

   This module defines YANG data model for RPC execution commands
   globally for MPLS-TE.
 


Gandhi, et al.            Expires May 14, 2015                  [Page 6]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   The global MPLS-TE RPC execution model facilitates issuing commands
   to an LSR node and optionally returning responses.  This model uses
   RPC operations and contains optional read-only input and output data.
    Examples of such global MPLS-TE commands are:

      o  Clear global MPLS-TE statistics of various features

4.4.  Global Notification Data Model Overview

   This module defines YANG data model for logging event notifications
   globally for MPLS-TE.

   The global MPLS-TE events notification model uses configuration data
   for registration.  Node notifies the registered events to the server
   using notification messages.  Notifications carry read-only data in
   the messages.  Example of such global MPLS-TE events are:

      o  Backup tunnel FRR active and not-active state transition

4.5.  Tunnel Configuration Data Model Overview

   This module defines configuration data for MPLS-TE P2P and P2MP
   tunnels and is applicable to head-end LSRs.

   The configuration data model is a read-write YANG data model.  This
   module defines configuration items for the MPLS-TE tunnels.  Examples
   of such configuration items are:

      o  Name
      o  Admin-state
      o  Tunnel-type (such as P2P, P2MP)
      o  Routing properties 
         o  IGP shortcut, forwarding adjacency
      o  Forwarding properties 
         o  Traffic-class based tunnel selection
      o  Auto-bandwidth properties

4.6.  Tunnel State Data Model Overview

   This module defines operational state data for MPLS-TE P2P and P2MP
   tunnels and is applicable to head-end LSRs.

   The MPLS-TE tunnel state data model is a read-only YANG data model. 
   This module defines operational state data for MPLS-TE tunnels at the
   head-end LSRs.  Examples of such MPLS-TE tunnel states are:

      o  Name
      o  Tunnel creation information 
 


Gandhi, et al.            Expires May 14, 2015                  [Page 7]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


         o Time and trigger: static-configuration or auto-tunnel
      o  State information 
         o Up/Down: when and reason
      o  Traffic counters

4.7.  Tunnel RPC Data Model Overview

   This module defines RPC execution commands for MPLS-TE P2P and P2MP
   tunnels and is applicable to head-end LSRs.

   The execution model facilitates issuing commands to an LSR node and
   optionally returning responses.  This model uses RPC operations and
   contains optional read-only input and output data.  Example commands
   for MPLS-TE tunnels are:

      o  Clear statistics for all or for individual tunnels

4.8.  Tunnel Notification Data Model Overview

   This module defines logging event notifications for MPLS-TE P2P and
   P2MP tunnels and is applicable to head-end LSRs.

   The notification model uses configuration data for registration. 
   Node notifies the registered events to the server using notification
   messages.  Notifications carry read-only data in the messages. 
   Example events for MPLS-TE tunnels are:

      o  Tunnel creation and deletion
      o  Tunnel state transition

4.9.  LSP Configuration Data Model Overview

   This module defines configuration data for MPLS-TE P2P and P2MP LSPs
   that are part of tunnels and is applicable to head-end LSR.

   The configuration data model is a read-write YANG data model
   component.  This module defines configuration items for the MPLS-TE
   LSP properties.  Examples of such MPLS-TE tunnel LSP configuration
   items are:

      o  Name
      o  Signaling properties 
         o  Bandwidth, class-type
         o  Set-up and hold priorities
      o  Path-computation parameters 
         o  Dynamic path, explicit path
         o  Cost-limit, hop-limit, metric type, affinity parameters

 


Gandhi, et al.            Expires May 14, 2015                  [Page 8]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


4.10.  LSP State Data Model Overview

   This module defines operational state data for MPLS-TE P2P and P2MP
   LSPs and is applicable to head-end, mid-point and tail-end LSRs.

   The MPLS-TE LSP state data model is a read-only YANG data model. 
   This model defines the operational state data for MPLS-TE LSPs for
   head-end, mid-point and tail-end LSRs.  Example state data for MPLS-
   TE tunnel LSPs are:

      o  Name
      o  LSP creation time
      o  State information 
         o  Up/Down: when and reason
      o  LSP template name
      o  Signaling information 
         o  Explicit Route Object, Record Route Object
         o  Bandwidth, egress and ingress links
      o  FRR information 
         o  Status, type of protection, backup tunnel
      o  Soft preemption properties
      o  Statistics

4.11.  LSP RPC Data Model Overview

   This module defines RPC execution commands for MPLS-TE P2P and P2MP
   LSPs and is applicable to head-end, mid-point and tail-end LSRs.

   The execution model facilitates issuing commands to an LSR node and
   optionally returning responses.  This model uses RPC operations and
   contains optional read-only input and output data.  Examples of such
   commands for MPLS-TE LSPs are:

      o  Trigger reoptimization on all or on individual 
         LSP at head-end
      o  Trigger path protection switchover on an individual 
         LSP at head-end
      o  Clear TE statistics for all or for individual LSPs

4.12.  LSP Notification Data Model Overview

   This module defines logging event notifications for MPLS-TE P2P and
   P2MP LSPs and is applicable to head-end, mid-point and tail-end LSRs.

   The notification model uses configuration data for registration. 
   Node notifies the registered events to the server using notification
   messages.  Notifications carry read-only data in the messages. 
   Examples of such logging events for MPLS-TE LSPs are:
 


Gandhi, et al.            Expires May 14, 2015                  [Page 9]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


      o  LSP creation and deletion
      o  LSP state transition
      o  LSP reoptimization including trigger reason
      o  Fast reroute status change (availability, activation)
      o  LSP signaling 
      o  Path protection status change
      o  (Soft) Preemption trigger


4.13.  Link Configuration Data Model Overview

   This module defines configuration data for MPLS-TE enabled links on
   an LSR.

   The configuration data model is a read-write YANG data model
   component.  This model defines configuration items for MPLS-TE
   enabled links used to advertise in TE topology database.  Examples of
   such configuration items for MPLS-TE enabled links are:

      o  Name
      o  Maximum reservable bandwidth, bandwidth constraints (BC) 
      o  Flooding parameters
         o  Flooding intervals and threshold values
      o  Fast reroute backup tunnel properties (such as static,
         auto-tunnel)
      o  IGP parameters    
         o  (Extended) Administrative groups 
         o  SRLG values
         o  TE metric value
      o  RSVP parameters
         o  Authentication parameters
         o  Refresh reduction parameters
         o  Hello parameters
         o  Graceful restart (GR) parameters
      o  Optical parameters
         o  Switching capabilities


4.14.  Link State Data Model Overview

   This module defines operational state data for MPLS-TE enabled links
   on an LSR.

   The MPLS-TE link state model is a read-only YANG data model.  This
   model defines operational state data for MPLS-TE enabled links for an
   LSR node.  Examples of such state data for MPLS-TE links are:

      o  Name
 


Gandhi, et al.            Expires May 14, 2015                 [Page 10]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


      o  State information 
         o  UP/Down: when and reason
      o  Bandwidth information: maximum bandwidth, available bandwidth
         at different priorities and for each class-type (CT)
      o  List of admitted LSPs 
         o  Name, bandwidth value and pool, time, priority
      o  Statistics: state counters, flooding counters, admission
         counters (accepted/rejected), preemption counters
      o  IGP information
         o  Neighbor address
         o  Metric value


4.15.  Link RPC Data Model Overview

   This module defines RPC execution commands for MPLS-TE enabled links
   on an LSR.

   The execution model facilitates issuing commands to an LSR node and
   optionally returning responses.  This model uses RPC operations and
   contains optional read-only input and output data.  Examples of such
   commands for MPLS-TE links are:

      o  Clear TE statistics for all or for individual links
      o  Trigger immediate flooding for all TE links

4.16.  Link Notification Data Model Overview

   This module defines logging event notifications for MPLS-TE enabled
   links on an LSR.

   The notification model uses configuration data for registration. 
   Node notifies the registered events to the server using notification
   messages.  Notifications carry read-only data in the messages. 
   Example logging events for MPLS-TE links are:

      o  Link creation and deletion
      o  Link state transition
      o  (Soft) preemption trigger
      o  Fast reroute activation

5.  MPLS-TE Data Models Tree Structures

   The module, "ietf-mpls-te", defines the YANG data model for various
   management components (configuration, operational, RPC execution and
   notification) within MPLS-TE.  The data module includes data models
   for global MPLS-TE, tunnels, LSPs and links and the tree structure is
   organized as shown below.
 


Gandhi, et al.            Expires May 14, 2015                 [Page 11]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   The following notations are used for the data tree.

   <status> <flags> <name> <opts> <type>

    <status> is one of:
       + for current
       x for deprecated
       o for obsolete

    <flags> is one of:
       rw for read-write configuration data
       ro for read-only non-configuration data
       -x for execution rpcs
       -n for notifications

    <name> is the name of the node

    If the node is augmented into the tree from another module, 
    its name is printed as <prefix>:<name>

    <opts> is one of:
       ? for an optional leaf or node
       ! for a presence container
       * for a leaf-list or list
       Brackets [<keys>] for a list's keys
       Curly braces {<condition>} for optional feature that 
            make node conditional
       Colon : for marking case nodes
       Ellipses ("...") subtree contents not shown

    <type> is the name of the type for leafs and leaf-lists.


    module ietf-mpls-te

    +--rw global-cfg!
    |  +--rw igp-te-domains
    |  +--rw tunnel-templates* [name]
    |  |  +--rw name   
    |  |  +--rw igp
    |  |  +--rw rsvp
    |  |  +--rw optical
    |  +--rw link-templates* [name]
    |  |  +--rw name  
    |  |  +--rw igp
    |  |  +--rw rsvp
    |  |  +--rw optical

 


Gandhi, et al.            Expires May 14, 2015                 [Page 12]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


    +--rw tunnels-cfg!
    |  +--rw tunnel-template  leafref
    |  +--rw tunnel* [name type]
    |     +--rw name
    |     +--rw type  mtt:tunnel-type
    |     +--rw igp
    |     +--rw rsvp
    |     +--rw optical
    |     +--rw (tunnel-type)?
    |        +--:(p2p-lsp)
    |            +--rw tunnel-template
    |        +--:(p2mp-lsp)
    |            +--rw tunnel-template

    +--rw links-cfg
    |  +--rw link-template?   leafref
    |  +--rw link* [name]
    |     +--rw name                  
    |     +--rw igp
    |     +--rw rsvp
    |     +--rw optical

    +--ro global-oper
    |
    +--ro tunnels-oper
    |  +--ro tunnel* [name type]
    |     +--ro name  
    |     +--ro type    mtt:tunnel-type
    +--ro lsps-oper
    |  +--ro lsp* [name]
    |     +-- name
    +--ro links-oper
       +--ro link* [name]
          +--ro name    string

  rpcs:
    +---x tunnels-rpc
    +---x lsps-rpc
    +---x global-rpc
    +---x links-rpc

  notifications:
    +---n tunnels-notif
    +---n lsps-notif
    +---n links-notif
    +---n global-notif


 


Gandhi, et al.            Expires May 14, 2015                 [Page 13]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   As shown, data tree structure is organized by MPLS-TE data modules,
   which are global MPLS-TE, tunnels, LSPs and links.  Each of this data
   model module contains various management components including
   configuration, operation, execution and notification.

5.1.  Global Configuration Data Model Subtree Structure

   This document defines the YANG data model subtree for global MPLS-TE
   configuration as follows:

   +--rw global-cfg!
   |  +--rw igp-te-domains
   |  |  +--rw igp-te-domain* [instance-id]
   |  |     +--rw instance-id     string
   |  |     +--rw igp?            enumeration
   |  |     +--rw (igp-type)?
   |  |     |  +--:(isis)
   |  |     |  |  +--rw isis
   |  |     |  |     +--rw level?   uint8
   |  |     |  +--:(ospf)
   |  |     |     +--rw ospf
   |  |     |        +--rw area?   uint32
   |  |     +--rw te-router-id?   inet:ip-address
   |  |     +--rw routing-afs*    inet:ip-version
   |  +--rw affinity-maps
   |  |  +--rw affinity-map* [name]
   |  |     +--rw name           string
   |  |     +--rw (type)?
   |  |        +--:(bitmap)
   |  |        |  +--rw value?         uint32
   |  |        +--:(bitmap-extended)
   |  |           +--rw bit-indexed*   uint8
   |  +--rw srlg-maps
   |  |  +--rw srlg-map* [name]
   |  |     +--rw name            string
   |  |     +--rw value?          uint32
   |  |     +--rw admin-weight?   uint32
   |  +--rw timers
   |  |  +--rw lsp-bw-hold-delay?      uint32
   |  |  +--rw lsp-preemption-delay?   uint32
   |  |  +--rw link-holddown-sigerr?   uint32
   |  +--rw flooding!
   |  |  +--rw interval?     uint32
   |  |  +--rw thresholds
   |  |     +--rw (type)?
   |  |        +--:(single-step)
   |  |        |  +--rw up-step?      uint8
   |  |        |  +--rw down-step?    uint8
 


Gandhi, et al.            Expires May 14, 2015                 [Page 14]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   |  |        +--:(multiple-steps)
   |  |           +--rw up-steps* [value]
   |  |           |  +--rw value    uint8
   |  |           +--rw down-steps* [value]
   |  |              +--rw value    uint8
   |  +--rw reoptimization!
   |  |  +--rw interval?             uint32
   |  |  +--rw installation-delay?   uint32
   |  |  +--rw cleanup-delay?        uint32
   |  |  +--rw load-balance?         boolean
   |  |  +--rw trigger-events
   |  |     +--rw link-up?   boolean
   |  +--rw load-share
   |  |  +--rw unequal!
   |  |     +--rw bandwidth-based?   boolean
   |  +--rw tail-signaling
   |  |  +--rw advertise-explicit-null?   boolean
   |  +--rw global-soft-preemption!
   |  |  +--rw timeout?   uint32
   |  +--rw diff-serve-te!
   |  |  +--rw bc-model?   mtt:bc-model-type
   |  |  +--rw te-class* [class-index]
   |  |     +--rw class-index    uint8
   |  |     +--rw priority?      uint8
   |  |     +--rw bc-value?      uint8
   |  +--rw global-auto-bandwidth!
   |  |  +--rw stats-collection-interval?   uint32
   |  +--rw pce!
   |  |  +--rw address?                     inet:ip-address
   |  |  +--rw node-id?                     string
   |  |  +--rw (password-type)?
   |  |  |  +--:(password-clear)
   |  |  |  |  +--rw password-clear?              string
   |  |  |  +--:(password-encrypted)
   |  |  |     +--rw password-encrypted?          string
   |  |  +--rw dead-timer?                  uint32
   |  |  +--rw keep-alive-time?             uint32
   |  |  +--rw keep-alive-tolerance-time?   uint32
   |  |  +--rw peer-table
   |  |  |  +--rw peer* [peer-address]
   |  |  |  |  +--rw peer-address    inet:ip-address
   |  |  |  +--rw (password-type)?
   |  |  |     +--:(password-clear)
   |  |  |     |  +--rw password-clear?       string
   |  |  |     +--:(password-encrypted)
   |  |  |        +--rw password-encrypted?   string
   |  |  +--rw reoptimize-period?           uint32
   |  |  +--rw lsp-cleanup-time?            uint32
 


Gandhi, et al.            Expires May 14, 2015                 [Page 15]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   |  |  +--rw request-timeout?             uint32
   |  |  +--rw stateful-client
   |  |  |  +--rw capabilities
   |  |  |     +--rw instantiation?   boolean
   |  |  +--rw logging
   |  |     +--rw (event-type)?
   |  |        +--:(all)
   |  |        |  +--rw all!
   |  |        +--:(peer-status)
   |  |           +--rw peer-status!
   |  +--rw auto-mesh-groups!
   |  |  +--rw auto-mesh* [mesh-group]
   |  |     +--rw mesh-group          uint32
   |  |     +--rw template?           leafref
   |  |     +--rw access-list-name?   string
   |  |     +--rw one-hop-only?       boolean
   |  |     +--rw disable?            boolean
   |  +--rw auto-backup!
   |     +--rw template?                  leafref
   |     +--rw link-protection-only?      boolean
   |     +--rw backup-path-computation? 
 mtt:path-computation-srlg-type


5.1.1.  Global Tunnel-template List

   The data model for tunnel-templates presented in this document uses a
   flat list of tunnel-template(s).  Each tunnel-template in the list is
   identified by its name.  A tunnel-template is a configuration
   template that can be used to instantiate tunnels and LSPs with
   identical properties.

   Configured MPLS-TE tunnel-template list is found at
   ("/global-cfg/tunnel-templates") and has following subtree.


   +--rw global-cfg!
   |  +--rw tunnel-templates* [name]
   |  |  +--rw name                    string
   |  |  +--rw path-selection
   |  |  |  +--rw cost-limit?        uint32
   |  |  |  +--rw hop-limit?         uint8
   |  |  |  +--rw metric-type?       mtt:path-metric-type
   |  |  |  +--rw tiebreaker-type?   mtt:path-tiebreaker-type
   |  |  |  +--rw ignore-overload?   boolean
   |  |  +--rw source?                 inet:ip-address
   |  |  +--rw fast-reroute!
   |  |  |  +--rw bandwidth-protection-desired?   boolean
 


Gandhi, et al.            Expires May 14, 2015                 [Page 16]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   |  |  |  +--rw node-protection-desired?        boolean
   |  |  +--rw record-route?           boolean
   |  |  +--rw signaled-name?          string
   |  |  +--rw priority
   |  |  |  +--rw setup?   uint8
   |  |  |  +--rw hold?    uint8
   |  |  +--rw soft-preemption?        boolean
   |  |  +--rw signaled-bandwidth
   |  |  |  +--rw type?    mtt:bandwidth-type
   |  |  |  +--rw value?   uint32
   |  |  +--rw affinity
   |  |  |  +--rw (style)?
   |  |  |     +--:(bitmap)
   |  |  |     |  +--rw value?         uint32
   |  |  |     |  +--rw mask?          uint32
   |  |  |     +--:(named)
   |  |  |        +--rw constraints* [action]
   |  |  |           +--rw action        mtt:affinity-action-type
   |  |  |           +--rw constraint
   |  |  |              +--rw affinity-list* [name]
   |  |  |                 +--rw name    string
   |  |  +--rw logging
   |  |  |  +--rw (event-type)?
   |  |  |     +--:(all)
   |  |  |     |  +--rw all?                     boolean
   |  |  |     +--:(bfd-status)
   |  |  |     |  +--rw bfd-status?              boolean
   |  |  |     +--:(link-status)
   |  |  |     |  +--rw link-status?             boolean
   |  |  |     +--:(lsp-status)
   |  |  |     |  +--rw (event)?
   |  |  |     |     +--:(all)
   |  |  |     |     |  +--rw all-lsp-status-events?   boolean
   |  |  |     |     +--:(subset)
   |  |  |     |        +--rw events* mtt:lsp-status-event-type
   |  |  |     +--:(cspf-failure)
   |  |  |        +--rw cspf-failure-events?     boolean
   |  |  +--rw auto-bandwidth!
   |  |  |  +--rw adjustment-threshold?    uint8
   |  |  |  +--rw adjustment-limit?        uint8
   |  |  |  +--rw adjustment-min-change?   uint32
   |  |  |  +--rw overflow-threshold?      uint8
   |  |  |  +--rw overflow-limit?          uint8
   |  |  |  +--rw overflow-min-change?     uint32
   |  |  |  +--rw underflow-threshold?     uint8
   |  |  |  +--rw underflow-limit?         uint8
   |  |  |  +--rw underflow-min-change?    uint32
   |  |  |  +--rw collect-only?            boolean
 


Gandhi, et al.            Expires May 14, 2015                 [Page 17]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   |  |  |  +--rw application-frequency?   uint32
   |  |  |  +--rw bandwidth-limit
   |  |  |     +--rw min-limit?   uint32
   |  |  |     +--rw max-limit?   uint32
   |  |  +--rw bfd-over-tunnel!
   |  |  |  +--rw type?               mtt:bfd-type
   |  |  |  +--rw encap-mode?         mtt:bfd-encap-mode-type
   |  |  |  +--rw bringup-timeout?    uint32
   |  |  |  +--rw dampening?          uint32
   |  |  |  +--rw lsp-ping
   |  |  |  |  +--rw disable?    boolean
   |  |  |  |  +--rw interval?   uint32
   |  |  |  +--rw minimum-interval?   uint32
   |  |  |  +--rw multiplier?         uint32
   |  |  +--rw (routing-choice)?
   |  |  |  +--:(autoroute)
   |  |  |  |  +--rw autoroute-announce!
   |  |  |  |     +--rw routing-afs*       inet:ip-version
   |  |  |  |     +--rw (metric-type)?
   |  |  |  |        +--:(metric)
   |  |  |  |        |  +--rw metric?            uint32
   |  |  |  |        +--:(relative-metric)
   |  |  |  |        |  +--rw relative-metric?   int32
   |  |  |  |        +--:(absolute-metric)
   |  |  |  |           +--rw absolute-metric?   uint32
   |  |  |  +--:(forwarding-adjacency)
   |  |  |     +--rw forwarding-adjacency!
   |  |  |        +--rw holdtime?      uint32
   |  |  |        +--rw routing-afs*   inet:ip-version
   |  |  +--rw forwarding
   |  |     +--rw load-share?   uint32
   |  |     +--rw (policy-type)?
   |  |        +--:(class)
   |  |        |  +--rw class
   |  |        |     +--rw class?   uint8
   |  |        +--:(group)
   |  |           +--rw group
   |  |              +--rw classes*   uint8


5.1.2.  Global Link-template List

   The data model for link-templates presented in this document uses a
   flat list of link-template(s).  Each link-template in the list is
   identified by its name.  A link-template is a configuration template
   that can be used to configure links with identical properties.

   Configured MPLS-TE link-template list is found at
 


Gandhi, et al.            Expires May 14, 2015                 [Page 18]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   ("/global-cfg/link-templates") and has following subtree.


   +--rw global-cfg!
   |  +--rw link-templates* [name]
   |  |  +--rw name    string
   |  |  +--rw rsvp
   |  |     +--rw graceful-restart!
   |  |     |  +--rw restart-time?     uint32
   |  |     |  +--rw hello-interval?   uint32
   |  |     |  +--rw hello-misses?     uint32
   |  |     |  +--rw pesr
   |  |     |     +--rw disable?   boolean
   |  |     +--rw authentication
   |  |     |  +--rw key-chain?     string
   |  |     |  +--rw life-time?     uint32
   |  |     |  +--rw window-size?   uint32
   |  |     |  +--rw challenge?     boolean
   |  |     |  +--rw retransmits?   uint32
   |  |     +--rw signaling
   |  |     |  +--rw dscp?                       uint32
   |  |     |  +--rw hello-parameters
   |  |     |  |  +--rw graceful-restart-interface-based?   boolean
   |  |     |  +--rw rate-limiting-parameters
   |  |     |  |  +--rw limit-messages-per-interval?   uint32
   |  |     |  |  +--rw limit-interval-size?           uint32
   |  |     |  +--rw refresh-parameters
   |  |     |     +--rw refresh-interval?          uint32
   |  |     |     +--rw refresh-missed-messages?   uint32
   |  |     |     +--rw refresh-reduction
   |  |     |        +--rw bundle-message-max-size?    uint32
   |  |     |        +--rw disable?                    boolean
   |  |     |        +--rw reliable-ack-hold-time?     uint32
   |  |     |        +--rw reliable-ack-max-size?      uint32
   |  |     |        +--rw reliable-retransmit-time?   uint32
   |  |     |        +--rw reliable-srefresh?          boolean
   |  |     |        +--rw summary-max-size?           uint32
   |  |     +--rw reservable-bandwidth-percentages
   |  |        +--rw rdm-bc
   |  |        |  +--rw bandwidth-constraints
   |  |        |     +--rw maximum-reservable?   uint32
   |  |        |     +--rw bc-value*             uint32
   |  |        +--rw mam-bc
   |  |        |  +--rw bandwidth-constraints
   |  |        |     +--rw maximum-reservable?   uint32
   |  |        |     +--rw bc-value*             uint32
   |  |        +--rw mar-bc
   |  |           +--rw bandwidth-constraints
 


Gandhi, et al.            Expires May 14, 2015                 [Page 19]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   |  |              +--rw maximum-reservable?   uint32
   |  |              +--rw bc-value*             uint32



5.2.  Global State Data Model Subtree Structure

   This document defines the YANG data model subtree for global MPLS-TE
   operation state as follows:

   +--ro global-state
   |   +--ro global-state-to-be-defined


5.3.  Global RPC Data Model Subtree Structure

   This document defines the YANG data model subtree for global MPLS-TE
   RPCs as follows:

   +---x global-rpcs
   |   +---x te-global-rpcs-to-be-defined


5.4.  Global Notification Data Model Subtree Structure

   This document defines the YANG data model subtree for global MPLS-TE
   notifications as follows:

   +---n global-notifications
   |   +---n te-global-notifications-to-be-defined


5.5.  Tunnel Configuration Data Model Subtree Structure

   This document defines the YANG data model subtree for MPLS-TE tunnel
   configuration as follows:


   +--rw tunnels-cfg!
   |  +--rw template?   leafref
   |  +--rw tunnel* [name type]
   |     +--rw name                    string
   |     +--rw type                    mtt:tunnel-type
   |     +--rw identifier?             uint16
   |     +--rw description?            string
   |     +--rw admin-status?           enumeration
   |     +--rw path-protection?        boolean
   |     +--rw backup-tunnel!
 


Gandhi, et al.            Expires May 14, 2015                 [Page 20]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   |     |  +--rw backup-bandwidth
   |     |     +--rw value?   uint32
   |     |     +--rw type?    mtt:backup-bandwidth-type
   |     +--rw path-selection
   |     |  +--rw cost-limit?        uint32
   |     |  +--rw hop-limit?         uint8
   |     |  +--rw metric-type?       mtt:path-metric-type
   |     |  +--rw tiebreaker-type?   mtt:path-tiebreaker-type
   |     |  +--rw ignore-overload?   boolean
   |     +--rw source?                 inet:ip-address
   |     +--rw fast-reroute!
   |     |  +--rw bandwidth-protection-desired?   boolean
   |     |  +--rw node-protection-desired?        boolean
   |     +--rw record-route?           boolean
   |     +--rw signaled-name?          string
   |     +--rw priority
   |     |  +--rw setup?   uint8
   |     |  +--rw hold?    uint8
   |     +--rw soft-preemption?        boolean
   |     +--rw signaled-bandwidth
   |     |  +--rw type?    mtt:bandwidth-type
   |     |  +--rw value?   uint32
   |     +--rw affinity
   |     |  +--rw (style)?
   |     |     +--:(bitmap)
   |     |     |  +--rw value?         uint32
   |     |     |  +--rw mask?          uint32
   |     |     +--:(named)
   |     |        +--rw constraints* [action]
   |     |           +--rw action        mtt:affinity-action-type
   |     |           +--rw constraint
   |     |              +--rw affinity-list* [name]
   |     |                 +--rw name    string
   |     +--rw logging
   |     |  +--rw (event-type)?
   |     |     +--:(all)
   |     |     |  +--rw all?                     boolean
   |     |     +--:(bfd-status)
   |     |     |  +--rw bfd-status?              boolean
   |     |     +--:(link-status)
   |     |     |  +--rw link-status?             boolean
   |     |     +--:(lsp-status)
   |     |     |  +--rw (event)?
   |     |     |     +--:(all)
   |     |     |     |  +--rw all-lsp-status-events?   boolean
   |     |     |     +--:(subset)
   |     |     |        +--rw events*      mtt:lsp-status-event-type
   |     |     +--:(cspf-failure)
 


Gandhi, et al.            Expires May 14, 2015                 [Page 21]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   |     |        +--rw cspf-failure-events?     boolean
   |     +--rw auto-bandwidth!
   |     |  +--rw adjustment-threshold?    uint8
   |     |  +--rw adjustment-limit?        uint8
   |     |  +--rw adjustment-min-change?   uint32
   |     |  +--rw overflow-threshold?      uint8
   |     |  +--rw overflow-limit?          uint8
   |     |  +--rw overflow-min-change?     uint32
   |     |  +--rw underflow-threshold?     uint8
   |     |  +--rw underflow-limit?         uint8
   |     |  +--rw underflow-min-change?    uint32
   |     |  +--rw collect-only?            boolean
   |     |  +--rw application-frequency?   uint32
   |     |  +--rw bandwidth-limit
   |     |     +--rw min-limit?   uint32
   |     |     +--rw max-limit?   uint32
   |     +--rw bfd-over-tunnel!
   |     |  +--rw type?               mtt:bfd-type
   |     |  +--rw encap-mode?         mtt:bfd-encap-mode-type
   |     |  +--rw bringup-timeout?    uint32
   |     |  +--rw dampening?          uint32
   |     |  +--rw lsp-ping
   |     |  |  +--rw disable?    boolean
   |     |  |  +--rw interval?   uint32
   |     |  +--rw minimum-interval?   uint32
   |     |  +--rw multiplier?         uint32
   |     +--rw (routing-choice)?
   |     |  +--:(autoroute)
   |     |  |  +--rw autoroute-announce!
   |     |  |     +--rw routing-afs*       inet:ip-version
   |     |  |     +--rw (metric-type)?
   |     |  |        +--:(metric)
   |     |  |        |  +--rw metric?            uint32
   |     |  |        +--:(relative-metric)
   |     |  |        |  +--rw relative-metric?   int32
   |     |  |        +--:(absolute-metric)
   |     |  |           +--rw absolute-metric?   uint32
   |     |  +--:(forwarding-adjacency)
   |     |     +--rw forwarding-adjacency!
   |     |        +--rw holdtime?      uint32
   |     |        +--rw routing-afs*   inet:ip-version
   |     +--rw forwarding
   |     |  +--rw load-share?   uint32
   |     |  +--rw (policy-type)?
   |     |     +--:(class)
   |     |     |  +--rw class
   |     |     |     +--rw class?   uint8
   |     |     +--:(group)
 


Gandhi, et al.            Expires May 14, 2015                 [Page 22]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   |     |        +--rw group
   |     |           +--rw classes*   uint8
   |     +--rw bidirectional
   |     |  +--rw association
   |     |     +--rw id?              uint16
   |     |     +--rw source?          inet:ip-address
   |     |     +--rw global-source?   inet:ip-address
   |     |     +--rw type?            mtt:bidir-association-type
   |     +--rw destination* [address]
   |     |  +--rw address    inet:ip-address
   |     |  +--rw paths* [po-index]
   |     |     +--rw po-index          uint8
   |     |     +--rw (type)?
   |     |     |  +--:(dynamic)
   |     |     |  |  +--rw dynamic?          boolean
   |     |     |  +--:(explicit)
   |     |     |     +--rw hops* [hop-index]
   |     |     |        +--rw hop-index      uint8
   |     |     |        +--rw hop-address?   mtt:hop-address-type
   |     |     |        +--rw hop-action?    mtt:hop-action-type
   |     |     +--rw igp-constraint
   |     |     |  +--rw instance-id?   string
   |     |     |  +--rw igp?           enumeration
   |     |     |  +--rw (igp-type)?
   |     |     |     +--:(isis)
   |     |     |     |  +--rw isis
   |     |     |     |     +--rw level?   uint8
   |     |     |     +--:(ospf)
   |     |     |        +--rw ospf
   |     |     |           +--rw area?   uint32
   |     |     +--rw no-validation?    boolean
   |     |     +--rw lockdown?         boolean



5.5.1.  Tunnel List

   The data model for tunnels-cfg presented in this document uses a flat
   list of tunnel(s).  Each tunnel in the list is identified by its name
   and a mandatory "tunnel-type".

   Configured MPLS-TE tunnel list is found at ("/tunnels-cfg/tunnel").


5.6.  Tunnel State Data Model Subtree Structure

   This document defines the YANG data model subtree for MPLS-TE tunnel
   state as follows:
 


Gandhi, et al.            Expires May 14, 2015                 [Page 23]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   +--ro tunnels-state
   |  +--ro tunnel* [name type]
   |     +--ro name    string
   |     +--ro type    mtt:tunnel-type
   |     +--ro tunnels-state-to-be-defined

5.7.  Tunnel RPC Data Model Subtree Structure

   This document defines the YANG data model subtree for MPLS-TE tunnel
   RPCs as follows:

   +---x tunnels-rpc
   |  +---x tunnels-rpcs-to-be-defined


5.8.  Tunnel Notification Data Model Subtree Structure

   This document defines the YANG data model subtree for MPLS-TE tunnel
   notifications as follows:

   +---n tunnels-notif
   |  +---n tunnels-notifications-to-be-defined


5.9.  LSP Configuration Data Model Subtree Structure

   This document defines the YANG data model subtree for MPLS-TE P2P and
   P2MP LSP configuration as the following tree structure:


   +--rw tunnels-cfg!
   |  +--rw template?   leafref
   |  +--rw tunnel* [name type]
   |     +--rw name                    string
   |     +--rw type                    mtt:tunnel-type
   |     +--rw (tunnel-type)?
   |        +--:(p2p)
   |        |  +--rw p2p-properties* [po-index]
   |        |     +--rw destination?   leafref
   |        |     +--rw po-index       leafref
   |        |     +--rw template?      leafref
   |        +--:(p2mp)
   |           +--rw p2mp-properties* [lsp-index]
   |              +--rw lsp-index          uint8
   |              +--rw p2mp-path-group* [destination]
   |                 +--rw destination    leafref
   |                 +--rw po-index?      leafref
   |                 +--rw template?      leafref
 


Gandhi, et al.            Expires May 14, 2015                 [Page 24]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


5.10.  LSP State Data Model Subtree Structure

   This document defines the YANG data model subtree for MPLS-TE P2P and
   P2MP LSP state as the following tree structure:


   +--ro lsps-state
   |  +--ro lsp* [name]
   |  |  +--ro name               string
   |     +--ro type               mtt:tunnel-type
   |  |  +--ro lsp-operational-state-to-be-defined



5.11.  LSP RPC Data Model Subtree Structure

   This document defines the YANG data model subtree for MPLS-TE P2P and
   P2MP LSP RPCs as the following tree structure:

   +---x lsps-rpc
   |  +---x lsp-rpcs-to-be-defined


5.12.  LSP Notification Data Model Subtree Structure

   This document defines the YANG data model subtree for TE P2P and P2MP
   LSP notifications as the following tree structure:

   +---n lsps-notif
   |  +---n lsp-notifications-to-be-defined


5.13.  Link Configuration Data Model Subtree Structure

   This document defines the YANG data model subtree for MPLS-TE enabled
   link configuration as follows:

   +--rw links-cfg
   |  +--rw template?   leafref
   |  +--rw link* [name]
   |     +--rw name                    string
   |     +--rw flooding
   |     |  +--rw thresholds
   |     |     +--rw (type)?
   |     |        +--:(single-step)
   |     |        |  +--rw up-step?      uint8
   |     |        |  +--rw down-step?    uint8
   |     |        +--:(multiple-steps)
 


Gandhi, et al.            Expires May 14, 2015                 [Page 25]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   |     |           +--rw up-steps* [value]
   |     |           |  +--rw value    uint8
   |     |           +--rw down-steps* [value]
   |     |              +--rw value    uint8
   |     +--rw fast-reroute-backups
   |     |  +--rw (type)?
   |     |     +--:(static-tunnel)
   |     |     |  +--rw configured-backups* [name]
   |     |     |     +--rw name    string
   |     |     +--:(auto-tunnel)
   |     |        +--rw auto-backup!
   |     |           +--rw template?                  leafref
   |     |           +--rw link-protection-only?      boolean
   |     |           +--rw backup-path-computation?   
                             mtt:path-computation-srlg-type
   |     +--rw igp
   |     |  +--rw admin-weight?   uint32
   |     |  +--rw affinities
   |     |  |  +--rw (type)?
   |     |  |     +--:(bitmap)
   |     |  |     |  +--rw bitmap?        uint32
   |     |  |     +--:(bitmap-extended)
   |     |  |     |  +--rw bit-indexed*   uint8
   |     |  |     +--:(names)
   |     |  |        +--rw names* [name]
   |     |  |           +--rw name    string
   |     |  +--rw srlgs
   |     |     +--rw (type)?
   |     |        +--:(srlg-name)
   |     |        |  +--rw names* [name]
   |     |        |     +--rw name    string
   |     |        +--:(srlg-value)
   |     |           +--rw values* [value]
   |     |              +--rw value    uint32
   |     +--rw rsvp
   |        +--rw graceful-restart!
   |        |  +--rw restart-time?     uint32
   |        |  +--rw hello-interval?   uint32
   |        |  +--rw hello-misses?     uint32
   |        |  +--rw pesr
   |        |     +--rw disable?   boolean
   |        +--rw authentication
   |        |  +--rw key-chain?     string
   |        |  +--rw life-time?     uint32
   |        |  +--rw window-size?   uint32
   |        |  +--rw challenge?     boolean
   |        |  +--rw retransmits?   uint32
   |        +--rw signaling
 


Gandhi, et al.            Expires May 14, 2015                 [Page 26]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   |        |  +--rw dscp?                       uint32
   |        |  +--rw hello-parameters
   |        |  |  +--rw graceful-restart-interface-based?   boolean
   |        |  +--rw rate-limiting-parameters
   |        |  |  +--rw limit-messages-per-interval?   uint32
   |        |  |  +--rw limit-interval-size?           uint32
   |        |  +--rw refresh-parameters
   |        |     +--rw refresh-interval?          uint32
   |        |     +--rw refresh-missed-messages?   uint32
   |        |     +--rw refresh-reduction
   |        |        +--rw bundle-message-max-size?    uint32
   |        |        +--rw disable?                    boolean
   |        |        +--rw reliable-ack-hold-time?     uint32
   |        |        +--rw reliable-ack-max-size?      uint32
   |        |        +--rw reliable-retransmit-time?   uint32
   |        |        +--rw reliable-srefresh?          boolean
   |        |        +--rw summary-max-size?           uint32
   |        +--rw reservable-bandwidths
   |           +--rw link-rdm-bc
   |           |  +--rw (value-type)?
   |           |     +--:(percentages)
   |           |     |  +--rw perc-values
   |           |     |     +--rw bandwidth-constraints
   |           |     |        +--rw maximum-reservable?   uint32
   |           |     |        +--rw bc-value*             uint32
   |           |     +--:(absolutes)
   |           |        +--rw abs-values
   |           |           +--rw bandwidth-constraints
   |           |              +--rw maximum-reservable?   uint32
   |           |              +--rw bc-value*             uint32
   |           +--rw link-mam-bc
   |           |  +--rw (value-type)?
   |           |     +--:(percentages)
   |           |     |  +--rw perc-values
   |           |     |     +--rw bandwidth-constraints
   |           |     |        +--rw maximum-reservable?   uint32
   |           |     |        +--rw bc-value*             uint32
   |           |     +--:(absolutes)
   |           |        +--rw abs-values
   |           |           +--rw bandwidth-constraints
   |           |              +--rw maximum-reservable?   uint32
   |           |              +--rw bc-value*             uint32
   |           +--rw link-mar-bc
   |              +--rw (value-type)?
   |                 +--:(percentages)
   |                 |  +--rw perc-values
   |                 |     +--rw bandwidth-constraints
   |                 |        +--rw maximum-reservable?   uint32
 


Gandhi, et al.            Expires May 14, 2015                 [Page 27]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   |                 |        +--rw bc-value*             uint32
   |                 +--:(absolutes)
   |                    +--rw abs-values
   |                       +--rw bandwidth-constraints
   |                          +--rw maximum-reservable?   uint32
   |                          +--rw bc-value*             uint32


5.13.1.  Link List

   The data model for links-cfg presented in this document uses a flat
   list of link(s).  Each link in the list is identified by its name.

   Configured MPLS-TE link list is found at ("/links-cfg/link").


5.14.  Link State Data Model Subtree Structure

   This document defines the YANG data model subtree for MPLS-TE enabled
   link state as follows:

   +--ro links-state
   |  +--ro link* [name]
   |  |  +--ro name               string
   |  |  +--ro link-operational-state-to-be-defined


5.15.  Link RPC Data Model Subtree Structure

   This document defines the YANG data model subtree for MPLS-TE enabled
   link RPCs as follows:

   +---x links-rpc
   |  +---x link-rpcs-to-be-defined


5.16.  Link Notification Data Model Subtree Structure

   This document defines the YANG data model subtree for MPLS-TE enabled
   link notifications as follows:

   +---n links-notif
   |  +---n link-notifications-to-be-defined





 


Gandhi, et al.            Expires May 14, 2015                 [Page 28]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


6.  IETF MPLS-TE YANG Generic Types Module

   <CODE BEGINS>

module ietf-mpls-te-types {

   namespace "urn:cisco:params:xml:ns:yang:ietf-mpls-te-types";

   /* Replace with IANA when assigned */
   prefix "mpls-te-types";

   import ietf-inet-types { prefix inet; }

   organization
     "IETF MPLS Working Group";

   contact
     "Rakesh Gandhi rgandhi@cisco.com
      Tarek Saad tsaad@cisco.com
      Robert Sawaya rsawaya@cisco.com";

   description
       "This module contains a collection of generally
        useful MPLS-TE specific
        derived YANG data types.";

   revision 2014-11-05 {
       description
           "Initial revision.";
   }

   /* Typedefs for MPLS-TE */

   typedef bc-model-type {
       description
          "Diff-Serve TE Bandwidth Constraint model type.";
       type enumeration {
           enum rdm {
               description
                   "Russian Doll bandwidth constraint
                   model type.";
           }
           enum mam {
               description
                   "Maximum Allocation bandwidth constraint
                   model type.";
           }
           enum mar {
 


Gandhi, et al.            Expires May 14, 2015                 [Page 29]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


               description
                   "Maximum Allocation with Reservation
                   bandwidth constraint model type.";
           }
       }
       default rdm;
   }

   typedef bandwidth-type {
       description "MPLS-TE tunnel bandwidth type";
       type enumeration {
           enum CT0;
           enum CT1;
           enum CT2;
           enum CT3;
           enum CT4;
           enum CT5;
           enum CT6;
           enum CT7;
       }
       default CT0;
   }

   typedef lsp-status-event-type {
       description "Tunnel LSP status event type.";
       type enumeration {
           enum bandwidth-change;
           enum insufficient-bandwidth;
           enum record-route;
           enum reroute;
           enum state;
           enum switchover;
       }
   }

   typedef bandwidth-unit-type {
       description "Bandwidth unit type.";
       type enumeration {
           enum Gbps;
           enum Mbps;
           enum Kbps;
       }
       default Kbps;
   }

   typedef backup-bandwidth-type {
       description "FRR backup tunnel bandwidth protection type.";
       type enumeration {
 


Gandhi, et al.            Expires May 14, 2015                 [Page 30]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


           enum BC0;
           enum BC1;
           enum BC2;
           enum BC3;
           enum BC4;
           enum BC5;
           enum BC6;
           enum BC7;
           enum BC-any;
       }
       default BC-any;
   }

   typedef tunnel-type {
       type enumeration {
           enum p2p {
               description
                   "MPLS-TE point-to-point tunnel type.";
           }
           enum p2mp {
               description
                   "MPLS-TE point-to-multipoint tunnel type.";
           }
       }
       default p2p;
       description
           "Possible MPLS-TE tunnel types, default is point-to-point.";
   }

   typedef hop-address-type {
       type inet:ip-address;
   }

   typedef hop-action-type {
       type enumeration {
           enum include-strict {
               description "Include strict hop.";
           }
           enum include-loose {
               description "Include loose hop.";
           }
           enum exclude {
               description "Exclude strict hop.";
           }
       }
       default "include-strict";
   }

 


Gandhi, et al.            Expires May 14, 2015                 [Page 31]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   typedef bfd-type {
       type enumeration {
           enum classical {
               description "BFD classical session type.";
           }
           enum seamless {
               description "BFD seamless session type.";
           }
       }
       default "classical";
   }

   typedef path-metric-type {
       type enumeration {
           enum igp;
           enum te;
       }
       default igp;
       description "Path metric for CSPF.";
   }

   typedef path-tiebreaker-type {
       type enumeration {
           enum min-fill;
           enum max-fill;
           enum random;
       }
       default min-fill;
       description
           "Possible CSPF path tiebreakers for MPLS-TE tunnels.";
   }

   typedef bidir-association-type {
       type enumeration {
           enum corouted;
           enum non-corouted;
       }
       default non-corouted;
       description
           "Possible types of bidirectional tunnel association.";
   }

   typedef bfd-encap-mode-type {
       type enumeration {
           enum gal;
           enum ip;
       }
       default ip;
 


Gandhi, et al.            Expires May 14, 2015                 [Page 32]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


       description
           "Possible BFD transport modes when running over MPLS-TE
            LSPs.";
   }

   typedef affinity-action-type {
       type enumeration {
           enum include;
           enum exclude;
           enum include-strict;
           enum exclude-all;
       }
       description
           "Possible handling for affinity.";
   }

   typedef  path-computation-srlg-type {
       description "Path computation SRLG criteria.";
       type enumeration {
           enum srlg-none;
           enum srlg-strict;
           enum srlg-preferred;
           enum srlg-weighted;
       }
   }
}

<CODE ENDS>




















 


Gandhi, et al.            Expires May 14, 2015                 [Page 33]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


7.  IETF MPLS-TE YANG Module


<CODE BEGINS>


module ietf-mpls-te {

    namespace "urn:cisco:params:xml:ns:yang:ietf-mpls-te";

    /* Replace with IANA when assigned */
    prefix "mpls-te";

    import ietf-inet-types { prefix inet; }
    import ietf-mpls-te-types { prefix mtt; }

    organization
      "IETF MPLS Working Group";

    contact
      "Rakesh Gandhi rgandhi@cisco.com
       Tarek Saad tsaad@cisco.com
       Robert Sawaya rsawaya@cisco.com";

    description
        "YANG data module for MPLS-TE and RSVP-TE configuration, 
         state, RPC and notifications.";

    revision 2014-11-06 {
        description
            "Initial revision.";
    }

    /* Groupings for MPLS-TE */
    grouping igp-protocol-def {
         leaf instance-id {
              description
                  "Constrains the computed path to a specific IGP
                   instance.";
              type string;
         }
         leaf igp {
             description
                 "Constrains the computed path to a specific IGP.";
             type enumeration {
                 enum ospf;
                 enum isis;
             }
 


Gandhi, et al.            Expires May 14, 2015                 [Page 34]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


         }
         choice igp-type {
              description
                  "Constrains the computed path to a specific IGP
                   area or level.";
              container isis {
                  leaf level {
                      type uint8 {
                           range "1..2";
                      }
                  }
              }
              container ospf {
                  leaf area {
                       type uint32 {
                            range "0..4294967295";
                       }
                  }
              }
         }
    }

    grouping igp-te-domains {
        container igp-te-domains {
            description "MPLS-TE enabled IGPs.";
            list igp-te-domain {
                key "instance-id";
                description "MPLS-TE enabled IGP instance.";
                uses igp-protocol-def;

                leaf te-router-id {
                    description "MPLS-TE Router ID.";
                    type inet:ip-address;
                }
                leaf-list routing-afs {
                    type inet:ip-version;
                }
            }
        }
    }

    /* Groupings for MPLS-TE Tunnels */
    grouping lsp-properties {
        choice lsp-type {
            /* Point-to-point LSP properties */
            case p2p {
                list p2p-properties {
                    when "/tunnels-cfg/tunnel/type = p2p";
 


Gandhi, et al.            Expires May 14, 2015                 [Page 35]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                    key "po-index";
                    description "An index identifying a set of LSP
                                 properties, p2p path-option index.";
                    /* definition of the destination 
                       and associated path */
                    uses path-option-reference;
                    uses tunnel-template-leaf;
                }
            }

            /* Point-to-multipoint LSP properties */
            case p2mp {
                when "/tunnels-cfg/tunnel/type = p2mp";
                list p2mp-properties {
                    key "lsp-index";
                    leaf lsp-index {
                        description "An index identifying a set of LSP
                                     properties and their paths.";
                        type uint8 {
                             range "0..255";
                        }
                    }

                    /* definition of the destination 
                       and associated path */
                    list p2mp-path-group {
                        key "destination";
                        description "List of destinations 
                                     and their paths.";
                        uses path-option-reference;
                        uses tunnel-template-leaf;
                    }
                }
            }
        }
    }

    grouping path-option-reference {
        leaf destination {
            description "A reference to an MPLS-TE tunnel destination.";
            type leafref {
                path "/tunnels-cfg/tunnel/destination/address";
            }
        }
        leaf po-index {
            description "A reference to an MPLS-TE tunnel path-option.";
            type leafref {
                path "/tunnels-cfg/tunnel/destination
 


Gandhi, et al.            Expires May 14, 2015                 [Page 36]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                  [address=current()/../destination]/paths/po-index";
            }
        }
    }

    grouping path-properties {
        choice type {
            case dynamic {
                leaf dynamic {
                    description
                        "A CSPF dynamically computed path";
                    type boolean;
                }
            }
            case explicit {
                description
                    "An operator specified explicit path.";
                list hops {
                    key "hop-index";
                    leaf hop-index {
                        type uint8 {
                             range "0..255";
                        }
                    }
                    leaf hop-address {
                        description
                            "An IP hop address.";
                        type mtt:hop-address-type;
                    }
                    leaf hop-action {
                        description
                            "An IP hop action.";
                        type mtt:hop-action-type;
                    }
                }
            }
        }

        container igp-constraint {
            uses igp-protocol-def;
        }

        leaf no-validation {
            description
                "Indicates no validation checks to be attempted on this
                 path.";
            type boolean;
        }
 


Gandhi, et al.            Expires May 14, 2015                 [Page 37]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


        leaf lockdown {
            description
                "Indicates no reoptimization to be attempted for this
                 path.";
            type boolean;
        }
    }

    grouping bfd-over-tunnel {
        container bfd-over-tunnel {
            presence "Enable BFD fast-detect on the tunnel.";
            leaf type {
                type mtt:bfd-type;
            }
            leaf encap-mode {
                type mtt:bfd-encap-mode-type;
            }
            leaf bringup-timeout {
                type uint32 {
                     range "60..3600";
                }
            }
            leaf dampening {
                type uint32 {
                     range "1..518400000";
                }
            }
            container lsp-ping {
                leaf disable {
                    type boolean;
                    default false;
                }
                leaf interval {
                     type uint32 {
                          range "60..3600";
                     }
                }
            }
            leaf minimum-interval {
                type uint32 {
                     range "3..30000";
                }
            }
            leaf multiplier {
                type uint32 {
                     range "3..10";
                }
            }
 


Gandhi, et al.            Expires May 14, 2015                 [Page 38]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


        }
    }

    grouping path-selection {
        container path-selection {
            leaf cost-limit {
                description
                    "The tunnel path cost limit.";
                type uint32 {
                     range "1..4294967295";
                }

            }
            leaf hop-limit {
                description
                    "The tunnel path hop limit.";
                type uint8 {
                     range "1..255";
                }
            }
            leaf metric-type {
                description
                    "The tunnel path metric type.";
                type mtt:path-metric-type;
            }
            leaf tiebreaker-type {
                description
                    "The tunnel path computation tie breakers.";
                type mtt:path-tiebreaker-type;
            }
            leaf ignore-overload {
                description
                    "The tunnel path can traverse overloaded node.";
                type boolean;
            }
        }
    }

    grouping signaling-properties {
        description "LSP signaling properties.";
        leaf source {
            description
                "LSP source address.";
            type inet:ip-address;
        }
        container fast-reroute {
            presence "Requests FRR local protection on LSRs.";
            leaf bandwidth-protection-desired {
 


Gandhi, et al.            Expires May 14, 2015                 [Page 39]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                description
                    "Request FRR bandwidth protection on LSRs.";
                type boolean;
            }
            leaf node-protection-desired {
                description
                    "Request FRR node protection on LSRs.";
                type boolean;
            }
        }
        leaf record-route {
            description
                "Requests path RRO recording in RSVP PATH message.";
            type boolean;
        }
        leaf signaled-name {
            description
                "Sets the session name to use in the session attribute
                 object.";
            type string;
        }
        container priority {
            description
                "Sets the setup/hold priority to use in the session
                 attribute object.";
            leaf setup {
                type uint8 {
                     range "0..7";
                }
            }
            leaf hold {
                type uint8 {
                     range "0..7";
                }
            }
        }
        leaf soft-preemption {
            description
                "Requests soft-preemption in session 
                 attributes object at
                 at traversed LSR(s).";
            type boolean;
        }
        container signaled-bandwidth {
            description
                "Sets the requested bandwidth.";
            leaf type {
                 type mtt:bandwidth-type;
 


Gandhi, et al.            Expires May 14, 2015                 [Page 40]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


            }
            leaf value {
                type uint32 {
                     range "0..4294967295";
                }
            }
        }
    }

    grouping logging {
        container logging {
            choice event-type {
                case all {
                    leaf all {
                        type boolean;
                    }
                    description "Enables all MPLS-TE tunnel 
                                 event logging.";
                }
                case bfd-status {
                    leaf bfd-status {
                        type boolean;
                    }
                    description "Enable MPLS-TE tunnel BFD 
                                 specific event logging.";
                }
                case link-status {
                    leaf link-status {
                        type boolean;
                    }
                    description "Enable link status event logging.";
                }
                case lsp-status {
                    choice event {
                        case all {
                            leaf all-lsp-status-events {
                                type boolean;
                            }
                            description "Enables all LSP status 
                                         events logging.";
                        }
                        case subset {
                            leaf-list events {
                                type mtt:lsp-status-event-type;
                            }
                        }
                    }
                }
 


Gandhi, et al.            Expires May 14, 2015                 [Page 41]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                case cspf-failure {
                    leaf cspf-failure-events {
                        type boolean;
                    }
                    description "Enable MPLS-TE tunnel CSPF 
                                 failure event logging.";
                }
            }
        }
    }

    grouping affinity {
        container affinity {
            choice style {
                case bitmap {
                    leaf value {
                         type uint32 {
                              range "0..4294967295";
                         }
                    }
                    leaf mask {
                         type uint32 {
                              range "0..4294967295";
                         }
                    }
                }
                case named {
                    list constraints {
                        key "action";
                        leaf action {
                             type mtt:affinity-action-type;
                        }
                        container constraint {
                            list affinity-list {
                                key "name";
                                leaf name {
                                     type string;
                                }
                            }
                        }
                    }
                }
            }
        }
    }

    grouping routing-properties {
        choice routing-choice {
 


Gandhi, et al.            Expires May 14, 2015                 [Page 42]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


            description
                "Announces the tunnel to IGP as either 
                 autoroute or forwarding adjacency.";
            case autoroute {
                container autoroute-announce {
                    presence "Enable autoroute announce.";
                    description
                        "Announce the MPLS-TE tunnel as autoroute to 
                         IGP for use as IGP shortcut.";
                    leaf-list routing-afs {
                         type inet:ip-version;
                    }
                    choice metric-type {
                        leaf metric {
                            type uint32 {
                                 range "1..2147483647";
                            }
                        }
                        leaf relative-metric {
                            type int32 {
                                 range "-10..10";
                            }
                        }
                        leaf absolute-metric {
                            type uint32 {
                                 range "1..2147483647";
                            }
                        }
                    }
                }
            }
            case forwarding-adjacency {
                container forwarding-adjacency {
                    presence "Enable forwarding adjacency 
                              on the tunnel.";
                    description
                        "Announce the MPLS-TE tunnel 
                         as forwarding adjacency.";
                    leaf holdtime {
                        description
                            "Holdtime in seconds after 
                             tunnel becomes UP.";
                        type uint32 {
                             range "0..4294967295";
                        }
                    }
                    leaf-list routing-afs {
                         type inet:ip-version;
 


Gandhi, et al.            Expires May 14, 2015                 [Page 43]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                    }
                }
            }
        }
    }

    grouping forwarding {
        description "Properties for using tunnel in forwarding.";
        container forwarding {
            leaf load-share {
                 description "ECMP tunnel forwarding 
                              load-share factor.";
                 type uint32 {
                      range "1..4294967295";
                 }
            }
            choice policy-type {
                container class {
                    leaf class {
                         type uint8 {
                              range "1..7";
                         }
                    }
                }
                container group {
                    leaf-list classes {
                         type uint8 {
                              range "1..7";
                         }
                    }
                }
            }
        }
    }

    grouping auto-bandwidth {
        container auto-bandwidth {
            presence "Enabled MPLS-TE tunnel 
                      auto-bandwidth feature.";
            description
                "MPLS-TE tunnel auto-bandwidth 
                 configuration parameters.";
            leaf adjustment-threshold {
                description
                    "Auto-bandwidth change percent 
                     to trigger adjustment.";
                type uint8 {
                     range "1..100";
 


Gandhi, et al.            Expires May 14, 2015                 [Page 44]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                }
            }
            leaf adjustment-limit {
                description
                    "Auto-bandwidth consecutive collections to 
                     trigger adjustment.";
                type uint8 {
                     range "1..10";
                }
            }
            leaf adjustment-min-change {
                description
                    "Auto-bandwidth bandwidth change value to 
                     trigger an adjustment.";
                type uint32 {
                     range "1..4294967295";
                }
            }
            leaf overflow-threshold {
                description
                    "Auto-bandwidth change percent 
                     to trigger overflow.";
                type uint8 {
                     range "1..100";
                }
            }
            leaf overflow-limit {
                description
                    "Auto-bandwidth consecutive collections 
                     to trigger overflow.";
                type uint8 {
                     range "1..10";
                }
            }
            leaf overflow-min-change {
                description
                    "Auto-bandwidth bandwidth change value to 
                     trigger an overflow.";
                type uint32 {
                     range "1..4294967295";
                }
            }
            leaf underflow-threshold {
                description
                    "Auto-bandwidth change percent 
                     to trigger underflow.";
                type uint8 {
                     range "1..100";
 


Gandhi, et al.            Expires May 14, 2015                 [Page 45]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                }
            }
            leaf underflow-limit {
                description
                    "Auto-bandwidth consecutive collections 
                     to trigger underflow.";
                type uint8 {
                     range "1..10";
                }
            }
            leaf underflow-min-change {
                description
                    "Auto-bandwidth bandwidth change value 
                     to trigger an underflow.";
                type uint32 {
                     range "1..4294967295";
                }
            }
            leaf collect-only {
                description
                    "Auto-bandwidth collection only mode.";
                type boolean;
            }
            leaf application-frequency {
                description
                    "Auto-bandwidth application 
                     interval in seconds.";
                type uint32 {
                     range "5..10080";
                }
            }
            container bandwidth-limit {
                description
                    "min/max bandwidth auto-bw can apply on a tunnel.";
                leaf min-limit {
                     type uint32 {
                          range "0..4294967295";
                     }
                }
                leaf max-limit {
                     type uint32 {
                          range "0..4294967295";
                     }
                }
            }
        }
    }

 


Gandhi, et al.            Expires May 14, 2015                 [Page 46]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


    grouping backup-bandwidth {
        container backup-bandwidth {
            when "/tunnels-cfg/tunnel/backup-tunnel = true";
            description
                "The backup bandwidth that can be protected by this
                 backup tunnel.";
            leaf value {
                type uint32 {
                     range "1..4294967295";
                }
            }
            leaf type {
                type mtt:backup-bandwidth-type;
            }
        }
    }

    grouping bidirectional-associated {
        container bidirectional {
            description
                "MPLS-TE associated bidirectional tunnel attributes.";
            container association {
                leaf id {
                     description
                         "The MPLS-TE tunnel association identifier.";
                     type uint16;
                }
                leaf source {
                     description
                            "The MPLS-TE tunnel association source.";
                     type inet:ip-address;
                }
                leaf global-source {
                     description
                            "The MPLS-TE tunnel association global
                             source.";
                     type inet:ip-address;
                }
                leaf type {
                     description "The MPLS-TE tunnel association type.";
                     type mtt:bidir-association-type;
                }
            }
        }
    }

    /* MPLS-TE Tunnel Template Configuration Data */
    grouping tunnel-template {
 


Gandhi, et al.            Expires May 14, 2015                 [Page 47]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


        leaf name {
            description "MPLS-TE tunnel-template name.";
            type string;
        }
        uses path-selection;
        uses signaling-properties;
        uses affinity;
        uses logging;
        uses auto-bandwidth;
        uses bfd-over-tunnel;
        uses routing-properties;
        uses forwarding;
    }

    grouping tunnel-template-leaf {
        leaf template {
            description
                "Name of the template to use for 
                 tunnel properties.";
            type leafref {
                path "/global-cfg/tunnel-templates/name";
            }
        }
    }

    /* groupings for rsvp */
    grouping rsvp-graceful-restart {
        description "Configure RSVP Graceful-Restart parameters.";
        container graceful-restart {
            presence "Enable RSVP graceful restart on the node.";

            leaf restart-time {
                description "Graceful restart time (seconds).";
                type uint32 {
                     range "60..3600";
                }
            }
            leaf hello-interval {
                description "Configure interval between successive 
                             Hello messages in milliseconds.";
                type uint32 {
                     range "3000..30000";
                }
            }
            leaf hello-misses {
                description "Configure max number of consecutive 
                             missed Hello messages.";
                type uint32 {
 


Gandhi, et al.            Expires May 14, 2015                 [Page 48]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                     range "1..10";
                }
            }
            container pesr {
                description "Sending Path Error with 
                             Path State Removal flag.";
                leaf disable {
                     type boolean;
                }
            }
        }
    }

    grouping rsvp-authentication {
        container authentication {
            description "Configure RSVP authentication.";
            leaf key-chain {
                description "Key chain name to authenticate RSVP 
                             signaling messages.";
                type string {
                     length "1..32";
                }
            }
            leaf life-time {
                description "Life time for each security association";
                type uint32 {
                     range "30..86400";
                }
            }
            leaf window-size {
                description "Window-size to limit number of 
                             out-of-order messages.";
                type uint32 {
                     range "1..64";
                }
            }
            leaf challenge {
                 description "Enable challenge messages.";
                 type boolean;
            }
            leaf retransmits {
                 description "Number of retransmits when 
                             messages are dropped.";
                 type uint32 {
                      range "1..10000";
                 }
            }
        }
 


Gandhi, et al.            Expires May 14, 2015                 [Page 49]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


    }

    grouping rsvp-refresh-reduction {
        container refresh-reduction {
             description "Configure RSVP Refresh Reduction parameters.";
             leaf bundle-message-max-size {
                  description "Configure maximum size (bytes) of a 
                               single RSVP Bundle message.";
                      type uint32 {
                           range "512..65000";
                      }
                  }
                  leaf disable {
                       description "Disable refresh reduction.";
                       type boolean;
                  }
                  leaf reliable-ack-hold-time {
                       description "Configure hold time in milliseconds 
                                    for sending RSVP ACK message(s).";
                       type uint32 {
                            range "100..5000";
                       }
                  }
                  leaf reliable-ack-max-size {
                        description "Configure max size of a 
                                     single RSVP ACK message.";
                        type uint32 {
                             range "20..65000";
                       }
                  }
                  leaf reliable-retransmit-time {
                        description "Configure min delay in 
                                     milliseconds 
                                     to wait for an ACK 
                                     before a retransmit.";
                        type uint32 {
                             range "100..10000";
                        }
                  }
                  leaf reliable-srefresh {
                        description "Configure use of reliable 
                                     messaging for summary refresh.";
                        type boolean;
                  }
                  leaf summary-max-size {
                         description "Configure max size (bytes) 
                                      of a single RSVP 
                                      summary refresh message.";
 


Gandhi, et al.            Expires May 14, 2015                 [Page 50]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                         type uint32 {
                              range "20..65000";
                         }
                  }
          }
    }

    grouping rsvp-signaling {
        container signaling {
            description "Configure RSVP signaling properties.";
            leaf dscp {
                description "DSCP for RSVP signaling messages.";
                type uint32 {
                     range "0..63";
                }
            }
            container hello-parameters {
                description "Configure Hello parameters.";
                leaf graceful-restart-interface-based {
                     description "Enable interface-based 
                                  Hello adjacency.";
                     type boolean;
                }
            }
            container rate-limiting-parameters {
                description "Configure rate limiting parameters.";
                leaf limit-messages-per-interval {
                     description "Number of messages to be 
                                  sent per interval.";
                     type uint32 {
                          range "1..500";
                     }
                }
                leaf limit-interval-size {
                    description "Size of an interval (milliseconds).";
                    type uint32 {
                         range "250..2000";
                    }
                }
            }
            container refresh-parameters {
                leaf refresh-interval {
                    description "Configure interval in seconds 
                                 between successive refreshes.";
                    type uint32 {
                         range "10..180";
                    }
                }
 


Gandhi, et al.            Expires May 14, 2015                 [Page 51]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                leaf refresh-missed-messages {
                    description "Configure max number of consecutive 
                                 missed messages for state expiry.";
                    type uint32 {
                         range "1..8";
                    }
                }
                uses rsvp-refresh-reduction; 
            }
        }
    }

    grouping bandwidth-constraints {
        description "Bandwidth constraints.";
        container bandwidth-constraints {
            leaf maximum-reservable {
                type uint32 {
                     range "0..4294967295";
                }
            }
            leaf-list bc-value {
                type uint32 {
                    range "0..4294967295";
                }
                max-elements 8;
            }
        }
    }

    grouping bandwidth-constraint-values {
        choice value-type {
             case percentages {
                 container perc-values {
                     uses bandwidth-constraints;
                 }
             }
             case absolutes {
                 container abs-values {
                     uses bandwidth-constraints;
                 }
             }
        }
    }

    grouping rsvp-parameters {
        container rsvp {
            description "RSVP global configuration.";
            uses rsvp-graceful-restart;
 


Gandhi, et al.            Expires May 14, 2015                 [Page 52]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


            uses rsvp-authentication;
            uses rsvp-signaling;

            container reservable-bandwidth-percentages {
                description "Reservable bandwidth percentage 
                             capacity values.";
                container rdm-bc {
                    description "Russian Doll Model Bandwidth 
                                 Constraints.";
                    uses  bandwidth-constraints;
                }
                container mam-bc {
                    description "Maximum Allocation Model 
                                 Bandwidth Constraints.";
                    uses  bandwidth-constraints;
                }
                container mar-bc {
                    description "Maximum Allocation with Reservation 
                                 Model Bandwidth Constraints.";
                    uses  bandwidth-constraints;
                }
            }
        }
    }

    /* Grouping for MPLS-TE Link */
    grouping flooding-parameters {
        description "Link flooding properties.";
        container thresholds {
            description "Flooding threshold values.";
            choice type {
                case single-step {
                    leaf up-step {
                         type uint8 {
                              range "0..100";
                         }
                    }
                    leaf down-step {
                         type uint8 {
                              range "0..100";
                         }
                    }
                }
                case multiple-steps {
                    list up-steps {
                        key "value";
                        description "Percentage bandwidth exceeded 
                                     that causes flooding.";
 


Gandhi, et al.            Expires May 14, 2015                 [Page 53]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                        leaf value {
                             type uint8 {
                                  range "0..100";
                             }
                        }
                    }
                    list down-steps {
                        key "value";
                        description "Percentage bandwidth crossed 
                                     that causes flooding.";
                        leaf value {
                             type uint8 {
                                  range "0..100";
                             }
                        }
                    }
                }
            }
        }
    }

    /* MPLS-TE Link Template Configuration Data */
    grouping link-template {
        leaf name {
            description "MPLS-TE link-template name.";
            type string;
        }
        uses rsvp-parameters;
    }

    grouping link-template-leaf {
        leaf template {
            description
                "Name of the template to use for 
                 TE link properties.";
            type leafref {
                path "/global-cfg/link-templates/name";
            }
        }
    }

    grouping auto-backup {
        description
            "Auto-tunnel backup properties.";
        container auto-backup {
            presence "Enable auto-tunnel backup on the node.";
            uses tunnel-template-leaf;
            leaf link-protection-only {
 


Gandhi, et al.            Expires May 14, 2015                 [Page 54]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                 description
                     "Limit tunnel to link protection only.";
                 type boolean;
            }
            leaf backup-path-computation {
                 type mtt:path-computation-srlg-type;
            }
        }
    }

    /* MPLS-TE Global Configuration Data */
    container global-cfg {
        description
            "Configuration data model for Global System-wide 
             MPLS Traffic Engineering.";
        presence "Enable MPLS-TE Global mode.";

        grouping timers {
            container timers {
                description
                    "Global system-wide TE timer values.";
                leaf lsp-bw-hold-delay {
                     description
                         "Bandwidth hold interval for LSP 
                          admission in seconds.";
                     type uint32 {
                          range "0..300";
                     }
                }
                leaf lsp-preemption-delay {
                     description
                         "Delay in seconds to preempt LSPs 
                          after preemption event triggered.";
                     type uint32 {
                          range "0..300";
                     }
                }
                leaf link-holddown-sigerr {
                     description
                         "Link holddown in topology database for CSPF. 
                          Delay in seconds after signaling error.";
                     type uint32 {
                          range "0..300";
                     }
                }
            }
        }

 


Gandhi, et al.            Expires May 14, 2015                 [Page 55]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


        grouping reoptimization {
            description
                "Global periodic LSP reoptimization parameters.";
            container reoptimization {
                presence "Enable TE tunnel reoptimization globally 
                          on the node.";

                leaf interval {
                     description
                         "Periodic reoptimization interval in seconds.";
                     type uint32 {
                          range "0..604800";
                     }
                }
                leaf installation-delay {
                     description
                         "Delay in seconds before installing 
                          reoptimizing LSP in forwarding 
                          to carry traffic.";
                     type uint32 {
                          range "0..3600";
                     }
                }
                leaf cleanup-delay {
                     description
                         "Delay in seconds before removing 
                          reoptimized LSP in forwarding.";
                     type uint32 {
                          range "0..300";
                     }
                }
                leaf load-balance {
                     type  boolean;
                     description
                         "Enable CSPF ECMP load-balancing 
                          during reoptimization.";
                }
                container trigger-events {
                    description
                        "Event that triggers reoptimization.";
                    leaf link-up {
                        description
                            "Enable immediate reoptimization 
                             for the link up event.";
                        type  boolean;
                    }
                }
            }
 


Gandhi, et al.            Expires May 14, 2015                 [Page 56]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


        }

        grouping flooding {
            description
                "Global periodic TE topology flooding parameters.";
            container flooding {
                presence "Enable TE topology flooding 
                          globally on the node.";

                leaf interval {
                     description
                         "Periodic topology flooding 
                          interval in seconds.";
                     type uint32 {
                          range "0..3600";
                     }
                }

                uses flooding-parameters;
            }
        }

        grouping affinity-map {
            description
                "Mapping of affinity name and value.";
            leaf name {
                description
                    "Name of the affinity.";
                type string;
            }
            choice type  {
                case bitmap {
                    leaf value {
                         type uint32;
                    }
                }
                case bitmap-extended {
                    leaf-list bit-indexed {
                        type uint8;
                    }
                }
            }
        }

        grouping affinity-maps {
            description
                "Mapping of Affinity name and value.";

 


Gandhi, et al.            Expires May 14, 2015                 [Page 57]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


            container affinity-maps {
                list affinity-map {
                    description "MPLS-TE affinity-maps.";
                    key "name";
                    uses affinity-map;
                }
            }
        }

        grouping srlg-map {
            description
                "Mapping of SRLG name, value and admin-weight.";
            leaf name {
                 description "SRLG name.";
                 type string;
            }
            leaf value {
                 description "SRLG value.";
                 type uint32 {
                      range "0..4294967295";
                 }
            }
            leaf admin-weight {
                 description "SRLG administrative weight 
                              penalty in path computation.";
                 type uint32 {
                      range "0..4294967295";
                 }
            }
        }

        grouping srlg-maps {
            description
                "List of SRLG name, value and admin-weight.";
            container srlg-maps {
                list srlg-map {
                     description "MPLS-TE srlg-map.";
                     key "name";
                     uses srlg-map;
                }
            }
        }

        grouping global-soft-preemption {
            description
                "Soft-preemption properties.";
            container global-soft-preemption {
                presence "Enable soft-preemption on the node.";
 


Gandhi, et al.            Expires May 14, 2015                 [Page 58]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                leaf timeout {
                     description
                         "Delay in seconds to teardown soft-preempted 
                          LSPs after soft-preemption event.";
                     type uint32 {
                          range "1..300";
                     }
                }
            }
        }

        grouping diff-serve-te {
            description
                "Diff-Serve TE properties.";
            container diff-serve-te {
                presence "Enable Diff-Serve TE on the node.";

                leaf bc-model {
                     description
                         "Diff-Serve TE bandwidth 
                          constraint model type.";
                     type mtt:bc-model-type;
                }
                list te-class {
                    description 
                        "Diff-Serve TE TE-class mapping.";
                    key "class-index";
                    leaf class-index {
                         description 
                            "TE-class index.";
                         type uint8 {
                              range "0..7";
                         }
                    }
                    leaf priority {
                         description 
                             "LSP setup or hold priority.";
                         type uint8 {
                              range "0..7";
                         }
                    }
                    leaf bc-value {
                         description 
                             "Bandwidth Constraint pool value.";
                         type uint8 {
                              range "0..7";
                         }
                    }
 


Gandhi, et al.            Expires May 14, 2015                 [Page 59]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                }
            }
        }

        grouping global-auto-bandwidth {
            description
                "Auto-bandwidth adjustment properties.";
            container global-auto-bandwidth {
                presence "Enable auto-bandwidth on the node.";

                leaf stats-collection-interval {
                     description
                         "Auto-bandwidth statistics collection 
                          interval in seconds.";
                     type uint32 {
                          range "1..10080";
                     }
                }
            }
        }

        grouping auto-mesh-property {
            description
                "Auto-tunnel mesh-group properties.";
            leaf mesh-group {
                 description
                    "Value of the mesh-group.";
                 type uint32 {
                      range "0..4294967295";
                 }
            }
            uses tunnel-template-leaf;
            leaf access-list-name {
                 description
                    "Name of the access-list.";
                 type string;
            }
            leaf one-hop-only {
                 description
                    "Limit tunnel to one-hop away nodes only.";
                 type boolean;
            }
            leaf disable {
                 description
                    "Disable auto-tunnel creation for
                     given mesh-group.";
                 type boolean;
            }
 


Gandhi, et al.            Expires May 14, 2015                 [Page 60]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


        }

        grouping auto-mesh-groups {
            description  "Auto-tunnel mesh-groups."; 
            container auto-mesh-groups {
                presence  "Enable auto-tunnel mesh-groups 
                           on this node."; 
                list auto-mesh {
                     description "MPLS-TE auto-tunnel mesh-groups.";
                     key "mesh-group";
                     uses auto-mesh-property;
                }
            }
        }

        grouping pce {
            description  "Path Computation Element Properties."; 
            container pce {
                presence  "Enable Path Computation Element 
                           on this node."; 
                leaf address {
                     description  "Address of the PCE."; 
                     type inet:ip-address;
                }
                leaf node-id {
                     description  "PCE node identifier."; 
                     type string;
                }
                choice password-type {
                      leaf password-clear {
                           description "Clear password."; 
                           type string;
                      }
                      leaf password-encrypted {
                           description "Encrypted password."; 
                           type string;
                      }
                }
                leaf dead-timer {
                     description "Deadtimer interval in seconds."; 
                     type uint32 {
                          range "0..255";
                     }
                }
                leaf keep-alive-time {
                     description "Keepalive interval in seconds."; 
                     type uint32 {
                          range "0..255";
 


Gandhi, et al.            Expires May 14, 2015                 [Page 61]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                     }
                }
                leaf keep-alive-tolerance-time {
                     description "Keepalive interval tolerance 
                                  in seconds."; 
                     type uint32 {
                          range "0..255";
                     }
                }
                container peer-table {
                         description "Configure PCE peers."; 
                         list peer {
                              key "peer-address"; 
                              description "PCE peer address.";
                              leaf peer-address{
                                   description "Address of PCE Peer."; 
                                   type inet:ip-address;
                              }
                         }
                         choice password-type {
                             leaf password-clear {
                                 description "Clear password."; 
                                 type string;
                             }
                             leaf password-encrypted {
                                  description "Encrypted password."; 
                                  type string;
                             }
                        }
                }
                leaf reoptimize-period {
                     description "PCE LSP reoptimization 
                                  period in seconds."; 
                     type uint32 {
                          range "0..604800";
                     }
                }
                leaf lsp-cleanup-time {
                     description "PCE LSP cleanup delay 
                                  without delegations."; 
                     type uint32 {
                          range "0..3600";
                     }
                }
                leaf request-timeout {
                     description "Request timeout value in seconds."; 
                     type uint32 {
                          range "5..100";
 


Gandhi, et al.            Expires May 14, 2015                 [Page 62]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                     }
                }
                container stateful-client {
                    description
                        "Stateful Path Computation 
                         Element properties."; 
                    container capabilities {
                        leaf instantiation {
                             type boolean;
                        }
                    }
                }
                container logging {
                    choice event-type {
                        container all {
                            presence "Enable all PCE event logging.";
                        }
                        container peer-status {
                            presence "Enable peer status 
                                      event logging.";
                        }
                    }
                }

            }
        }

        grouping load-share {
            container load-share {
                description "ECMP tunnel forwarding 
                             load-share properties.";
                container unequal {
                    presence "ECMP tunnels to load-share forwarding of 
                              traffic unequally.";

                    leaf bandwidth-based {
                         type boolean;
                         description
                             "ECMP tunnels to load-share 
                              forwarding of traffic 
                              based on tunnel bandwidth.";
                    }
                }
            }
        }

        grouping tail-signaling {
            description
 


Gandhi, et al.            Expires May 14, 2015                 [Page 63]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                "Signaling properties for LSP tail-end.";
            container tail-signaling {
                leaf advertise-explicit-null {
                     type boolean;
                }
            }
        }

        /* IGP-TE enabled domains 
         */
        uses igp-te-domains;

        /* Templates 
         */
        list tunnel-templates {
            description "MPLS-TE templates for tunnels.";
            key "name";
            uses tunnel-template;
        }

        list link-templates {
            description "MPLS-TE templates for links.";
            key "name";
            uses link-template;
        }

        /* Name/value maps */
        uses affinity-maps;
        uses srlg-maps;

        /* System-wide node properties */
        uses timers;
        uses flooding;
        uses reoptimization;
        uses load-share;
        uses tail-signaling;

        /* Specific feature properties */
        uses global-soft-preemption;
        uses diff-serve-te;
        uses global-auto-bandwidth;
        uses pce;
        uses auto-mesh-groups;
        uses auto-backup;
    }


    /* MPLS-TE Tunnel Configuration Data */
 


Gandhi, et al.            Expires May 14, 2015                 [Page 64]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


    container tunnels-cfg {
        description
            "Configuration, operational, notification and RPC data model
             for MPLS-TE tunnels.";
        presence "Enable MPLS-TE Global mode.";

        uses tunnel-template-leaf;

        list tunnel {
            key "name type";
            unique "identifier";
            description "MPLS-TE tunnel.";
            leaf name {
                type string;
                description "MPLS-TE tunnel name.";
            }
            leaf type {
                description "MPLS-TE tunnel type.";
                type mtt:tunnel-type;
            }
            leaf identifier {
                description
                    "MPLS-TE tunnel Identifier.";
                type uint16;
            }
            leaf description {
                description
                    "MPLS-TE tunnel description.";
                type string;
            }
            leaf admin-status {
                description "MPLS-TE tunnel administrative state.";
                type enumeration {
                     enum up;
                     enum down;
                }
                default up;
            }
            leaf path-protection {
                description "Enable MPLS-TE tunnel end-to-end 
                             path-protection.";
                type boolean;
            }
            container backup-tunnel {
                presence "Enable tunnel as being used for fast 
                          reroute backup.";

                uses backup-bandwidth;
 


Gandhi, et al.            Expires May 14, 2015                 [Page 65]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


            }

            uses path-selection;
            uses signaling-properties;
            uses affinity;
            uses logging;
            uses auto-bandwidth;
            uses bfd-over-tunnel;
            uses routing-properties;
            uses forwarding;

            uses bidirectional-associated;

            /* List of destinations and path(s) */
            list destination {
                key "address";
                description
                    "The MPLS-TE tunnel destination address.";
                leaf address {
                    type inet:ip-address;
                }
                list paths {
                    key "po-index";
                    leaf po-index {
                         type uint8 {
                              range "1..255";
                         }
                    }
                    uses path-properties;
                }
            }

            uses lsp-properties;
        }
    }

    /* MPLS-TE Link Configuration Data */
    container links-cfg {
        description
            "Configuration data model for MPLS-TE links.";

        uses link-template-leaf;

        list link {
            key "name";
            description "MPLS-TE links.";
            leaf name {
                 description "MPLS-TE link name.";
 


Gandhi, et al.            Expires May 14, 2015                 [Page 66]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                 type string;
            }

            container flooding {
                uses flooding-parameters;
            }

            container fast-reroute-backups {
                choice type {
                    case static-tunnel {
                        list configured-backups {
                            key "name";
                            description "List of backup tunnels to 
                                         protect this link.";
                            leaf name {
                                 type string;
                            }
                        }
                    }
                    case auto-tunnel {
                        uses auto-backup;
                    }
                }
            }

            container igp {
                leaf admin-weight {
                    description "MPLS-TE admin-weight.";
                    type uint32 {
                         range "0..4294967295";
                    }

                }

                container affinities {
                    choice type {
                        case bitmap {
                            leaf bitmap { 
                                 type uint32; 
                            }
                        }
                        case bitmap-extended {
                            leaf-list bit-indexed {
                                type uint8;
                            }
                        }
                        case names {
                            list names {
 


Gandhi, et al.            Expires May 14, 2015                 [Page 67]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                                key "name";
                                description "List of affinity names.";
                                leaf name { 
                                     type string; 
                                }
                            }
                        }
                    }
                }

                container srlgs {
                    choice type {
                        case srlg-name {
                            list names {
                                key "name";
                                description "List of SRLG names that 
                                    this link is part of.";
                                leaf name {
                                     type string;
                                }
                            }
                        }
                        case srlg-value {
                            list values {
                                key "value";
                                description "List of SRLG values that 
                                    this link is part of.";
                                leaf value {
                                     type uint32 {
                                          range "0..4294967295";
                                     }
                                }
                            }
                        }
                    }
                }
            }

            container rsvp {
                description "RSVP-TE configuration for the link.";

                uses rsvp-graceful-restart;
                uses rsvp-authentication;
                uses rsvp-signaling;

                container reservable-bandwidths {
                    description "Reservable bandwidth values.";
                    container link-rdm-bc {
 


Gandhi, et al.            Expires May 14, 2015                 [Page 68]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


                        uses  bandwidth-constraint-values;
                    }
                    container link-mam-bc {
                        uses  bandwidth-constraint-values;
                    }
                    container link-mar-bc {
                        uses  bandwidth-constraint-values;
                    }
                }
            }
        }
    }


    /* MPLS-TE Tunnel Operational Data */
    container tunnels-oper {
        config "false";
        /* mandatory "true"; */
        description "MPLS-TE tunnel operational state data.";
        list tunnel {
            key "name type";
            description "MPLS-TE tunnel.";
            leaf name {
                type string;
                description "MPLS-TE tunnel name.";
            }
            leaf type {
                description "MPLS-TE tunnel type.";
                type mtt:tunnel-type;
            }
        }
    }

    /* MPLS-TE Global Operational Data */
    container global-oper {
        config "false";
        description
            "Operational data model for Global MPLS-TE.";
    }

    /* MPLS-TE Links Operational Data */
    container links-oper {
        config "false";
        description
            "Operational data model for MPLS-TE links.";

        list link {
            key "name";
 


Gandhi, et al.            Expires May 14, 2015                 [Page 69]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


            description "MPLS-TE links.";
            leaf name {
                 type string;
                 description "MPLS-TE link name.";
            }
        }
    }

    /* MPLS-TE Tunnel RPCs/execution Data */
    rpc tunnels-rpc {
        description
            "Execution data for MPLS-TE tunnels.";
        input {
            leaf input-command {
                type string;
                default "";
                description "foo bar";
            }
        }
        output {
            leaf out-message {
                type string;
                default "";
                description "foo bar";
            }
        }
    }

    /* MPLS-TE Global RPCs/execution Data */
    rpc global-rpc {
        description
            "Execution data for MPLS-TE global.";
        input {
            leaf input-command {
                type string;
                default "";
                description "foo bar";
            }
        }
        output {
            leaf out-message {
                type string;
                default "";
                description "foo bar";
            }
        }
    }

 


Gandhi, et al.            Expires May 14, 2015                 [Page 70]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


    /* MPLS-TE links RPCs/execution Data */
    rpc links-rpc {
        description
            "Execution data for MPLS-TE links.";
        input {
            leaf input-command {
                type string;
                default "";
                description "foo bar";
            }
        }
        output {
            leaf out-message {
                type string;
                default "";
                description "foo bar";
            }
        }
    }


    /* MPLS-TE Tunnel Notification Data */
    notification tunnels-notif {
        description
            "Notification messages for MPLS-TE tunnels.";
        leaf name {
            type string;
            description "MPLS-TE tunnel name.";
            mandatory "true";
        }
        leaf type {
            type mtt:tunnel-type;
            mandatory "true";
        }
    }

    /* MPLS-TE Global Notification Data */
    notification global-notif {
        description
            "Notification messages for Global MPLS-TE.";
    }

    /* MPLS-TE Links Notification Data */
    notification links-notif {
        description
            "Notification messages for MPLS-TE links.";
        leaf name {
            type string;
 


Gandhi, et al.            Expires May 14, 2015                 [Page 71]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


            description "MPLS-TE link name.";
            mandatory "true";
        }
    }

}


<CODE ENDS>





8.  IANA Considerations

   This document registers a URI in the IETF XML registry [RFC3688].
   Following the format in [RFC3688], the following registration is
   requested to be made.

      URI: urn:ietf:params:xml:ns:yang:ietf-mpls-te
      XML: N/A, the requested URI is an XML namespace.

      URI: urn:ietf:params:xml:ns:yang:ietf-mpls-te-types
      XML: N/A, the requested URI is an XML namespace.


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

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

      name:       ietf-mpls-te-types
      namespace:  urn:ietf:params:xml:ns:yang:ietf-mpls-te-types
      prefix:     mpls-te-types
      reference:  RFC XXXX


9.  Security Considerations

   The YANG module defined in this memo is designed to be accessed via
   the NETCONF protocol [RFC6241].  The lowest NETCONF layer is the
   secure transport layer and the mandatory-to-implement secure
   transport is SSH [RFC6242].  The NETCONF access control model
   [RFC6536] provides means to restrict access for particular NETCONF
 


Gandhi, et al.            Expires May 14, 2015                 [Page 72]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


   users to a pre-configured subset of all available NETCONF protocol
   operations and content.

   There are a number of data nodes defined in the YANG module which are
   writable/creatable/deletable (i.e., config true, which is the
   default).  These data nodes may be considered sensitive or vulnerable
   in some network environments.  Write operations (e.g., <edit-config>)
   to these data nodes without proper protection can have a negative
   effect on network operations.  Following are the subtrees and data
   nodes and their sensitivity/vulnerability:

   /global-cfg:  This module specifies the global MPLS-TE configurations
   on a device.  Unauthorized access to this list could cause the device
   to ignore packets it should receive and process.

   /tunnels-cfg/tunnel:  This list specifies the configured MPLS-TE
   tunnels on a device.  Unauthorized access to this list could cause
   the device to ignore packets it should receive and process.

   /links-cfg/link:  This list specifies the configured MPLS-TE links on
   a device.  Unauthorized access to this list could cause the device to
   ignore packets it should receive and process.


10.  Acknowledgement

   TBA.



11.  References

11.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC3688]  Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
              January 2004.

   [RFC6020]  Bjorklund, M., "YANG - A Data Modeling Language for the
              Network Configuration Protocol (NETCONF)", RFC 6020,
              October 2010.

   [RFC6991]  Schoenwaelder, J., "Common YANG Data Types", RFC 6991,
              July 2013.


 


Gandhi, et al.            Expires May 14, 2015                 [Page 73]

Internet-Draft        Yang Data Model for MPLS TE      November 10, 2014


11.2.  Informative References

   [RFC2205]  Braden, B., Zhang, L., Berson, S., Herzog, S., and S.
              Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1
              Functional Specification", RFC 2205, September 1997.

   [RFC3209]  Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V.,
              and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP
              Tunnels", RFC 3209, December 2001.

   [RFC6241]  Enns, R., Bjorklund, M., Schoenwaelder, J., and A.
              Bierman, "Network Configuration Protocol (NETCONF)", RFC
              6241, June 2011.

   [RFC6242]  Wasserman, M., "Using the NETCONF Protocol over Secure
              Shell (SSH)", RFC 6242, June 2011.

   [RFC6536]  Bierman, A. and M. Bjorklund, "Network Configuration
              Protocol (NETCONF) Access Control Model", RFC 6536, March
              2012.






12.  Authors' Addresses

   Rakesh Gandhi
   Cisco Systems, Inc.

   Email: rgandhi@cisco.com


   Tarek Saad
   Cisco Systems, Inc.

   Email: tsaad@cisco.com


   Robert Sawaya
   Cisco Systems, Inc.

   Email: rsawaya@cisco.com







Gandhi, et al.            Expires May 14, 2015                 [Page 74]