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. is one of: + for current x for deprecated o for obsolete is one of: rw for read-write configuration data ro for read-only non-configuration data -x for execution rpcs -n for notifications is the name of the node If the node is augmented into the tree from another module, its name is printed as : is one of: ? for an optional leaf or node ! for a presence container * for a leaf-list or list Brackets [] for a list's keys Curly braces {} for optional feature that make node conditional Colon : for marking case nodes Ellipses ("...") subtree contents not shown 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 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; } } } 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 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"; } } } 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., ) 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]