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]