draft-ietf-teas-yang-rsvp-te-01.txt   draft-ietf-teas-yang-rsvp-te-02.txt 
TEAS Working Group V. Beeram TEAS Working Group V. Beeram
Internet-Draft Juniper Networks Internet-Draft Juniper Networks
Intended status: Standards Track T. Saad, Ed. Intended status: Standards Track T. Saad, Ed.
Expires: January 3, 2018 R. Gandhi Expires: May 2, 2018 R. Gandhi
Cisco Systems, Inc. Cisco Systems, Inc.
X. Liu X. Liu
Jabil Jabil
I. Bryskin I. Bryskin
Huawei Technologies Huawei Technologies
H. Shah H. Shah
Ciena Ciena
July 02, 2017 October 29, 2017
A YANG Data Model for RSVP-TE A YANG Data Model for RSVP-TE
draft-ietf-teas-yang-rsvp-te-01 draft-ietf-teas-yang-rsvp-te-02
Abstract Abstract
This document defines a YANG data model for the configuration and This document defines a YANG data model for the configuration and
management of RSVP (Resource Reservation Protocol) to establish management of RSVP (Resource Reservation Protocol) to establish
Traffic-Engineered (TE) Label-Switched Paths (LSPs) for MPLS (Multi- Traffic-Engineered (TE) Label-Switched Paths (LSPs) for MPLS (Multi-
Protocol Label Switching) and other technologies. Protocol Label Switching) and other technologies.
The model defines a generic RSVP-TE module for signaling LSPs that is The model defines a generic RSVP-TE module for signaling LSPs that is
technology agnostic. The generic RSVP-TE module is to be augmented technology agnostic. The generic RSVP-TE module is to be augmented
skipping to change at page 2, line 4 skipping to change at page 2, line 4
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on January 3, 2018. This Internet-Draft will expire on May 2, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 29 skipping to change at page 2, line 29
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 4 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 4
2. Design Considerations . . . . . . . . . . . . . . . . . . . . 5 2. Design Considerations . . . . . . . . . . . . . . . . . . . . 5
2.1. Module Hierarchy . . . . . . . . . . . . . . . . . . . . 5 2.1. Module Hierarchy . . . . . . . . . . . . . . . . . . . . 5
2.2. Data Organization . . . . . . . . . . . . . . . . . . . . 5 2.2. State Data Organization . . . . . . . . . . . . . . . . . 5
2.3. RSVP-TE Generic Model . . . . . . . . . . . . . . . . . . 6 2.3. RSVP-TE Generic Model . . . . . . . . . . . . . . . . . . 6
2.3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 6 2.3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 6
2.3.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 17 2.3.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 14
2.4. RSVP-TE MPLS Model . . . . . . . . . . . . . . . . . . . 28 2.4. RSVP-TE MPLS Model . . . . . . . . . . . . . . . . . . . 25
2.4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 28 2.4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 26
2.4.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 32 2.4.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 28
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 40
4. Security Considerations . . . . . . . . . . . . . . . . . . . 45 4. Security Considerations . . . . . . . . . . . . . . . . . . . 41
5. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 46 5. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 41
6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 46 6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 41
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 46 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 42
7.1. Normative References . . . . . . . . . . . . . . . . . . 46 7.1. Normative References . . . . . . . . . . . . . . . . . . 42
7.2. Informative References . . . . . . . . . . . . . . . . . 47 7.2. Informative References . . . . . . . . . . . . . . . . . 43
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 48 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 43
1. Introduction 1. Introduction
YANG [RFC6020] is a data definition language that was introduced to YANG [RFC6020] is a data definition language that was introduced to
define the contents of a conceptual data store that allows networked define the contents of a conceptual data store that allows networked
devices to be managed using NETCONF [RFC6241]. YANG is proving devices to be managed using NETCONF [RFC6241]. YANG is proving
relevant beyond its initial confines, as bindings to other interfaces relevant beyond its initial confines, as bindings to other interfaces
(e.g. ReST) and encoding other than XML (e.g. JSON) are being (e.g. ReST) and encoding other than XML (e.g. JSON) are being
defined. Furthermore, YANG data models can be used as the basis of defined. Furthermore, YANG data models can be used as the basis of
implementation for other interfaces, such as CLI and programmatic implementation for other interfaces, such as CLI and programmatic
skipping to change at page 5, line 34 skipping to change at page 5, line 34
The data pertaining to RSVP-TE in this document is divided into two The data pertaining to RSVP-TE in this document is divided into two
modules: a technology agnostic RSVP-TE module that holds generic modules: a technology agnostic RSVP-TE module that holds generic
parameters for RSVP-TE applicable to all technologies, and a parameters for RSVP-TE applicable to all technologies, and a
technology specific RSVP-TE module (e.g. for MPLS RSVP-TE) that holds technology specific RSVP-TE module (e.g. for MPLS RSVP-TE) that holds
parameters specific to the technology. parameters specific to the technology.
This document defines YANG data models for RSVP-TE, and RSVP-TE MPLS This document defines YANG data models for RSVP-TE, and RSVP-TE MPLS
configuration, state, notification and RPCs. The relationship configuration, state, notification and RPCs. The relationship
between the different modules is depicted in Figure 1. between the different modules is depicted in Figure 1.
2.2. Data Organization 2.2. State Data Organization
The approach described in [I-D.openconfig-netmod-opstate] is adopted
to represent data configuration for intended and applied
configuration, and derived state data. Each container in the model
holds a "config" and "state" sub-container.
The "config" sub-container holds the intended configurable
parameters, while the state sub-container holds both applied
configuration parameters as well as any derived state such as
counters or statistics information. The pure state data (for
example, protocol derived data) is also placed under the "state" sub-
container.
The decision to use this approach was made to better align with the The Network Management Datastore Architecture (NMDA)
MPLS consolidated model in [I-D.openconfig-mpls-consolidated-model], [I-D.dsdt-nmda-guidelines] addresses the "OpState" that was discussed
and maximize reusability of groupings defined in this document and in the IETF. As per NMDA guidelines for new models and models that
allow for possible convergence between the two models. are not concerned with the operational state of configuration
information, this revision of the draft adopts the NMDA proposal for
configuration and state data of this model.
TE basic +---------+ ^: import TE basic +---------+ ^: import
module | ietf-te | o: augment module | ietf-te | o: augment
+---------+ +---------+
| o | o
| | | |
v | v |
+--------------+ +--------------+
RSVP-TE module | ietf-rsvp-te |o . . . RSVP-TE module | ietf-rsvp-te |o . . .
+--------------+ \ +--------------+ \
skipping to change at page 7, line 7 skipping to change at page 7, line 7
o those that are specific to the RSVP-TE module o those that are specific to the RSVP-TE module
Below is a YANG tree representation for data items defined in the Below is a YANG tree representation for data items defined in the
RSVP-TE generic module: RSVP-TE generic module:
module: ietf-rsvp-te module: ietf-rsvp-te
augment augment
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
rsvp:rsvp/rsvp:globals: rsvp:rsvp/rsvp:globals:
+--rw global-soft-preemption! +--rw global-soft-preemption!
+--rw config +--rw soft-preemption-timeout? uint16
| +--rw soft-preemption-timeout? uint16
+--rw state
+--rw soft-preemption-timeout? uint16
augment augment
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
rsvp:rsvp/rsvp:interfaces: rsvp:rsvp/rsvp:interfaces:
+--rw rsvp-te-interface-attributes +--rw rsvp-te-interface-attributes
+--rw config
+--ro state +--ro state
augment augment
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
rsvp:rsvp/rsvp:interfaces/rsvp:interface: rsvp:rsvp/rsvp:interfaces/rsvp:interface:
+--rw rsvp-te-interface-attributes +--rw rsvp-te-interface-attributes
+--rw config
+--ro state +--ro state
augment augment
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
rsvp:rsvp/rsvp:globals/rsvp:sessions/rsvp:session/rsvp:state/ rsvp:rsvp/rsvp:globals/rsvp:sessions/rsvp:session/rsvp:state/
rsvp:psbs/rsvp:psb: rsvp:psbs/rsvp:psb:
+--ro tspec-average-rate? rt-types:bandwidth-ieee-float32 +--ro tspec-average-rate? rt-types:bandwidth-ieee-float32
+--ro tspec-size? rt-types:bandwidth-ieee-float32 +--ro tspec-size? rt-types:bandwidth-ieee-float32
+--ro tspec-peak-rate? rt-types:bandwidth-ieee-float32 +--ro tspec-peak-rate? rt-types:bandwidth-ieee-float32
+--ro min-policed-unit? uint32 +--ro min-policed-unit? uint32
+--ro max-packet-size? uint32 +--ro max-packet-size? uint32
skipping to change at page 7, line 44 skipping to change at page 7, line 39
rsvp:rsvp/rsvp:globals/rsvp:sessions/rsvp:session/rsvp:state/ rsvp:rsvp/rsvp:globals/rsvp:sessions/rsvp:session/rsvp:state/
rsvp:rsbs/rsvp:rsb: rsvp:rsbs/rsvp:rsb:
+--ro fspec-average-rate? rt-types:bandwidth-ieee-float32 +--ro fspec-average-rate? rt-types:bandwidth-ieee-float32
+--ro fspec-size? rt-types:bandwidth-ieee-float32 +--ro fspec-size? rt-types:bandwidth-ieee-float32
+--ro fspec-peak-rate? rt-types:bandwidth-ieee-float32 +--ro fspec-peak-rate? rt-types:bandwidth-ieee-float32
+--ro min-policed-unit? uint32 +--ro min-policed-unit? uint32
+--ro max-packet-size? uint32 +--ro max-packet-size? uint32
augment augment
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
rsvp:rsvp/rsvp:neighbors: rsvp:rsvp/rsvp:neighbors:
augment /te:te/te:tunnels/te:tunnel/te:config: augment /te:te/te:tunnels/te:tunnel:
+--rw lsp-signaled-name? string +--rw lsp-signaled-name? string
+--rw local-recording-desired? boolean +--rw local-recording-desired? boolean
+--rw se-style-desired? boolean +--rw se-style-desired? boolean
+--rw path-reevaluation-request? boolean +--rw path-reevaluation-request? boolean
+--rw soft-preemption-desired? boolean +--rw soft-preemption-desired? boolean
+--rw lsp-rerouting? enumeration +--rw lsp-rerouting? enumeration
+--rw lsp-integrity-required? boolean +--rw lsp-integrity-required? boolean
+--rw lsp-contiguous? boolean +--rw lsp-contiguous? boolean
+--rw lsp-stitching-desired? boolean +--rw lsp-stitching-desired? boolean
+--rw lsp-preplanned? boolean +--rw lsp-preplanned? boolean
skipping to change at page 8, line 39 skipping to change at page 8, line 35
+--ro path-reevaluation-request? boolean +--ro path-reevaluation-request? boolean
+--ro soft-preemption-desired? boolean +--ro soft-preemption-desired? boolean
+--ro lsp-rerouting? enumeration +--ro lsp-rerouting? enumeration
+--ro lsp-integrity-required? boolean +--ro lsp-integrity-required? boolean
+--ro lsp-contiguous? boolean +--ro lsp-contiguous? boolean
+--ro lsp-stitching-desired? boolean +--ro lsp-stitching-desired? boolean
+--ro lsp-preplanned? boolean +--ro lsp-preplanned? boolean
+--ro lsp-oob-mapping? boolean +--ro lsp-oob-mapping? boolean
+--ro explicit-route-objects +--ro explicit-route-objects
| +--ro incoming-explicit-route-hop* [index] | +--ro incoming-explicit-route-hop* [index]
| | +--ro index -> ../config/index | | +--ro index -> ../state/index
| | +--ro config
| | | +--ro index? uint32
| | | +--ro (type)?
| | | +--:(numbered)
| | | | +--ro numbered-hop
| | | | +--ro address? te-types:te-tp-id
| | | | +--ro hop-type? te-hop-type
| | | +--:(as-number)
| | | | +--ro as-number-hop
| | | | +--ro as-number? binary
| | | | +--ro hop-type? te-hop-type
| | | +--:(unnumbered)
| | | | +--ro unnumbered-hop
| | | | +--ro node-id? te-types:te-node-id
| | | | +--ro link-tp-id? te-types:te-tp-id
| | | | +--ro hop-type? te-hop-type
| | | +--:(label)
| | | | +--ro label-hop
| | | | +--ro value? rt-types:generalized-label
| | | +--:(sid)
| | | +--ro sid-hop
| | | +--ro sid? rt-types:generalized-label
| | +--ro state | | +--ro state
| | +--ro index? uint32 | | +--ro index? uint32
| | +--ro (type)? | | +--ro (type)?
| | +--:(numbered) | | +--:(numbered)
| | | +--ro numbered-hop | | | +--ro numbered-hop
| | | +--ro address? te-types:te-tp-id | | | +--ro address? te-types:te-tp-id
| | | +--ro hop-type? te-hop-type | | | +--ro hop-type? te-hop-type
| | +--:(as-number) | | +--:(as-number)
| | | +--ro as-number-hop | | | +--ro as-number-hop
| | | +--ro as-number? binary | | | +--ro as-number? binary
skipping to change at page 9, line 37 skipping to change at page 9, line 10
| | | +--ro node-id? te-types:te-node-id | | | +--ro node-id? te-types:te-node-id
| | | +--ro link-tp-id? te-types:te-tp-id | | | +--ro link-tp-id? te-types:te-tp-id
| | | +--ro hop-type? te-hop-type | | | +--ro hop-type? te-hop-type
| | +--:(label) | | +--:(label)
| | | +--ro label-hop | | | +--ro label-hop
| | | +--ro value? rt-types:generalized-label | | | +--ro value? rt-types:generalized-label
| | +--:(sid) | | +--:(sid)
| | +--ro sid-hop | | +--ro sid-hop
| | +--ro sid? rt-types:generalized-label | | +--ro sid? rt-types:generalized-label
| +--ro outgoing-explicit-route-hop* [index] | +--ro outgoing-explicit-route-hop* [index]
| +--ro index uint32 | +--ro index -> ../state/index
| +--ro config
| | +--ro index? uint32
| | +--ro (type)?
| | +--:(numbered)
| | | +--ro numbered-hop
| | | +--ro address? te-types:te-tp-id
| | | +--ro hop-type? te-hop-type
| | +--:(as-number)
| | | +--ro as-number-hop
| | | +--ro as-number? binary
| | | +--ro hop-type? te-hop-type
| | +--:(unnumbered)
| | | +--ro unnumbered-hop
| | | +--ro node-id? te-types:te-node-id
| | | +--ro link-tp-id? te-types:te-tp-id
| | | +--ro hop-type? te-hop-type
| | +--:(label)
| | | +--ro label-hop
| | | +--ro value? rt-types:generalized-label
| | +--:(sid)
| | +--ro sid-hop
| | +--ro sid? rt-types:generalized-label
| +--ro state | +--ro state
| +--ro index? uint32 | +--ro index? uint32
| +--ro (type)? | +--ro (type)?
| +--:(numbered) | +--:(numbered)
| | +--ro numbered-hop | | +--ro numbered-hop
| | +--ro address? te-types:te-tp-id | | +--ro address? te-types:te-tp-id
| | +--ro hop-type? te-hop-type | | +--ro hop-type? te-hop-type
| +--:(as-number) | +--:(as-number)
| | +--ro as-number-hop | | +--ro as-number-hop
| | +--ro as-number? binary | | +--ro as-number? binary
skipping to change at page 10, line 36 skipping to change at page 9, line 35
| | +--ro link-tp-id? te-types:te-tp-id | | +--ro link-tp-id? te-types:te-tp-id
| | +--ro hop-type? te-hop-type | | +--ro hop-type? te-hop-type
| +--:(label) | +--:(label)
| | +--ro label-hop | | +--ro label-hop
| | +--ro value? rt-types:generalized-label | | +--ro value? rt-types:generalized-label
| +--:(sid) | +--:(sid)
| +--ro sid-hop | +--ro sid-hop
| +--ro sid? rt-types:generalized-label | +--ro sid? rt-types:generalized-label
+--ro incoming-record-route-subobjects +--ro incoming-record-route-subobjects
| +--ro incoming-record-route-subobject* [index] | +--ro incoming-record-route-subobject* [index]
| +--ro index uint32 | +--ro index -> ../state/index
| +--ro (type)? | +--ro state
| +--:(numbered) | +--ro index? uint32
| | +--ro address? te-types:te-tp-id | +--ro (type)?
| | +--ro ip-flags? binary | +--:(numbered)
| +--:(unnumbered) | | +--ro address? te-types:te-tp-id
| | +--ro node-id? te-types:te-node-id | | +--ro ip-flags? binary
| | +--ro link-tp-id? te-types:te-tp-id | +--:(unnumbered)
| +--:(label) | | +--ro node-id? te-types:te-node-id
| +--ro value? rt-types:generalized-label | | +--ro link-tp-id? te-types:te-tp-id
| +--ro label-flags? binary | +--:(label)
| +--ro value? rt-types:generalized-label
| +--ro label-flags? binary
+--ro outgoing-record-route-subobjects +--ro outgoing-record-route-subobjects
+--ro outgoing-record-route-subobject* [index] +--ro outgoing-record-route-subobject* [index]
+--ro index uint32 +--ro index -> ../state/index
+--ro (type)? +--ro state
+--:(numbered) +--ro index? uint32
| +--ro address? te-types:te-tp-id +--ro (type)?
| +--ro ip-flags? binary +--:(numbered)
+--:(unnumbered) | +--ro address? te-types:te-tp-id
| +--ro node-id? te-types:te-node-id | +--ro ip-flags? binary
| +--ro link-tp-id? te-types:te-tp-id +--:(unnumbered)
+--:(label) | +--ro node-id? te-types:te-node-id
+--ro value? rt-types:generalized-label | +--ro link-tp-id? te-types:te-tp-id
+--ro label-flags? binary +--:(label)
+--ro value? rt-types:generalized-label
+--ro label-flags? binary
augment augment
/te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-path/ /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-path/
te:state/te:lsps/te:lsp: te:state/te:lsps/te:lsp:
+--ro associated-rsvp-session? -> +--ro associated-rsvp-session? ->
/rt:routing/control-plane-protocols/control-plane-protocol/ /rt:routing/control-plane-protocols/control-plane-protocol/
rsvp:rsvp/globals/sessions/session/local-index rsvp:rsvp/globals/sessions/session/local-index
+--ro lsp-signaled-name? string +--ro lsp-signaled-name? string
+--ro local-recording-desired? boolean +--ro local-recording-desired? boolean
+--ro se-style-desired? boolean +--ro se-style-desired? boolean
+--ro path-reevaluation-request? boolean +--ro path-reevaluation-request? boolean
+--ro soft-preemption-desired? boolean +--ro soft-preemption-desired? boolean
+--ro lsp-rerouting? enumeration +--ro lsp-rerouting? enumeration
+--ro lsp-integrity-required? boolean +--ro lsp-integrity-required? boolean
+--ro lsp-contiguous? boolean +--ro lsp-contiguous? boolean
+--ro lsp-stitching-desired? boolean +--ro lsp-stitching-desired? boolean
+--ro lsp-preplanned? boolean +--ro lsp-preplanned? boolean
+--ro lsp-oob-mapping? boolean +--ro lsp-oob-mapping? boolean
+--ro explicit-route-objects +--ro explicit-route-objects
| +--ro incoming-explicit-route-hop* [index] | +--ro incoming-explicit-route-hop* [index]
| | +--ro index -> ../config/index | | +--ro index -> ../state/index
| | +--ro config
| | | +--ro index? uint32
| | | +--ro (type)?
| | | +--:(numbered)
| | | | +--ro numbered-hop
| | | | +--ro address? te-types:te-tp-id
| | | | +--ro hop-type? te-hop-type
| | | +--:(as-number)
| | | | +--ro as-number-hop
| | | | +--ro as-number? binary
| | | | +--ro hop-type? te-hop-type
| | | +--:(unnumbered)
| | | | +--ro unnumbered-hop
| | | | +--ro node-id? te-types:te-node-id
| | | | +--ro link-tp-id? te-types:te-tp-id
| | | | +--ro hop-type? te-hop-type
| | | +--:(label)
| | | | +--ro label-hop
| | | | +--ro value? rt-types:generalized-label
| | | +--:(sid)
| | | +--ro sid-hop
| | | +--ro sid? rt-types:generalized-label
| | +--ro state | | +--ro state
| | +--ro index? uint32 | | +--ro index? uint32
| | +--ro (type)? | | +--ro (type)?
| | +--:(numbered) | | +--:(numbered)
| | | +--ro numbered-hop | | | +--ro numbered-hop
| | | +--ro address? te-types:te-tp-id | | | +--ro address? te-types:te-tp-id
| | | +--ro hop-type? te-hop-type | | | +--ro hop-type? te-hop-type
| | +--:(as-number) | | +--:(as-number)
| | | +--ro as-number-hop | | | +--ro as-number-hop
| | | +--ro as-number? binary | | | +--ro as-number? binary
skipping to change at page 12, line 29 skipping to change at page 11, line 10
| | | +--ro node-id? te-types:te-node-id | | | +--ro node-id? te-types:te-node-id
| | | +--ro link-tp-id? te-types:te-tp-id | | | +--ro link-tp-id? te-types:te-tp-id
| | | +--ro hop-type? te-hop-type | | | +--ro hop-type? te-hop-type
| | +--:(label) | | +--:(label)
| | | +--ro label-hop | | | +--ro label-hop
| | | +--ro value? rt-types:generalized-label | | | +--ro value? rt-types:generalized-label
| | +--:(sid) | | +--:(sid)
| | +--ro sid-hop | | +--ro sid-hop
| | +--ro sid? rt-types:generalized-label | | +--ro sid? rt-types:generalized-label
| +--ro outgoing-explicit-route-hop* [index] | +--ro outgoing-explicit-route-hop* [index]
| +--ro index uint32 | +--ro index -> ../state/index
| +--ro config
| | +--ro index? uint32
| | +--ro (type)?
| | +--:(numbered)
| | | +--ro numbered-hop
| | | +--ro address? te-types:te-tp-id
| | | +--ro hop-type? te-hop-type
| | +--:(as-number)
| | | +--ro as-number-hop
| | | +--ro as-number? binary
| | | +--ro hop-type? te-hop-type
| | +--:(unnumbered)
| | | +--ro unnumbered-hop
| | | +--ro node-id? te-types:te-node-id
| | | +--ro link-tp-id? te-types:te-tp-id
| | | +--ro hop-type? te-hop-type
| | +--:(label)
| | | +--ro label-hop
| | | +--ro value? rt-types:generalized-label
| | +--:(sid)
| | +--ro sid-hop
| | +--ro sid? rt-types:generalized-label
| +--ro state | +--ro state
| +--ro index? uint32 | +--ro index? uint32
| +--ro (type)? | +--ro (type)?
| +--:(numbered) | +--:(numbered)
| | +--ro numbered-hop | | +--ro numbered-hop
| | +--ro address? te-types:te-tp-id | | +--ro address? te-types:te-tp-id
| | +--ro hop-type? te-hop-type | | +--ro hop-type? te-hop-type
| +--:(as-number) | +--:(as-number)
| | +--ro as-number-hop | | +--ro as-number-hop
| | +--ro as-number? binary | | +--ro as-number? binary
skipping to change at page 13, line 28 skipping to change at page 11, line 35
| | +--ro link-tp-id? te-types:te-tp-id | | +--ro link-tp-id? te-types:te-tp-id
| | +--ro hop-type? te-hop-type | | +--ro hop-type? te-hop-type
| +--:(label) | +--:(label)
| | +--ro label-hop | | +--ro label-hop
| | +--ro value? rt-types:generalized-label | | +--ro value? rt-types:generalized-label
| +--:(sid) | +--:(sid)
| +--ro sid-hop | +--ro sid-hop
| +--ro sid? rt-types:generalized-label | +--ro sid? rt-types:generalized-label
+--ro incoming-record-route-subobjects +--ro incoming-record-route-subobjects
| +--ro incoming-record-route-subobject* [index] | +--ro incoming-record-route-subobject* [index]
| +--ro index uint32 | +--ro index -> ../state/index
| +--ro (type)? | +--ro state
| +--:(numbered) | +--ro index? uint32
| | +--ro address? te-types:te-tp-id | +--ro (type)?
| | +--ro ip-flags? binary | +--:(numbered)
| +--:(unnumbered) | | +--ro address? te-types:te-tp-id
| | +--ro node-id? te-types:te-node-id | | +--ro ip-flags? binary
| | +--ro link-tp-id? te-types:te-tp-id | +--:(unnumbered)
| +--:(label) | | +--ro node-id? te-types:te-node-id
| +--ro value? rt-types:generalized-label | | +--ro link-tp-id? te-types:te-tp-id
| +--ro label-flags? binary | +--:(label)
| +--ro value? rt-types:generalized-label
| +--ro label-flags? binary
+--ro outgoing-record-route-subobjects +--ro outgoing-record-route-subobjects
+--ro outgoing-record-route-subobject* [index] +--ro outgoing-record-route-subobject* [index]
+--ro index uint32 +--ro index -> ../state/index
+--ro (type)? +--ro state
+--:(numbered) +--ro index? uint32
| +--ro address? te-types:te-tp-id +--ro (type)?
| +--ro ip-flags? binary +--:(numbered)
+--:(unnumbered) | +--ro address? te-types:te-tp-id
| +--ro node-id? te-types:te-node-id | +--ro ip-flags? binary
| +--ro link-tp-id? te-types:te-tp-id +--:(unnumbered)
+--:(label) | +--ro node-id? te-types:te-node-id
+--ro value? rt-types:generalized-label | +--ro link-tp-id? te-types:te-tp-id
+--ro label-flags? binary +--:(label)
+--ro value? rt-types:generalized-label
+--ro label-flags? binary
augment augment
/te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/
te:p2p-secondary-path/te:state/te:lsps/te:lsp: te:p2p-secondary-path/te:state/te:lsps/te:lsp:
+--ro associated-rsvp-session? -> +--ro associated-rsvp-session? ->
/rt:routing/control-plane-protocols/control-plane-protocol/ /rt:routing/control-plane-protocols/control-plane-protocol/
rsvp:rsvp/globals/sessions/session/local-index rsvp:rsvp/globals/sessions/session/local-index
+--ro lsp-signaled-name? string +--ro lsp-signaled-name? string
+--ro local-recording-desired? boolean +--ro local-recording-desired? boolean
+--ro se-style-desired? boolean +--ro se-style-desired? boolean
+--ro path-reevaluation-request? boolean +--ro path-reevaluation-request? boolean
+--ro soft-preemption-desired? boolean +--ro soft-preemption-desired? boolean
+--ro lsp-rerouting? enumeration +--ro lsp-rerouting? enumeration
+--ro lsp-integrity-required? boolean +--ro lsp-integrity-required? boolean
+--ro lsp-contiguous? boolean +--ro lsp-contiguous? boolean
+--ro lsp-stitching-desired? boolean +--ro lsp-stitching-desired? boolean
+--ro lsp-preplanned? boolean +--ro lsp-preplanned? boolean
+--ro lsp-oob-mapping? boolean +--ro lsp-oob-mapping? boolean
+--ro explicit-route-objects +--ro explicit-route-objects
| +--ro incoming-explicit-route-hop* [index] | +--ro incoming-explicit-route-hop* [index]
| | +--ro index -> ../config/index | | +--ro index -> ../state/index
| | +--ro config
| | | +--ro index? uint32
| | | +--ro (type)?
| | | +--:(numbered)
| | | | +--ro numbered-hop
| | | | +--ro address? te-types:te-tp-id
| | | | +--ro hop-type? te-hop-type
| | | +--:(as-number)
| | | | +--ro as-number-hop
| | | | +--ro as-number? binary
| | | | +--ro hop-type? te-hop-type
| | | +--:(unnumbered)
| | | | +--ro unnumbered-hop
| | | | +--ro node-id? te-types:te-node-id
| | | | +--ro link-tp-id? te-types:te-tp-id
| | | | +--ro hop-type? te-hop-type
| | | +--:(label)
| | | | +--ro label-hop
| | | | +--ro value? rt-types:generalized-label
| | | +--:(sid)
| | | +--ro sid-hop
| | | +--ro sid? rt-types:generalized-label
| | +--ro state | | +--ro state
| | +--ro index? uint32 | | +--ro index? uint32
| | +--ro (type)? | | +--ro (type)?
| | +--:(numbered) | | +--:(numbered)
| | | +--ro numbered-hop | | | +--ro numbered-hop
| | | +--ro address? te-types:te-tp-id | | | +--ro address? te-types:te-tp-id
| | | +--ro hop-type? te-hop-type | | | +--ro hop-type? te-hop-type
| | +--:(as-number) | | +--:(as-number)
| | | +--ro as-number-hop | | | +--ro as-number-hop
| | | +--ro as-number? binary | | | +--ro as-number? binary
skipping to change at page 15, line 21 skipping to change at page 13, line 10
| | | +--ro node-id? te-types:te-node-id | | | +--ro node-id? te-types:te-node-id
| | | +--ro link-tp-id? te-types:te-tp-id | | | +--ro link-tp-id? te-types:te-tp-id
| | | +--ro hop-type? te-hop-type | | | +--ro hop-type? te-hop-type
| | +--:(label) | | +--:(label)
| | | +--ro label-hop | | | +--ro label-hop
| | | +--ro value? rt-types:generalized-label | | | +--ro value? rt-types:generalized-label
| | +--:(sid) | | +--:(sid)
| | +--ro sid-hop | | +--ro sid-hop
| | +--ro sid? rt-types:generalized-label | | +--ro sid? rt-types:generalized-label
| +--ro outgoing-explicit-route-hop* [index] | +--ro outgoing-explicit-route-hop* [index]
| +--ro index uint32 | +--ro index -> ../state/index
| +--ro config
| | +--ro index? uint32
| | +--ro (type)?
| | +--:(numbered)
| | | +--ro numbered-hop
| | | +--ro address? te-types:te-tp-id
| | | +--ro hop-type? te-hop-type
| | +--:(as-number)
| | | +--ro as-number-hop
| | | +--ro as-number? binary
| | | +--ro hop-type? te-hop-type
| | +--:(unnumbered)
| | | +--ro unnumbered-hop
| | | +--ro node-id? te-types:te-node-id
| | | +--ro link-tp-id? te-types:te-tp-id
| | | +--ro hop-type? te-hop-type
| | +--:(label)
| | | +--ro label-hop
| | | +--ro value? rt-types:generalized-label
| | +--:(sid)
| | +--ro sid-hop
| | +--ro sid? rt-types:generalized-label
| +--ro state | +--ro state
| +--ro index? uint32 | +--ro index? uint32
| +--ro (type)? | +--ro (type)?
| +--:(numbered) | +--:(numbered)
| | +--ro numbered-hop | | +--ro numbered-hop
| | +--ro address? te-types:te-tp-id | | +--ro address? te-types:te-tp-id
| | +--ro hop-type? te-hop-type | | +--ro hop-type? te-hop-type
| +--:(as-number) | +--:(as-number)
| | +--ro as-number-hop | | +--ro as-number-hop
| | +--ro as-number? binary | | +--ro as-number? binary
skipping to change at page 16, line 20 skipping to change at page 13, line 35
| | +--ro link-tp-id? te-types:te-tp-id | | +--ro link-tp-id? te-types:te-tp-id
| | +--ro hop-type? te-hop-type | | +--ro hop-type? te-hop-type
| +--:(label) | +--:(label)
| | +--ro label-hop | | +--ro label-hop
| | +--ro value? rt-types:generalized-label | | +--ro value? rt-types:generalized-label
| +--:(sid) | +--:(sid)
| +--ro sid-hop | +--ro sid-hop
| +--ro sid? rt-types:generalized-label | +--ro sid? rt-types:generalized-label
+--ro incoming-record-route-subobjects +--ro incoming-record-route-subobjects
| +--ro incoming-record-route-subobject* [index] | +--ro incoming-record-route-subobject* [index]
| +--ro index uint32 | +--ro index -> ../state/index
| +--ro (type)? | +--ro state
| +--:(numbered) | +--ro index? uint32
| | +--ro address? te-types:te-tp-id | +--ro (type)?
| | +--ro ip-flags? binary | +--:(numbered)
| +--:(unnumbered) | | +--ro address? te-types:te-tp-id
| | +--ro node-id? te-types:te-node-id | | +--ro ip-flags? binary
| | +--ro link-tp-id? te-types:te-tp-id | +--:(unnumbered)
| +--:(label) | | +--ro node-id? te-types:te-node-id
| +--ro value? rt-types:generalized-label | | +--ro link-tp-id? te-types:te-tp-id
| +--ro label-flags? binary | +--:(label)
| +--ro value? rt-types:generalized-label
| +--ro label-flags? binary
+--ro outgoing-record-route-subobjects +--ro outgoing-record-route-subobjects
+--ro outgoing-record-route-subobject* [index] +--ro outgoing-record-route-subobject* [index]
+--ro index uint32 +--ro index -> ../state/index
+--ro (type)? +--ro state
+--:(numbered) +--ro index? uint32
| +--ro address? te-types:te-tp-id +--ro (type)?
| +--ro ip-flags? binary +--:(numbered)
+--:(unnumbered) | +--ro address? te-types:te-tp-id
| +--ro node-id? te-types:te-node-id | +--ro ip-flags? binary
| +--ro link-tp-id? te-types:te-tp-id +--:(unnumbered)
+--:(label) | +--ro node-id? te-types:te-node-id
+--ro value? rt-types:generalized-label | +--ro link-tp-id? te-types:te-tp-id
+--ro label-flags? binary +--:(label)
+--ro value? rt-types:generalized-label
+--ro label-flags? binary
augment /te:te/te-dev:interfaces/te-dev:interface: augment /te:te/te-dev:interfaces/te-dev:interface:
Figure 2: RSVP-TE model Tree diagram Figure 2: RSVP-TE model Tree diagram
2.3.2. YANG Module 2.3.2. YANG Module
<CODE BEGINS> file "ietf-rsvp-te@2017-03-10.yang" <CODE BEGINS> file "ietf-rsvp-te@2017-10-29.yang"
module ietf-rsvp-te { module ietf-rsvp-te {
namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te"; namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te";
prefix "rsvp-te"; prefix "rsvp-te";
import ietf-rsvp { import ietf-rsvp {
prefix rsvp; prefix rsvp;
} }
skipping to change at page 18, line 32 skipping to change at page 15, line 45
Editor: Raqib Jones Editor: Raqib Jones
<mailto:raqib@Brocade.com> <mailto:raqib@Brocade.com>
Editor: Bin Wen Editor: Bin Wen
<mailto:Bin_Wen@cable.comcast.com>"; <mailto:Bin_Wen@cable.comcast.com>";
description description
"This module contains the RSVP-TE YANG generic data model."; "This module contains the RSVP-TE YANG generic data model.";
revision "2017-06-29" { revision "2017-10-29" {
description "Latest revision to RSVP-TE generic YANG module"; description "Latest revision to RSVP-TE generic YANG module";
reference "RFC2205, RFC3209, etc."; reference "RFC2205, RFC3209, etc.";
} }
/** /**
* RSVP-TE LSPs groupings. * RSVP-TE LSPs groupings.
*/ */
grouping lsp-record-route-information_state { grouping lsp-record-route-information_state {
description "recorded route information grouping"; description "recorded route information grouping";
skipping to change at page 19, line 4 skipping to change at page 16, line 18
description "recorded route information grouping"; description "recorded route information grouping";
container incoming-record-route-subobjects { container incoming-record-route-subobjects {
description "RSVP recorded route object incoming information"; description "RSVP recorded route object incoming information";
list incoming-record-route-subobject { list incoming-record-route-subobject {
when "../../te:origin-type != 'ingress'" { when "../../te:origin-type != 'ingress'" {
description "Applicable on non-ingress LSPs only"; description "Applicable on non-ingress LSPs only";
} }
key "index"; key "index";
description description
"List of RSVP Path record-route objects"; "List of RSVP Path record-route objects";
leaf index { leaf index {
type uint32; type leafref {
path "../state/index";
}
description "RRO subobject index"; description "RRO subobject index";
} }
uses te-types:record-route-subobject; container state {
config false;
description
"State parameters for the record route hop";
uses te-types:record-route-subobject_state;
}
} }
} }
container outgoing-record-route-subobjects { container outgoing-record-route-subobjects {
description "RSVP recorded route object outgoing information"; description "RSVP recorded route object outgoing information";
list outgoing-record-route-subobject { list outgoing-record-route-subobject {
when "../../te:origin-type != 'egress'" { when "../../te:origin-type != 'egress'" {
description "Applicable on non-egress LSPs only"; description "Applicable on non-egress LSPs only";
} }
key "index"; key "index";
description description
"List of RSVP Resv record-route objects"; "List of RSVP Resv record-route objects";
leaf index { leaf index {
type uint32; type leafref {
path "../state/index";
}
description "RRO subobject index"; description "RRO subobject index";
} }
uses te-types:record-route-subobject; container state {
config false;
description
"State parameters for the record route hop";
uses te-types:record-route-subobject_state;
}
} }
} }
} }
grouping lsp-explicit-route-information_state { grouping lsp-explicit-route-information_state {
description "RSVP-TE LSP explicit-route information"; description "RSVP-TE LSP explicit-route information";
container explicit-route-objects { container explicit-route-objects {
description "Explicit route object information"; description "Explicit route object information";
list incoming-explicit-route-hop { list incoming-explicit-route-hop {
when "../../te:origin-type != 'ingress'" { when "../../te:origin-type != 'ingress'" {
description "Applicable on non-ingress LSPs only"; description "Applicable on non-ingress LSPs only";
} }
key "index"; key "index";
description description
"List of incoming RSVP Path explicit-route objects"; "List of incoming RSVP Path explicit-route objects";
leaf index { leaf index {
type leafref { type leafref {
path "../config/index"; path "../state/index";
} }
description "ERO subobject index"; description "ERO subobject index";
} }
uses te-types:explicit-route-hop; container state {
config false;
description
"State parameters for the explicit route hop";
uses te-types:explicit-route-hop_config;
}
} }
list outgoing-explicit-route-hop { list outgoing-explicit-route-hop {
when "../../te:origin-type != 'egress'" { when "../../te:origin-type != 'egress'" {
description "Applicable on non-egress LSPs only"; description "Applicable on non-egress LSPs only";
} }
key "index"; key "index";
description description
"List of outgoing RSVP Path explicit-route objects"; "List of outgoing RSVP Path explicit-route objects";
leaf index { leaf index {
type uint32; type leafref {
path "../state/index";
}
description "ERO subobject index"; description "ERO subobject index";
} }
uses te-types:explicit-route-hop; container state {
config false;
description
"State parameters for the explicit route hop";
uses te-types:explicit-route-hop_config;
}
} }
} }
} }
grouping lsp-attributes-flags_config { grouping lsp-attributes-flags_config {
description description
"Configuration parameters relating to RSVP-TE LSP "Configuration parameters relating to RSVP-TE LSP
attribute flags"; attribute flags";
leaf lsp-rerouting { leaf lsp-rerouting {
type enumeration { type enumeration {
skipping to change at page 23, line 6 skipping to change at page 20, line 47
} }
} }
grouping global-soft-preemption { grouping global-soft-preemption {
description description
"Top level group for RSVP-TE soft-preemption"; "Top level group for RSVP-TE soft-preemption";
container global-soft-preemption { container global-soft-preemption {
presence "Enables soft preemption on a node."; presence "Enables soft preemption on a node.";
description description
"Top level container for RSVP-TE soft-preemption"; "Top level container for RSVP-TE soft-preemption";
container config { uses global-soft-preemption_config;
description
"Configuration parameters relating to RSVP
soft preemption support";
uses global-soft-preemption_config;
}
container state {
description "State parameters relating to RSVP
soft preemption support";
uses global-soft-preemption_config;
}
} }
} }
/*** End of RSVP-TE generic global properties. ***/ /*** End of RSVP-TE generic global properties. ***/
/** /**
* RSVP-TE interface generic groupings. * RSVP-TE interface generic groupings.
*/ */
grouping rsvp-te-interface-attributes { grouping rsvp-te-interface-attributes {
description description
"Top level grouping for RSVP-TE interface properties."; "Top level grouping for RSVP-TE interface properties.";
container rsvp-te-interface-attributes { container rsvp-te-interface-attributes {
description description
"Top level container for RSVP-TE interface "Top level container for RSVP-TE interface
properties"; properties";
container config {
description
"Configuration parameters relating to RSVP-TE
bandwidth";
}
container state { container state {
config false; config false;
description description
"State information associated with RSVP-TE "State information associated with RSVP-TE
bandwidth"; bandwidth";
} }
} }
} }
/*** End of RSVP-TE generic groupings ***/ /*** End of RSVP-TE generic groupings ***/
skipping to change at page 26, line 13 skipping to change at page 23, line 38
description description
"RSVP-TE generic data augmentation pertaining to neighbors"; "RSVP-TE generic data augmentation pertaining to neighbors";
/* To be added */ /* To be added */
} }
/** /**
* RSVP-TE generic augmentations of generic TE model. * RSVP-TE generic augmentations of generic TE model.
*/ */
/* TE tunnel augmentation */ /* TE tunnel augmentation */
augment "/te:te/te:tunnels/te:tunnel/te:config" { augment "/te:te/te:tunnels/te:tunnel" {
when "/te:te/te:tunnels/te:tunnel" + when "/te:te/te:tunnels/te:tunnel" +
"/te:p2p-primary-paths/te:p2p-primary-path/te:config" + "/te:p2p-primary-paths/te:p2p-primary-path" +
"/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" { "/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" {
description description
"When the path signaling protocol is RSVP-TE "; "When the path signaling protocol is RSVP-TE ";
} }
description description
"RSVP-TE generic data augmentation pertaining to TE tunnels"; "RSVP-TE generic data augmentation pertaining to TE tunnels";
uses lsp-properties_config; uses lsp-properties_config;
uses tunnel-properties_config; uses tunnel-properties_config;
} }
augment "/te:te/te:tunnels/te:tunnel/te:state" { augment "/te:te/te:tunnels/te:tunnel/te:state" {
when "/te:te/te:tunnels/te:tunnel" + when "/te:te/te:tunnels/te:tunnel" +
"/te:p2p-primary-paths/te:p2p-primary-path/te:config" + "/te:p2p-primary-paths/te:p2p-primary-path" +
"/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" { "/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" {
description description
"When the path signaling protocol is RSVP-TE "; "When the path signaling protocol is RSVP-TE ";
} }
description description
"RSVP-TE generic data augmentation pertaining to TE tunnels"; "RSVP-TE generic data augmentation pertaining to TE tunnels";
uses lsp-properties_config; uses lsp-properties_config;
uses tunnel-properties_config; uses tunnel-properties_config;
} }
skipping to change at page 28, line 42 skipping to change at page 26, line 24
o those that are specific to the RSVP-TE MPLS module o those that are specific to the RSVP-TE MPLS module
Below is a YANG tree representation for data items defined in the Below is a YANG tree representation for data items defined in the
RSVP-TE MPLS module: RSVP-TE MPLS module:
module: ietf-rsvp-te-mpls module: ietf-rsvp-te-mpls
augment augment
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
rsvp:rsvp: rsvp:rsvp:
+--rw fast-reroute-local-revertive +--rw fast-reroute-local-revertive
+--rw config +--rw rsvp-frr-local-revert-delay? uint32
| +--rw rsvp-frr-local-revert-delay? uint32
+--ro state
+--ro rsvp-frr-local-revert-delay? uint32
augment augment
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
rsvp:rsvp/rsvp:interfaces: rsvp:rsvp/rsvp:interfaces:
augment augment
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
rsvp:rsvp/rsvp:interfaces/rsvp:interface: rsvp:rsvp/rsvp:interfaces/rsvp:interface:
augment augment
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
rsvp:rsvp/rsvp:globals/rsvp:sessions/rsvp:session/rsvp:state: rsvp:rsvp/rsvp:globals/rsvp:sessions/rsvp:session/rsvp:state:
augment augment
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
rsvp:rsvp/rsvp:neighbors: rsvp:rsvp/rsvp:neighbors:
augment /te:te/te:tunnels/te:tunnel/te:config: augment /te:te/te:tunnels/te:tunnel:
+--rw local-protection-desired? empty +--rw local-protection-desired? empty
+--rw bandwidth-protection-desired? empty +--rw bandwidth-protection-desired? empty
+--rw node-protection-desired? empty +--rw node-protection-desired? empty
+--rw non-php-desired? empty +--rw non-php-desired? empty
+--rw entropy-label-cap? empty +--rw entropy-label-cap? empty
+--rw oam-mep-entities-desired? empty +--rw oam-mep-entities-desired? empty
+--rw oam-mip-entities-desired? empty +--rw oam-mip-entities-desired? empty
augment /te:te/te:tunnels/te:tunnel/te:state:
+--ro local-protection-desired? empty
+--ro bandwidth-protection-desired? empty
+--ro node-protection-desired? empty
+--ro non-php-desired? empty
+--ro entropy-label-cap? empty
+--ro oam-mep-entities-desired? empty
+--ro oam-mip-entities-desired? empty
augment /te:te/te:lsps-state/te:lsp: augment /te:te/te:lsps-state/te:lsp:
+--ro local-protection-desired? empty +--ro state
+--ro bandwidth-protection-desired? empty | +--ro local-protection-desired? empty
+--ro node-protection-desired? empty | +--ro bandwidth-protection-desired? empty
+--ro non-php-desired? empty | +--ro node-protection-desired? empty
+--ro entropy-label-cap? empty | +--ro non-php-desired? empty
+--ro oam-mep-entities-desired? empty | +--ro entropy-label-cap? empty
+--ro oam-mip-entities-desired? empty | +--ro oam-mep-entities-desired? empty
| +--ro oam-mip-entities-desired? empty
+--ro backup-info +--ro backup-info
+--ro backup-tunnel-name? string +--ro state
+--ro backup-frr-on? uint8 +--ro backup-tunnel-name? string
+--ro backup-protected-lsp-num? uint32 +--ro backup-frr-on? uint8
+--ro backup-protected-lsp-num? uint32
augment augment
/te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-path/ /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-path/
te:state/te:lsps/te:lsp: te:state/te:lsps/te:lsp:
+--ro local-protection-desired? empty +--ro state
+--ro bandwidth-protection-desired? empty | +--ro local-protection-desired? empty
+--ro node-protection-desired? empty | +--ro bandwidth-protection-desired? empty
+--ro non-php-desired? empty | +--ro node-protection-desired? empty
+--ro entropy-label-cap? empty | +--ro non-php-desired? empty
+--ro oam-mep-entities-desired? empty | +--ro entropy-label-cap? empty
+--ro oam-mip-entities-desired? empty | +--ro oam-mep-entities-desired? empty
| +--ro oam-mip-entities-desired? empty
+--ro backup-info +--ro backup-info
+--ro backup-tunnel-name? string +--ro state
+--ro backup-frr-on? uint8 +--ro backup-tunnel-name? string
+--ro backup-protected-lsp-num? uint32 +--ro backup-frr-on? uint8
+--ro backup-protected-lsp-num? uint32
augment augment
/te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/
te:p2p-secondary-path/te:state/te:lsps/te:lsp: te:p2p-secondary-path/te:state/te:lsps/te:lsp:
+--ro local-protection-desired? empty +--ro state
+--ro bandwidth-protection-desired? empty | +--ro local-protection-desired? empty
+--ro node-protection-desired? empty | +--ro bandwidth-protection-desired? empty
+--ro non-php-desired? empty | +--ro node-protection-desired? empty
+--ro entropy-label-cap? empty | +--ro non-php-desired? empty
+--ro oam-mep-entities-desired? empty | +--ro entropy-label-cap? empty
+--ro oam-mip-entities-desired? empty | +--ro oam-mep-entities-desired? empty
| +--ro oam-mip-entities-desired? empty
+--ro backup-info +--ro backup-info
+--ro backup-tunnel-name? string +--ro state
+--ro backup-frr-on? uint8 +--ro backup-tunnel-name? string
+--ro backup-protected-lsp-num? uint32 +--ro backup-frr-on? uint8
+--ro backup-protected-lsp-num? uint32
augment /te:te/te-dev:interfaces/te-dev:interface: augment /te:te/te-dev:interfaces/te-dev:interface:
+--rw bandwidth-mpls-reservable +--rw bandwidth-mpls-reservable
+--rw config +--rw (bandwidth-value)?
| +--rw (bandwidth-value)? | +--:(absolute)
| | +--:(absolute) | | +--rw absolute-value? uint32
| | | +--rw absolute-value? uint32 | +--:(percentage)
| | +--:(percentage) | +--rw percent-value? uint32
| | +--rw percent-value? uint32 +--rw (bc-model-type)?
| +--rw (bc-model-type)? +--:(bc-model-rdm)
| +--:(bc-model-rdm) | +--rw bc-model-rdm
| | +--rw bc-model-rdm | +--rw bandwidth-mpls-constraints
| | +--rw bandwidth-mpls-constraints | +--rw maximum-reservable? uint32
| | +--rw maximum-reservable? uint32 | +--rw bc-value* uint32
| | +--rw bc-value* uint32 +--:(bc-model-mam)
| +--:(bc-model-mam) | +--rw bc-model-mam
| | +--rw bc-model-mam | +--rw bandwidth-mpls-constraints
| | +--rw bandwidth-mpls-constraints | +--rw maximum-reservable? uint32
| | +--rw maximum-reservable? uint32 | +--rw bc-value* uint32
| | +--rw bc-value* uint32 +--:(bc-model-mar)
| +--:(bc-model-mar) +--rw bc-model-mar
| +--rw bc-model-mar +--rw bandwidth-mpls-constraints
| +--rw bandwidth-mpls-constraints +--rw maximum-reservable? uint32
| +--rw maximum-reservable? uint32 +--rw bc-value* uint32
| +--rw bc-value* uint32
+--ro state
+--ro (bandwidth-value)?
| +--:(absolute)
| | +--ro absolute-value? uint32
| +--:(percentage)
| +--ro percent-value? uint32
+--ro (bc-model-type)?
+--:(bc-model-rdm)
| +--ro bc-model-rdm
| +--ro bandwidth-mpls-constraints
| +--ro maximum-reservable? uint32
| +--ro bc-value* uint32
+--:(bc-model-mam)
| +--ro bc-model-mam
| +--ro bandwidth-mpls-constraints
| +--ro maximum-reservable? uint32
| +--ro bc-value* uint32
+--:(bc-model-mar)
+--ro bc-model-mar
+--ro bandwidth-mpls-constraints
+--ro maximum-reservable? uint32
+--ro bc-value* uint32
augment /te:te/te-dev:interfaces/te-dev:interface: augment /te:te/te-dev:interfaces/te-dev:interface:
+--rw rsvp-te-frr-backups +--rw rsvp-te-frr-backups
+--rw config +--rw (type)?
| +--rw (type)? +--:(static-tunnel)
| +--:(static-tunnel) | +--rw static-backups
| | +--rw static-backups | +--rw static-backup* [backup-tunnel-name]
| | +--rw static-backup* [backup-tunnel-name] | +--rw backup-tunnel-name ->
| | +--rw backup-tunnel-name -> /te:te/tunnels/tunnel/name
../config/backup-tunnel-name +--:(auto-tunnel)
| | +--rw config +--rw auto-tunnel-backups
| | | +--rw backup-tunnel-name? -> +--rw auto-backup-protection? identityref
/te:te/tunnels/tunnel/name +--rw auto-backup-path-computation? identityref
| | +--ro state
| | +--ro backup-tunnel-name? ->
/te:te/tunnels/tunnel/name
| +--:(auto-tunnel)
| +--rw auto-backup-protection? identityref
| +--rw auto-backup-path-computation? identityref
+--ro state
+--ro (type)?
+--:(static-tunnel)
| +--ro static-backups
| +--ro static-backup* [backup-tunnel-name]
| +--ro backup-tunnel-name ->
../config/backup-tunnel-name
| +--ro config
| | +--ro backup-tunnel-name? ->
/te:te/tunnels/tunnel/name
| +--ro state
| +--ro backup-tunnel-name? ->
/te:te/tunnels/tunnel/name
+--:(auto-tunnel)
+--ro auto-backup-protection? identityref
+--ro auto-backup-path-computation? identityref
Figure 4: RSVP-TE MPLS Tree diagram Figure 4: RSVP-TE MPLS Tree diagram
2.4.2. YANG Module 2.4.2. YANG Module
<CODE BEGINS> file "ietf-rsvp-te@2017-03-10.yang" <CODE BEGINS> file "ietf-rsvp-te-mpls@2017-10-29.yang"
module ietf-rsvp-te-mpls { module ietf-rsvp-te-mpls {
namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te-mpls"; namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te-mpls";
prefix "rsvp-te-mpls"; prefix "rsvp-te-mpls";
import ietf-rsvp { import ietf-rsvp {
prefix "rsvp"; prefix "rsvp";
} }
skipping to change at page 33, line 30 skipping to change at page 30, line 9
Editor: Raqib Jones Editor: Raqib Jones
<mailto:raqib@Brocade.com> <mailto:raqib@Brocade.com>
Editor: Bin Wen Editor: Bin Wen
<mailto:Bin_Wen@cable.comcast.com>"; <mailto:Bin_Wen@cable.comcast.com>";
description description
"Latest update to MPLS RSVP-TE YANG data model."; "Latest update to MPLS RSVP-TE YANG data model.";
revision "2017-06-29" { revision "2017-10-29" {
description "Update to MPLS RSVP-TE YANG initial revision."; description "Update to MPLS RSVP-TE YANG initial revision.";
reference "RFC3209, RFC6511, RFC6790, RFC7260, RFC4859, RFC4090"; reference "RFC3209, RFC6511, RFC6790, RFC7260, RFC4859, RFC4090";
} }
/* RSVP-TE MPLS LSPs groupings */ /* RSVP-TE MPLS LSPs groupings */
grouping lsp-attributes-flags-mpls_config { grouping lsp-attributes-flags-mpls_config {
description description
"Configuration parameters relating to RSVP-TE MPLS LSP "Configuration parameters relating to RSVP-TE MPLS LSP
attribute flags"; attribute flags";
leaf non-php-desired { leaf non-php-desired {
skipping to change at page 34, line 43 skipping to change at page 31, line 22
} }
leaf node-protection-desired { leaf node-protection-desired {
type empty; type empty;
description description
"Request FRR node protection on LSRs if "Request FRR node protection on LSRs if
present."; present.";
reference "RFC4090"; reference "RFC4090";
} }
} }
grouping tunnel-properties-mpls { grouping tunnel-properties-mpls_config {
description description
"Top level grouping for LSP properties."; "Top level grouping for LSP properties.";
uses lsp-session-attributes-obj-flags-mpls_config; uses lsp-session-attributes-obj-flags-mpls_config;
uses lsp-attributes-flags-mpls_config; uses lsp-attributes-flags-mpls_config;
} }
grouping lsp-properties-mpls { grouping lsp-properties-mpls {
description description
"Top level grouping for LSP properties."; "Top level grouping for LSP properties.";
container state {
config false;
description
"Configuration applied parameters and state";
uses lsp-session-attributes-obj-flags-mpls_config; uses lsp-session-attributes-obj-flags-mpls_config;
uses lsp-attributes-flags-mpls_config; uses lsp-attributes-flags-mpls_config;
}
} }
/* End of RSVP-TE MPLS LSPs groupings */ /* End of RSVP-TE MPLS LSPs groupings */
/* MPLS RSVP-TE interface groupings */ /* MPLS RSVP-TE interface groupings */
grouping rsvp-te-interface_state { grouping rsvp-te-interface_state {
description description
"The RSVP-TE interface state grouping"; "The RSVP-TE interface state grouping";
leaf over-subscribed-bandwidth { leaf over-subscribed-bandwidth {
type uint32; type uint32;
description description
skipping to change at page 39, line 17 skipping to change at page 35, line 49
} }
} }
} }
grouping bandwidth-mpls-reservable { grouping bandwidth-mpls-reservable {
description description
"Packet reservable bandwidth"; "Packet reservable bandwidth";
container bandwidth-mpls-reservable { container bandwidth-mpls-reservable {
description description
"Interface bandwidth reservable container"; "Interface bandwidth reservable container";
container config { uses bandwidth-mpls-reservable_config;
description
"Configuration parameters relating to
interface bandwidth reservable properties";
uses bandwidth-mpls-reservable_config;
}
container state {
config false;
description
"State parameters relating to
interface bandwidth reservable properties";
uses bandwidth-mpls-reservable_config;
}
} }
} }
/* End of RSVP-TE interface groupings */ /* End of RSVP-TE interface groupings */
/* RSVP-TE FRR groupings */ /* RSVP-TE FRR groupings */
grouping rsvp-te-frr-auto-tunnel-backup_config {
description
"Auto-tunnel backup configuration grouping";
leaf auto-backup-protection {
type identityref {
base te-mpls-types:backup-protection-type;
}
default
te-mpls-types:backup-protection-node-link;
description
"Describes whether the backup should offer
protection against link, node, or either";
}
leaf auto-backup-path-computation {
type identityref {
base
te-types:path-computation-srlg-type;
}
description
"FRR backup computation type";
}
}
grouping rsvp-te-frr-backups_config { grouping rsvp-te-frr-backups_config {
description description
"Top level container for RSVP-TE FRR backup parameters"; "Top level container for RSVP-TE FRR backup parameters";
choice type { choice type {
description description
"FRR backup tunnel type"; "FRR backup tunnel type";
case static-tunnel { case static-tunnel {
container static-backups { container static-backups {
description "List of static backups"; description "List of static backups";
list static-backup { list static-backup {
key "backup-tunnel-name"; key "backup-tunnel-name";
description description
"List of static backup tunnels that "List of static backup tunnels that
protect the RSVP-TE interface."; protect the RSVP-TE interface.";
leaf backup-tunnel-name { leaf backup-tunnel-name {
type leafref { type leafref {
path "../config/backup-tunnel-name"; path "/te:te/te:tunnels/te:tunnel/te:name";
}
description "Backup tunnel name";
}
container config {
description "Configuration for backup tunnels";
leaf backup-tunnel-name {
type leafref {
path "/te:te/te:tunnels/te:tunnel/te:name";
}
description "FRR Backup tunnel name";
}
}
container state {
config false;
description "State for backup tunnels";
leaf backup-tunnel-name {
type leafref {
path "/te:te/te:tunnels/te:tunnel/te:name";
}
description "FRR Backup tunnel name";
} }
description "FRR Backup tunnel name";
} }
} }
} }
} }
case auto-tunnel { case auto-tunnel {
leaf auto-backup-protection { container auto-tunnel-backups {
type identityref { description "Auto-tunnel choice";
base te-mpls-types:backup-protection-type; uses rsvp-te-frr-auto-tunnel-backup_config;
}
default
te-mpls-types:backup-protection-node-link;
description
"Describes whether the backup should offer
protection against link, node, or either";
}
leaf auto-backup-path-computation {
type identityref {
base
te-types:path-computation-srlg-type;
}
description
"FRR backup computation type";
} }
} }
} }
} }
grouping rsvp-te-frr-backups { grouping rsvp-te-frr-backups {
description description
"RSVP-TE facility backup grouping"; "RSVP-TE facility backup grouping";
container rsvp-te-frr-backups { container rsvp-te-frr-backups {
description description
"RSVP-TE facility backup properties"; "RSVP-TE facility backup properties";
container config { uses rsvp-te-frr-backups_config;
description
"Configuration parameters relating to
RSVP-TE facility backups properties";
uses rsvp-te-frr-backups_config;
}
container state {
config false;
description
"State parameters relating to
RSVP-TE facility backups properties";
uses rsvp-te-frr-backups_config;
}
} }
} }
grouping lps-backup-info_state { grouping lsp-backup-info_state {
description "LSP backup information grouping";
leaf backup-tunnel-name {
type string;
description
"If an LSP has an FRR backup LSP that can protect it,
this field identifies the tunnel name of the backup LSP.
Otherwise, this field is empty.";
}
leaf backup-frr-on {
type uint8;
description
"Whether currently this backup is carrying traffic";
}
leaf backup-protected-lsp-num {
type uint32;
description
"Number of LSPs protected by this backup";
}
}
grouping lsp-backup-info {
description "Backup/bypass LSP related information"; description "Backup/bypass LSP related information";
container backup-info { container backup-info {
description description
"backup information"; "backup information";
container state {
leaf backup-tunnel-name { config false;
type string;
description
"If an LSP has an FRR backup LSP that can protect it,
this field identifies the tunnel name of the backup LSP.
Otherwise, this field is empty.";
}
leaf backup-frr-on {
type uint8;
description
"Whether currently this backup is carrying traffic";
}
leaf backup-protected-lsp-num {
type uint32;
description description
"Number of LSPs protected by this backup"; "Configuration applied parameters and state";
uses lsp-backup-info_state;
} }
} }
} }
grouping fast-reroute-local-revertive_config { grouping fast-reroute-local-revertive_config {
description "RSVP-TE FRR local revertive grouping"; description "RSVP-TE FRR local revertive grouping";
leaf rsvp-frr-local-revert-delay { leaf rsvp-frr-local-revert-delay {
type uint32; type uint32;
description description
"Time to wait after primary link is restored "Time to wait after primary link is restored
before node attempts local revertive before node attempts local revertive
procedures."; procedures.";
skipping to change at page 42, line 25 skipping to change at page 38, line 29
} }
} }
/*** End of RSVP-TE FRR backup information ***/ /*** End of RSVP-TE FRR backup information ***/
grouping fast-reroute-local-revertive { grouping fast-reroute-local-revertive {
description description
"Top level grouping for globals properties"; "Top level grouping for globals properties";
container fast-reroute-local-revertive { container fast-reroute-local-revertive {
description "RSVP-TE FRR local revertive container"; description "RSVP-TE FRR local revertive container";
container config { uses fast-reroute-local-revertive_config;
description
"Configuration parameters relating to
global MPLS RSVP-TE properties";
uses fast-reroute-local-revertive_config;
}
container state {
config false;
description
"State parameters relating to
global MPLS RSVP-TE properties";
uses fast-reroute-local-revertive_config;
}
} }
} }
/* RSVP-TE global properties */ /* RSVP-TE global properties */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp" { + "rt:control-plane-protocol/rsvp:rsvp" {
description description
"RSVP-TE augmentation to RSVP globals"; "RSVP-TE augmentation to RSVP globals";
uses fast-reroute-local-revertive; uses fast-reroute-local-revertive;
} }
skipping to change at page 43, line 36 skipping to change at page 39, line 29
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors" { + "rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors" {
description description
"Augmentations for RSVP-TE MPLS neighbors properties"; "Augmentations for RSVP-TE MPLS neighbors properties";
/* To be added */ /* To be added */
} }
/** /**
* Augmentation to TE generic module * Augmentation to TE generic module
*/ */
augment "/te:te/te:tunnels/te:tunnel/te:config" { augment "/te:te/te:tunnels/te:tunnel" {
description
"Augmentations for RSVP-TE MPLS TE tunnel properties";
uses tunnel-properties-mpls;
}
augment "/te:te/te:tunnels/te:tunnel/te:state" {
description description
"Augmentations for RSVP-TE MPLS TE tunnel properties"; "Augmentations for RSVP-TE MPLS TE tunnel properties";
uses tunnel-properties-mpls; uses tunnel-properties-mpls_config;
} }
augment "/te:te/te:lsps-state/te:lsp" { augment "/te:te/te:lsps-state/te:lsp" {
when "/te:te/te:lsps-state/te:lsp" + when "/te:te/te:lsps-state/te:lsp" +
"/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" { "/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" {
description description
"When the signaling protocol is RSVP-TE "; "When the signaling protocol is RSVP-TE ";
} }
description description
"RSVP-TE MPLS LSP state properties"; "RSVP-TE MPLS LSP state properties";
uses lsp-properties-mpls; uses lsp-properties-mpls;
uses lps-backup-info_state; uses lsp-backup-info;
} }
augment "/te:te/te:tunnels/te:tunnel/te:p2p-primary-paths" + augment "/te:te/te:tunnels/te:tunnel/te:p2p-primary-paths" +
"/te:p2p-primary-path/te:state/te:lsps/te:lsp" { "/te:p2p-primary-path/te:state/te:lsps/te:lsp" {
when "/te:te/te:tunnels/te:tunnel" + when "/te:te/te:tunnels/te:tunnel" +
"/te:p2p-secondary-paths/te:p2p-secondary-path/te:config" + "/te:p2p-secondary-paths/te:p2p-secondary-path/" +
"/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" { "te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" {
description description
"When the signaling protocol is RSVP-TE "; "When the signaling protocol is RSVP-TE ";
} }
description description
"RSVP-TE MPLS LSP state properties"; "RSVP-TE MPLS LSP state properties";
uses lsp-properties-mpls; uses lsp-properties-mpls;
uses lps-backup-info_state; uses lsp-backup-info;
} }
augment "/te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths" + augment "/te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths" +
"/te:p2p-secondary-path/te:state/te:lsps/te:lsp" { "/te:p2p-secondary-path/te:state/te:lsps/te:lsp" {
when "/te:te/te:tunnels/te:tunnel" + when "/te:te/te:tunnels/te:tunnel" +
"/te:p2p-secondary-paths/te:p2p-secondary-path/te:config" + "/te:p2p-secondary-paths/te:p2p-secondary-path/" +
"/te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" { "te:path-setup-protocol = 'te-types:te-path-setup-rsvp'" {
description description
"When the signaling protocol is RSVP-TE "; "When the signaling protocol is RSVP-TE ";
} }
description description
"RSVP-TE MPLS LSP state properties"; "RSVP-TE MPLS LSP state properties";
uses lsp-properties-mpls; uses lsp-properties-mpls;
uses lps-backup-info_state; uses lsp-backup-info;
} }
augment "/te:te/te-dev:interfaces/te-dev:interface" { augment "/te:te/te-dev:interfaces/te-dev:interface" {
description description
"RSVP reservable bandwidth configuration properties"; "RSVP reservable bandwidth configuration properties";
uses bandwidth-mpls-reservable; uses bandwidth-mpls-reservable;
} }
augment "/te:te/te-dev:interfaces/te-dev:interface" { augment "/te:te/te-dev:interfaces/te-dev:interface" {
description description
skipping to change at page 46, line 40 skipping to change at page 42, line 32
[I-D.ietf-teas-yang-rsvp] [I-D.ietf-teas-yang-rsvp]
Beeram, V., Saad, T., Gandhi, R., Liu, X., Bryskin, I., Beeram, V., Saad, T., Gandhi, R., Liu, X., Bryskin, I.,
and H. Shah, "A YANG Data Model for Resource Reservation and H. Shah, "A YANG Data Model for Resource Reservation
Protocol (RSVP)", draft-ietf-teas-yang-rsvp-07 (work in Protocol (RSVP)", draft-ietf-teas-yang-rsvp-07 (work in
progress), March 2017. progress), March 2017.
[I-D.ietf-teas-yang-te] [I-D.ietf-teas-yang-te]
Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., and
I. Bryskin, "A YANG Data Model for Traffic Engineering I. Bryskin, "A YANG Data Model for Traffic Engineering
Tunnels and Interfaces", draft-ietf-teas-yang-te-07 (work Tunnels and Interfaces", draft-ietf-teas-yang-te-08 (work
in progress), June 2017. in progress), July 2017.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/
RFC2119, March 1997, RFC2119, March 1997, <https://www.rfc-editor.org/info/
<http://www.rfc-editor.org/info/rfc2119>. rfc2119>.
[RFC2205] Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S. [RFC2205] Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S.
Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1
Functional Specification", RFC 2205, DOI 10.17487/RFC2205, Functional Specification", RFC 2205, DOI 10.17487/RFC2205,
September 1997, <http://www.rfc-editor.org/info/rfc2205>. September 1997, <https://www.rfc-editor.org/info/rfc2205>.
[RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V.,
and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP
Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001,
<http://www.rfc-editor.org/info/rfc3209>. <https://www.rfc-editor.org/info/rfc3209>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004, DOI 10.17487/RFC3688, January 2004, <https://www.rfc-
<http://www.rfc-editor.org/info/rfc3688>. editor.org/info/rfc3688>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010, DOI 10.17487/RFC6020, October 2010, <https://www.rfc-
<http://www.rfc-editor.org/info/rfc6020>. editor.org/info/rfc6020>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<http://www.rfc-editor.org/info/rfc6241>. <https://www.rfc-editor.org/info/rfc6241>.
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
<http://www.rfc-editor.org/info/rfc6242>. <https://www.rfc-editor.org/info/rfc6242>.
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
Protocol (NETCONF) Access Control Model", RFC 6536, DOI Protocol (NETCONF) Access Control Model", RFC 6536, DOI
10.17487/RFC6536, March 2012, 10.17487/RFC6536, March 2012, <https://www.rfc-
<http://www.rfc-editor.org/info/rfc6536>. editor.org/info/rfc6536>.
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC
6991, DOI 10.17487/RFC6991, July 2013, 6991, DOI 10.17487/RFC6991, July 2013, <https://www.rfc-
<http://www.rfc-editor.org/info/rfc6991>. editor.org/info/rfc6991>.
7.2. Informative References 7.2. Informative References
[I-D.openconfig-mpls-consolidated-model] [I-D.dsdt-nmda-guidelines]
George, J., Fang, L., eric.osborne@level3.com, e., and R. Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
Shakir, "MPLS / TE Model for Service Provider Networks", and R. Wilton, "Guidelines for YANG Module Authors
draft-openconfig-mpls-consolidated-model-02 (work in (NMDA)", draft-dsdt-nmda-guidelines-01 (work in progress),
progress), October 2015. May 2017.
[I-D.openconfig-netmod-opstate]
Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling
of Operational State Data in YANG", draft-openconfig-
netmod-opstate-01 (work in progress), July 2015.
Authors' Addresses Authors' Addresses
Vishnu Pavan Beeram Vishnu Pavan Beeram
Juniper Networks Juniper Networks
Email: vbeeram@juniper.net Email: vbeeram@juniper.net
Tarek Saad (editor) Tarek Saad (editor)
Cisco Systems, Inc. Cisco Systems, Inc.
 End of changes. 90 change blocks. 
542 lines changed or deleted 321 lines changed or added

This html diff was produced by rfcdiff 1.46. The latest version is available from http://tools.ietf.org/tools/rfcdiff/