draft-ietf-teas-yang-rsvp-te-08.txt   draft-ietf-teas-yang-rsvp-te-09.txt 
TEAS Working Group V. Beeram TEAS Working Group V. Beeram
Internet-Draft T. Saad Internet-Draft T. Saad
Intended status: Standards Track Juniper Networks Intended status: Standards Track Juniper Networks
Expires: September 10, 2020 R. Gandhi Expires: August 26, 2021 R. Gandhi
Cisco Systems, Inc. Cisco Systems, Inc.
X. Liu X. Liu
Volta Networks Volta Networks
I. Bryskin I. Bryskin
Huawei Technologies Huawei Technologies
H. Shah H. Shah
Ciena Ciena
March 09, 2020 February 22, 2021
A YANG Data Model for RSVP-TE Protocol A YANG Data Model for RSVP-TE Protocol
draft-ietf-teas-yang-rsvp-te-08 draft-ietf-teas-yang-rsvp-te-09
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 The model defines a generic RSVP-TE module for signaling LSPs that
are technology agnostic. The generic RSVP-TE module is to be are technology agnostic. The generic RSVP-TE module is to be
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 https://datatracker.ietf.org/drafts/current/. Drafts is at https://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 September 10, 2020. This Internet-Draft will expire on August 26, 2021.
Copyright Notice Copyright Notice
Copyright (c) 2020 IETF Trust and the persons identified as the Copyright (c) 2021 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
(https://trustee.ietf.org/license-info) in effect on the date of (https://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
carefully, as they describe your rights and restrictions with respect carefully, as they describe your rights and restrictions with respect
to this document. Code Components extracted from this document must to this document. Code Components extracted from this document must
include Simplified BSD License text as described in Section 4.e of include Simplified BSD License text as described in Section 4.e of
the Trust Legal Provisions and are provided without warranty as the Trust Legal Provisions and are provided without warranty as
skipping to change at page 2, line 30 skipping to change at page 2, line 30
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3 1.2. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3
2. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 4 2. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 4
2.1. Module Relationship . . . . . . . . . . . . . . . . . . . 4 2.1. Module Relationship . . . . . . . . . . . . . . . . . . . 4
2.2. Model Tree Diagrams . . . . . . . . . . . . . . . . . . . 5 2.2. Model Tree Diagrams . . . . . . . . . . . . . . . . . . . 5
2.2.1. RSVP-TE Model Tree Diagram . . . . . . . . . . . . . 5 2.2.1. RSVP-TE Model Tree Diagram . . . . . . . . . . . . . 5
2.2.2. RSVP-TE MPLS Model Tree Diagram . . . . . . . . . . . 14 2.2.2. RSVP-TE MPLS Model Tree Diagram . . . . . . . . . . . 9
2.3. YANG Modules . . . . . . . . . . . . . . . . . . . . . . 16 2.3. YANG Modules . . . . . . . . . . . . . . . . . . . . . . 11
2.3.1. RSVP-TE YANG Module . . . . . . . . . . . . . . . . . 16 2.3.1. RSVP-TE YANG Module . . . . . . . . . . . . . . . . . 11
2.3.2. RSVP-TE MPLS YANG Module . . . . . . . . . . . . . . 30 2.3.2. RSVP-TE MPLS YANG Module . . . . . . . . . . . . . . 24
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 42 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 36
4. Security Considerations . . . . . . . . . . . . . . . . . . . 43 4. Security Considerations . . . . . . . . . . . . . . . . . . . 37
5. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 43 5. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 38
6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 43 6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 38
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 44 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 38
7.1. Normative References . . . . . . . . . . . . . . . . . . 44 7.1. Normative References . . . . . . . . . . . . . . . . . . 38
7.2. Informative References . . . . . . . . . . . . . . . . . 46 7.2. Informative References . . . . . . . . . . . . . . . . . 40
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 46 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 41
1. Introduction 1. Introduction
YANG [RFC7950] is a data modeling language that was introduced to YANG [RFC7950] is a data modeling 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 has proved devices to be managed using NETCONF [RFC6241]. YANG has proved
relevant beyond its initial confines, as bindings to other interfaces relevant beyond its initial confines, as bindings to other interfaces
(e.g. RESTCONF [RFC8040]) and encoding other than XML (e.g. JSON) (e.g. RESTCONF [RFC8040]) and encoding other than XML (e.g. JSON)
are being defined. Furthermore, YANG data models can be used as the are being defined. Furthermore, YANG data models can be used as the
basis of implementation for other interfaces, such as CLI and basis of implementation for other interfaces, such as CLI and
skipping to change at page 5, line 41 skipping to change at page 5, line 41
2.2. Model Tree Diagrams 2.2. Model Tree Diagrams
A full tree diagram of the module(s) defined in this document as per A full tree diagram of the module(s) defined in this document as per
the syntax defined in [RFC8340] are given in subsequent sections. the syntax defined in [RFC8340] are given in subsequent sections.
2.2.1. RSVP-TE Model Tree Diagram 2.2.1. RSVP-TE Model Tree Diagram
Figure 2 shows the YANG tree diagram of the RSVP-TE generic YANG Figure 2 shows the YANG tree diagram of the RSVP-TE generic YANG
model defined in module ietf-rsvp-te.yang. model defined in module ietf-rsvp-te.yang.
module: ietf-rsvp-te module: ietf-rsvp-te
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/rsvp:rsvp/rsvp:globals: /rt:control-plane-protocol/rsvp:rsvp:
+--rw global-soft-preemption! +--rw global-soft-preemption!
+--rw soft-preemption-timeout? uint16 +--rw soft-preemption-timeout? uint16
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces: /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces:
+--rw rsvp-te-interface-attributes +--rw rsvp-te-interface-attributes
+--ro state augment /rt:routing/rt:control-plane-protocols
augment /rt:routing/rt:control-plane-protocols /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces
/rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces /rsvp:interface:
/rsvp:interface: +--rw rsvp-te-interface-attributes
+--rw rsvp-te-interface-attributes augment /rt:routing/rt:control-plane-protocols
+--ro state /rt:control-plane-protocol/rsvp:rsvp/rsvp:sessions:
augment /rt:routing/rt:control-plane-protocols +--ro session-te* [tunnel-endpoint tunnel-id extended-tunnel-id]
/rt:control-plane-protocol/rsvp:rsvp/rsvp:globals +--ro tunnel-endpoint inet:ip-address
/rsvp:sessions: +--ro tunnel-id uint16
+--ro session-te* [tunnel-endpoint tunnel-id extended-tunnel-id] +--ro extended-tunnel-id inet:ip-address
+--ro tunnel-endpoint inet:ip-address +--ro destination-port? inet:port-number
+--ro tunnel-id uint16 +--ro protocol-id? uint8
+--ro extended-tunnel-id inet:ip-address +--ro source? inet:ip-address
+--ro destination-port? inet:port-number +--ro destination? inet:ip-address
+--ro protocol-id? uint8 +--ro session-name? string
+--ro source? inet:ip-address +--ro session-status? enumeration
+--ro destination? inet:ip-address +--ro session-type identityref
+--ro session-name? string +--ro psbs
+--ro session-state? enumeration | +--ro psb* []
+--ro session-type? identityref | +--ro source-port? inet:port-number
+--ro psbs | +--ro expires-in? uint32
| +--ro psb* [] | +--ro tspec-average-rate?
| +--ro source-port? inet:port-number | | rt-types:bandwidth-ieee-float32
| +--ro expires-in? uint32 | +--ro tspec-size?
| +--ro tspec-average-rate? rt-types:bandwidth-ieee-float32 | | rt-types:bandwidth-ieee-float32
| +--ro tspec-size? rt-types:bandwidth-ieee-float32 | +--ro tspec-peak-rate?
| +--ro tspec-peak-rate? rt-types:bandwidth-ieee-float32 | | 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
+--ro rsbs +--ro rsbs
+--ro rsb* [] +--ro rsb* []
+--ro source-port? inet:port-number +--ro source-port? inet:port-number
+--ro reservation-style? identityref +--ro reservation-style identityref
+--ro expires-in? uint32 +--ro expires-in? uint32
+--ro fspec-average-rate? rt-types:bandwidth-ieee-float32 +--ro fspec-average-rate?
+--ro fspec-size? rt-types:bandwidth-ieee-float32 | rt-types:bandwidth-ieee-float32
+--ro fspec-peak-rate? rt-types:bandwidth-ieee-float32 +--ro fspec-size?
+--ro min-policed-unit? uint32 | rt-types:bandwidth-ieee-float32
+--ro max-packet-size? uint32 +--ro fspec-peak-rate?
augment /rt:routing/rt:control-plane-protocols | rt-types:bandwidth-ieee-float32
/rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors: +--ro min-policed-unit? uint32
augment /te:te/te:tunnels/te:tunnel: +--ro max-packet-size? uint32
+--rw lsp-signaled-name? string augment /rt:routing/rt:control-plane-protocols
+--rw session-attribute* identityref /rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors:
+--rw lsp-attribute* identityref augment /te:te/te:tunnels/te:tunnel:
+--rw retry-timer? uint16 +--rw lsp-signaled-name? string
augment /te:te/te:lsps-state/te:lsp: +--rw session-attribute* identityref
+--ro associated-rsvp-session? leafref +--rw lsp-attribute* identityref
+--ro lsp-signaled-name? string +--rw retry-timer? uint16
+--ro session-attribute* identityref augment /te:te/te:lsps/te:lsp:
+--ro lsp-attribute* identityref +--ro associated-rsvp-session? leafref
+--ro explicit-route-objects +--ro lsp-signaled-name? string
| +--ro incoming-explicit-route-hop* [index] +--ro session-attribute* identityref
| | +--ro index uint32 +--ro lsp-attribute* identityref
| | +--ro (type)? +--ro rsvp-message-type? identityref
| | +--:(numbered-node-hop) +--ro rsvp-error-code? uint8
| | | +--ro numbered-node-hop +--ro rsvp-error-subcode? uint16
| | | +--ro node-id te-node-id +--ro explicit-route-objects
| | | +--ro hop-type? te-hop-type | +--ro incoming-explicit-route-hop* [index]
| | +--:(numbered-link-hop) | | +--ro index uint32
| | | +--ro numbered-link-hop | | +--ro (type)?
| | | +--ro link-tp-id te-tp-id | | +--:(numbered-node-hop)
| | | +--ro hop-type? te-hop-type | | | +--ro numbered-node-hop
| | | +--ro direction? te-link-direction | | | +--ro node-id te-node-id
| | +--:(unnumbered-link-hop) | | | +--ro hop-type? te-hop-type
| | | +--ro unnumbered-link-hop | | +--:(numbered-link-hop)
| | | +--ro link-tp-id te-tp-id | | | +--ro numbered-link-hop
| | | +--ro node-id te-node-id | | | +--ro link-tp-id te-tp-id
| | | +--ro hop-type? te-hop-type | | | +--ro hop-type? te-hop-type
| | | +--ro direction? te-link-direction | | | +--ro direction? te-link-direction
| | +--:(as-number) | | +--:(unnumbered-link-hop)
| | | +--ro as-number-hop | | | +--ro unnumbered-link-hop
| | | +--ro as-number inet:as-number | | | +--ro link-tp-id te-tp-id
| | | +--ro hop-type? te-hop-type | | | +--ro node-id te-node-id
| | +--:(label) | | | +--ro hop-type? te-hop-type
| | +--ro label-hop | | | +--ro direction? te-link-direction
| | +--ro te-label | | +--:(as-number)
| | +--ro (technology)? | | | +--ro as-number-hop
| | | +--:(generic) | | | +--ro as-number inet:as-number
| | | +--ro generic? rt-types:generalized-label | | | +--ro hop-type? te-hop-type
| | +--ro direction? te-label-direction | | +--:(label)
| +--ro outgoing-explicit-route-hop* [index] | | +--ro label-hop
| +--ro index uint32 | | +--ro te-label
| +--ro (type)? | | +--ro (technology)?
| +--:(numbered-node-hop) | | | +--:(generic)
| | +--ro numbered-node-hop | | | +--ro generic?
| | +--ro node-id te-node-id | | | rt-types:generalized-label
| | +--ro hop-type? te-hop-type | | +--ro direction? te-label-direction
| +--:(numbered-link-hop) | +--ro outgoing-explicit-route-hop* [index]
| | +--ro numbered-link-hop | +--ro index uint32
| | +--ro link-tp-id te-tp-id | +--ro (type)?
| | +--ro hop-type? te-hop-type | +--:(numbered-node-hop)
| | +--ro direction? te-link-direction | | +--ro numbered-node-hop
| +--:(unnumbered-link-hop) | | +--ro node-id te-node-id
| | +--ro unnumbered-link-hop | | +--ro hop-type? te-hop-type
| | +--ro link-tp-id te-tp-id | +--:(numbered-link-hop)
| | +--ro node-id te-node-id | | +--ro numbered-link-hop
| | +--ro hop-type? te-hop-type | | +--ro link-tp-id te-tp-id
| | +--ro direction? te-link-direction | | +--ro hop-type? te-hop-type
| +--:(as-number) | | +--ro direction? te-link-direction
| | +--ro as-number-hop | +--:(unnumbered-link-hop)
| | +--ro as-number inet:as-number | | +--ro unnumbered-link-hop
| | +--ro hop-type? te-hop-type | | +--ro link-tp-id te-tp-id
| +--:(label) | | +--ro node-id te-node-id
| +--ro label-hop | | +--ro hop-type? te-hop-type
| +--ro te-label | | +--ro direction? te-link-direction
| +--ro (technology)? | +--:(as-number)
| | +--:(generic) | | +--ro as-number-hop
| | +--ro generic? rt-types:generalized-label | | +--ro as-number inet:as-number
| +--ro direction? te-label-direction | | +--ro hop-type? te-hop-type
+--ro incoming-record-route-subobjects | +--:(label)
| +--ro incoming-record-route-subobject* [index] | +--ro label-hop
| +--ro index uint32 | +--ro te-label
| +--ro (type)? | +--ro (technology)?
| +--:(numbered-node-hop) | | +--:(generic)
| | +--ro numbered-node-hop | | +--ro generic?
| | +--ro node-id te-node-id | | rt-types:generalized-label
| | +--ro flags* path-attribute-flags | +--ro direction? te-label-direction
| +--:(numbered-link-hop) +--ro incoming-record-route-subobjects
| | +--ro numbered-link-hop | +--ro incoming-record-route-subobject* [index]
| | +--ro link-tp-id te-tp-id | +--ro index uint32
| | +--ro flags* path-attribute-flags | +--ro (type)?
| +--:(unnumbered-link-hop) | +--:(numbered-node-hop)
| | +--ro unnumbered-link-hop | | +--ro numbered-node-hop
| | +--ro link-tp-id te-tp-id | | +--ro node-id te-node-id
| | +--ro node-id? te-node-id | | +--ro flags* path-attribute-flags
| | +--ro flags* path-attribute-flags | +--:(numbered-link-hop)
| +--:(label) | | +--ro numbered-link-hop
| +--ro label-hop | | +--ro link-tp-id te-tp-id
| +--ro te-label | | +--ro flags* path-attribute-flags
| | +--ro (technology)? | +--:(unnumbered-link-hop)
| | | +--:(generic) | | +--ro unnumbered-link-hop
| | | +--ro generic? rt-types:generalized-label | | +--ro link-tp-id te-tp-id
| | +--ro direction? te-label-direction | | +--ro node-id? te-node-id
| +--ro flags* path-attribute-flags | | +--ro flags* path-attribute-flags
+--ro outgoing-record-route-subobjects | +--:(label)
+--ro outgoing-record-route-subobject* [index] | +--ro label-hop
+--ro index uint32 | +--ro te-label
+--ro (type)? | | +--ro (technology)?
+--:(numbered-node-hop) | | | +--:(generic)
| +--ro numbered-node-hop | | | +--ro generic?
| +--ro node-id te-node-id | | | rt-types:generalized-label
| +--ro flags* path-attribute-flags | | +--ro direction? te-label-direction
+--:(numbered-link-hop) | +--ro flags* path-attribute-flags
| +--ro numbered-link-hop +--ro outgoing-record-route-subobjects
| +--ro link-tp-id te-tp-id +--ro outgoing-record-route-subobject* [index]
| +--ro flags* path-attribute-flags +--ro index uint32
+--:(unnumbered-link-hop) +--ro (type)?
| +--ro unnumbered-link-hop +--:(numbered-node-hop)
| +--ro link-tp-id te-tp-id | +--ro numbered-node-hop
| +--ro node-id? te-node-id | +--ro node-id te-node-id
| +--ro flags* path-attribute-flags | +--ro flags* path-attribute-flags
+--:(label) +--:(numbered-link-hop)
+--ro label-hop | +--ro numbered-link-hop
+--ro te-label | +--ro link-tp-id te-tp-id
| +--ro (technology)? | +--ro flags* path-attribute-flags
| | +--:(generic) +--:(unnumbered-link-hop)
| | +--ro generic? rt-types:generalized-label | +--ro unnumbered-link-hop
| +--ro direction? te-label-direction | +--ro link-tp-id te-tp-id
+--ro flags* path-attribute-flags | +--ro node-id? te-node-id
augment /te:te/te:tunnels/te:tunnel/te:primary-paths/te:primary-path | +--ro flags* path-attribute-flags
/te:lsps/te:lsp: +--:(label)
+--ro associated-rsvp-session? leafref +--ro label-hop
+--ro lsp-signaled-name? string +--ro te-label
+--ro session-attribute* identityref | +--ro (technology)?
+--ro lsp-attribute* identityref | | +--:(generic)
+--ro explicit-route-objects | | +--ro generic?
| +--ro incoming-explicit-route-hop* [index] | | rt-types:generalized-label
| | +--ro index uint32 | +--ro direction? te-label-direction
| | +--ro (type)? +--ro flags* path-attribute-flags
| | +--:(numbered-node-hop) augment /te:te/te-dev:interfaces/te-dev:interface:
| | | +--ro numbered-node-hop
| | | +--ro node-id te-node-id
| | | +--ro hop-type? te-hop-type
| | +--:(numbered-link-hop)
| | | +--ro numbered-link-hop
| | | +--ro link-tp-id te-tp-id
| | | +--ro hop-type? te-hop-type
| | | +--ro direction? te-link-direction
| | +--:(unnumbered-link-hop)
| | | +--ro unnumbered-link-hop
| | | +--ro link-tp-id te-tp-id
| | | +--ro node-id te-node-id
| | | +--ro hop-type? te-hop-type
| | | +--ro direction? te-link-direction
| | +--:(as-number)
| | | +--ro as-number-hop
| | | +--ro as-number inet:as-number
| | | +--ro hop-type? te-hop-type
| | +--:(label)
| | +--ro label-hop
| | +--ro te-label
| | +--ro (technology)?
| | | +--:(generic)
| | | +--ro generic? rt-types:generalized-label
| | +--ro direction? te-label-direction
| +--ro outgoing-explicit-route-hop* [index]
| +--ro index uint32
| +--ro (type)?
| +--:(numbered-node-hop)
| | +--ro numbered-node-hop
| | +--ro node-id te-node-id
| | +--ro hop-type? te-hop-type
| +--:(numbered-link-hop)
| | +--ro numbered-link-hop
| | +--ro link-tp-id te-tp-id
| | +--ro hop-type? te-hop-type
| | +--ro direction? te-link-direction
| +--:(unnumbered-link-hop)
| | +--ro unnumbered-link-hop
| | +--ro link-tp-id te-tp-id
| | +--ro node-id te-node-id
| | +--ro hop-type? te-hop-type
| | +--ro direction? te-link-direction
| +--:(as-number)
| | +--ro as-number-hop
| | +--ro as-number inet:as-number
| | +--ro hop-type? te-hop-type
| +--:(label)
| +--ro label-hop
| +--ro te-label
| +--ro (technology)?
| | +--:(generic)
| | +--ro generic? rt-types:generalized-label
| +--ro direction? te-label-direction
+--ro incoming-record-route-subobjects
| +--ro incoming-record-route-subobject* [index]
| +--ro index uint32
| +--ro (type)?
| +--:(numbered-node-hop)
| | +--ro numbered-node-hop
| | +--ro node-id te-node-id
| | +--ro flags* path-attribute-flags
| +--:(numbered-link-hop)
| | +--ro numbered-link-hop
| | +--ro link-tp-id te-tp-id
| | +--ro flags* path-attribute-flags
| +--:(unnumbered-link-hop)
| | +--ro unnumbered-link-hop
| | +--ro link-tp-id te-tp-id
| | +--ro node-id? te-node-id
| | +--ro flags* path-attribute-flags
| +--:(label)
| +--ro label-hop
| +--ro te-label
| | +--ro (technology)?
| | | +--:(generic)
| | | +--ro generic? rt-types:generalized-label
| | +--ro direction? te-label-direction
| +--ro flags* path-attribute-flags
+--ro outgoing-record-route-subobjects
+--ro outgoing-record-route-subobject* [index]
+--ro index uint32
+--ro (type)?
+--:(numbered-node-hop)
| +--ro numbered-node-hop
| +--ro node-id te-node-id
| +--ro flags* path-attribute-flags
+--:(numbered-link-hop)
| +--ro numbered-link-hop
| +--ro link-tp-id te-tp-id
| +--ro flags* path-attribute-flags
+--:(unnumbered-link-hop)
| +--ro unnumbered-link-hop
| +--ro link-tp-id te-tp-id
| +--ro node-id? te-node-id
| +--ro flags* path-attribute-flags
+--:(label)
+--ro label-hop
+--ro te-label
| +--ro (technology)?
| | +--:(generic)
| | +--ro generic? rt-types:generalized-label
| +--ro direction? te-label-direction
+--ro flags* path-attribute-flags
augment /te:te/te:tunnels/te:tunnel/te:primary-paths/te:primary-path
/te:lsp-provisioning-error-infos
/te:lsp-provisioning-error-info:
+--ro rsvp-message-type? identityref
+--ro rsvp-error-code? uint8
+--ro rsvp-error-subcode? uint16
augment /te:te/te:tunnels/te:tunnel/te:primary-paths/te:primary-path
/te:lsps/te:lsp/te:lsp-provisioning-error-infos
/te:lsp-provisioning-error-info:
+--ro rsvp-message-type? identityref
+--ro rsvp-error-code? uint8
+--ro rsvp-error-subcode? uint16
augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
/te:secondary-path/te:lsps/te:lsp:
+--ro associated-rsvp-session? leafref
+--ro lsp-signaled-name? string
+--ro session-attribute* identityref
+--ro lsp-attribute* identityref
+--ro explicit-route-objects
| +--ro incoming-explicit-route-hop* [index]
| | +--ro index uint32
| | +--ro (type)?
| | +--:(numbered-node-hop)
| | | +--ro numbered-node-hop
| | | +--ro node-id te-node-id
| | | +--ro hop-type? te-hop-type
| | +--:(numbered-link-hop)
| | | +--ro numbered-link-hop
| | | +--ro link-tp-id te-tp-id
| | | +--ro hop-type? te-hop-type
| | | +--ro direction? te-link-direction
| | +--:(unnumbered-link-hop)
| | | +--ro unnumbered-link-hop
| | | +--ro link-tp-id te-tp-id
| | | +--ro node-id te-node-id
| | | +--ro hop-type? te-hop-type
| | | +--ro direction? te-link-direction
| | +--:(as-number)
| | | +--ro as-number-hop
| | | +--ro as-number inet:as-number
| | | +--ro hop-type? te-hop-type
| | +--:(label)
| | +--ro label-hop
| | +--ro te-label
| | +--ro (technology)?
| | | +--:(generic)
| | | +--ro generic? rt-types:generalized-label
| | +--ro direction? te-label-direction
| +--ro outgoing-explicit-route-hop* [index]
| +--ro index uint32
| +--ro (type)?
| +--:(numbered-node-hop)
| | +--ro numbered-node-hop
| | +--ro node-id te-node-id
| | +--ro hop-type? te-hop-type
| +--:(numbered-link-hop)
| | +--ro numbered-link-hop
| | +--ro link-tp-id te-tp-id
| | +--ro hop-type? te-hop-type
| | +--ro direction? te-link-direction
| +--:(unnumbered-link-hop)
| | +--ro unnumbered-link-hop
| | +--ro link-tp-id te-tp-id
| | +--ro node-id te-node-id
| | +--ro hop-type? te-hop-type
| | +--ro direction? te-link-direction
| +--:(as-number)
| | +--ro as-number-hop
| | +--ro as-number inet:as-number
| | +--ro hop-type? te-hop-type
| +--:(label)
| +--ro label-hop
| +--ro te-label
| +--ro (technology)?
| | +--:(generic)
| | +--ro generic? rt-types:generalized-label
| +--ro direction? te-label-direction
+--ro incoming-record-route-subobjects
| +--ro incoming-record-route-subobject* [index]
| +--ro index uint32
| +--ro (type)?
| +--:(numbered-node-hop)
| | +--ro numbered-node-hop
| | +--ro node-id te-node-id
| | +--ro flags* path-attribute-flags
| +--:(numbered-link-hop)
| | +--ro numbered-link-hop
| | +--ro link-tp-id te-tp-id
| | +--ro flags* path-attribute-flags
| +--:(unnumbered-link-hop)
| | +--ro unnumbered-link-hop
| | +--ro link-tp-id te-tp-id
| | +--ro node-id? te-node-id
| | +--ro flags* path-attribute-flags
| +--:(label)
| +--ro label-hop
| +--ro te-label
| | +--ro (technology)?
| | | +--:(generic)
| | | +--ro generic? rt-types:generalized-label
| | +--ro direction? te-label-direction
| +--ro flags* path-attribute-flags
+--ro outgoing-record-route-subobjects
+--ro outgoing-record-route-subobject* [index]
+--ro index uint32
+--ro (type)?
+--:(numbered-node-hop)
| +--ro numbered-node-hop
| +--ro node-id te-node-id
| +--ro flags* path-attribute-flags
+--:(numbered-link-hop)
| +--ro numbered-link-hop
| +--ro link-tp-id te-tp-id
| +--ro flags* path-attribute-flags
+--:(unnumbered-link-hop)
| +--ro unnumbered-link-hop
| +--ro link-tp-id te-tp-id
| +--ro node-id? te-node-id
| +--ro flags* path-attribute-flags
+--:(label)
+--ro label-hop
+--ro te-label
| +--ro (technology)?
| | +--:(generic)
| | +--ro generic? rt-types:generalized-label
| +--ro direction? te-label-direction
+--ro flags* path-attribute-flags
augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
/te:secondary-path/te:lsp-provisioning-error-infos
/te:lsp-provisioning-error-info:
+--ro rsvp-message-type? identityref
+--ro rsvp-error-code? uint8
+--ro rsvp-error-subcode? uint16
augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
/te:secondary-path/te:lsps/te:lsp
/te:lsp-provisioning-error-infos
/te:lsp-provisioning-error-info:
+--ro rsvp-message-type? identityref
+--ro rsvp-error-code? uint8
+--ro rsvp-error-subcode? uint16
augment /te:te/te-dev:interfaces/te-dev:interface:
Figure 2: RSVP-TE model Tree diagram Figure 2: RSVP-TE model Tree diagram
2.2.2. RSVP-TE MPLS Model Tree Diagram 2.2.2. RSVP-TE MPLS Model Tree Diagram
Figure 5 shows the YANG tree diagram of the RSVP-TE MPLS YANG model Figure 5 shows the YANG tree diagram of the RSVP-TE MPLS YANG model
defined in module ietf-rsvp-te-mpls.yang and that augments RSVP-TE defined in module ietf-rsvp-te-mpls.yang and that augments RSVP-TE
module as well as RSVP and TE YANG modules. module as well as RSVP and TE YANG modules.
module: ietf-rsvp-te-mpls module: ietf-rsvp-te-mpls
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:
+--rw fast-reroute-local-revertive +--rw rsvp-frr-local-revert-delay? uint32
+--rw rsvp-frr-local-revert-delay? uint32 augment /rt:routing/rt:control-plane-protocols
augment /rt:routing/rt:control-plane-protocols /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces:
/rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces: augment /rt:routing/rt:control-plane-protocols
augment /rt:routing/rt:control-plane-protocols /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces
/rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces /rsvp:interface:
/rsvp:interface: augment /rt:routing/rt:control-plane-protocols
augment /rt:routing/rt:control-plane-protocols /rt:control-plane-protocol/rsvp:rsvp/rsvp:sessions:
/rt:control-plane-protocol/rsvp:rsvp/rsvp:globals augment /rt:routing/rt:control-plane-protocols
/rsvp:sessions: /rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors:
augment /rt:routing/rt:control-plane-protocols augment /te:te/te:tunnels/te:tunnel:
/rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors: +--rw session-attribute* identityref
augment /te:te/te:tunnels/te:tunnel: augment /te:te/te:lsps/te:lsp:
+--rw session-attribute* identityref
augment /te:te/te:lsps-state/te:lsp: +--ro session-attribute* identityref
+--ro session-attribute* identityref +--ro backup-info
+--ro backup-info +--ro backup-tunnel-name? string
+--ro backup-tunnel-name? string +--ro backup-frr-on? uint8
+--ro backup-frr-on? uint8 +--ro backup-protected-lsp-num? uint32
+--ro backup-protected-lsp-num? uint32 augment /te:te/te:tunnels/te:tunnel/te:primary-paths
augment /te:te/te:tunnels/te:tunnel/te:primary-paths/te:primary-path /te:primary-path/te:lsps/te:lsp:
/te:lsps/te:lsp: +--ro session-attribute* identityref
+--ro session-attribute* identityref +--ro backup-info
+--ro backup-info +--ro backup-tunnel-name? string
+--ro backup-tunnel-name? string +--ro backup-frr-on? uint8
+--ro backup-frr-on? uint8 +--ro backup-protected-lsp-num? uint32
+--ro backup-protected-lsp-num? uint32 augment /te:te/te:tunnels/te:tunnel/te:secondary-paths
augment /te:te/te:tunnels/te:tunnel/te:secondary-paths /te:secondary-path/te:lsps/te:lsp:
/te:secondary-path/te:lsps/te:lsp: +--ro session-attribute* identityref
+--ro session-attribute* identityref +--ro backup-info
+--ro backup-info +--ro backup-tunnel-name? string
+--ro backup-tunnel-name? string +--ro backup-frr-on? uint8
+--ro backup-frr-on? uint8 +--ro backup-protected-lsp-num? uint32
+--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 (bandwidth-value)?
+--rw (bandwidth-value)? | +--:(absolute)
| +--:(absolute) | | +--rw absolute-value? te-packet-types:bandwidth-kbps
| | +--rw absolute-value? te-packet-types:bandwidth-kbps | +--:(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?
| +--rw maximum-reservable? | | te-packet-types:bandwidth-kbps
| | te-packet-types:bandwidth-kbps | +--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?
| +--rw maximum-reservable? | | te-packet-types:bandwidth-kbps
| | te-packet-types:bandwidth-kbps | +--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?
+--rw maximum-reservable? | te-packet-types:bandwidth-kbps
| te-packet-types:bandwidth-kbps +--rw bc-value* uint32
+--rw 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 (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
| -> /te:te/tunnels/tunnel/name +--:(auto-tunnel)
+--:(auto-tunnel) +--rw auto-tunnel-backups
+--rw auto-tunnel-backups +--rw auto-backup-protection? identityref
+--rw auto-backup-protection? identityref +--rw auto-backup-path-computation? identityref
+--rw auto-backup-path-computation? identityref
Figure 3: RSVP-TE MPLS Tree diagram Figure 3: RSVP-TE MPLS Tree diagram
2.3. YANG Modules 2.3. YANG Modules
2.3.1. RSVP-TE YANG Module 2.3.1. RSVP-TE YANG Module
The RSVP-TE generic YANG module "ietf-rsvp-te" imports the following The RSVP-TE generic YANG module "ietf-rsvp-te" imports the following
modules: modules:
skipping to change at page 16, line 43 skipping to change at page 11, line 36
o ietf-te-types defined in [I-D.ietf-teas-yang-te-types] o ietf-te-types defined in [I-D.ietf-teas-yang-te-types]
o ietf-te and ietf-te-dev defined in [I-D.ietf-teas-yang-te] o ietf-te and ietf-te-dev defined in [I-D.ietf-teas-yang-te]
This module references the following documents: This module references the following documents:
[I-D.ietf-teas-yang-rsvp], [RFC8349], [I-D.ietf-teas-yang-te], [I-D.ietf-teas-yang-rsvp], [RFC8349], [I-D.ietf-teas-yang-te],
[I-D.ietf-teas-yang-te-types], [RFC2210], [RFC4920], [RFC5420], [I-D.ietf-teas-yang-te-types], [RFC2210], [RFC4920], [RFC5420],
[RFC7570], [RFC4859]. [RFC7570], [RFC4859].
<CODE BEGINS> file "ietf-rsvp-te@2020-03-09.yang" <CODE BEGINS> file "ietf-rsvp-te@2021-02-21.yang"
module ietf-rsvp-te { module ietf-rsvp-te {
yang-version 1.1; yang-version 1.1;
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;
reference "draft-ietf-teas-yang-rsvp: A YANG Data Model for reference
Resource Reservation Protocol (RSVP)"; "draft-ietf-teas-yang-rsvp: A YANG Data Model for
Resource Reservation Protocol (RSVP)";
} }
import ietf-routing { import ietf-routing {
prefix "rt"; prefix rt;
reference "RFC8349: A YANG Data Model for Routing Management"; reference
} "RFC8349: A YANG Data Model for Routing Management";
}
import ietf-routing-types { import ietf-routing-types {
prefix rt-types; prefix rt-types;
reference "RFC8294: Common YANG Data Types for the Routing Area"; reference
"RFC8294: Common YANG Data Types for the Routing Area";
} }
import ietf-te { import ietf-te {
prefix te; prefix te;
reference "draft-ietf-teas-yang-te: A YANG Data Model for Traffic reference
Engineering Tunnels and Interfaces"; "draft-ietf-teas-yang-te: A YANG Data Model for Traffic
Engineering Tunnels and Interfaces";
} }
import ietf-te-device { import ietf-te-device {
prefix te-dev; prefix te-dev;
reference "draft-ietf-teas-yang-te: A YANG Data Model for Traffic reference
Engineering Tunnels and Interfaces"; "draft-ietf-teas-yang-te: A YANG Data Model for Traffic
Engineering Tunnels and Interfaces";
} }
/* Import TE generic types */ /* Import TE generic types */
import ietf-te-types { import ietf-te-types {
prefix te-types; prefix te-types;
reference "draft-ietf-teas-yang-te-types: A YANG Data Model for reference
Common Traffic Engineering Types"; "RFC8776: Common YANG Data Types for Traffic Engineering.";
} }
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
reference "RFC6991: Common YANG Data Types"; reference
"RFC6991: Common YANG Data Types";
} }
organization organization
"IETF Traffic Engineering Architecture and Signaling (TEAS) "IETF Traffic Engineering Architecture and Signaling (TEAS)
Working Group"; Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/teas/> "WG Web: <http://tools.ietf.org/wg/teas/>
WG List: <mailto:teas@ietf.org> WG List: <mailto:teas@ietf.org>
WG Chair: Lou Berger
<mailto:lberger@labn.net>
WG Chair: Vishnu Pavan Beeram
<mailto:vbeeram@juniper.net>
Editor: Vishnu Pavan Beeram Editor: Vishnu Pavan Beeram
<mailto:vbeeram@juniper.net> <mailto:vbeeram@juniper.net>
Editor: Tarek Saad Editor: Tarek Saad
<mailto:tsaad.net@gmail.com> <mailto:tsaad.net@gmail.com>
Editor: Rakesh Gandhi Editor: Rakesh Gandhi
<mailto:rgandhi@cisco.com> <mailto:rgandhi@cisco.com>
Editor: Xufeng Liu Editor: Xufeng Liu
skipping to change at page 18, line 46 skipping to change at page 13, line 32
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
// RFC Ed.: replace XXXX with actual RFC number and remove this // RFC Ed.: replace XXXX with actual RFC number and remove this
// note. // note.
// RFC Ed.: update the date below with the date of RFC publication // RFC Ed.: update the date below with the date of RFC publication
// and remove this note. // and remove this note.
revision "2020-03-09" { revision 2021-02-21 {
description "A YANG Data Model for RSVP-TE"; description
"A YANG Data Model for RSVP-TE";
reference reference
"RFCXXXX: A YANG Data Model for RSVP-TE Protocol"; "RFCXXXX: A YANG Data Model for RSVP-TE Protocol";
} }
identity rsvp-message-type { identity rsvp-message-type {
description "RSVP message types"; description
"RSVP message types";
} }
identity rsvp-message-path { identity rsvp-message-path {
base rsvp-message-type; base rsvp-message-type;
description "RSVP Path message"; description
reference "RFC2205"; "RSVP Path message";
reference
"RFC2205";
} }
identity rsvp-message-resv { identity rsvp-message-resv {
base rsvp-message-type; base rsvp-message-type;
description "RSVP Resv message"; description
reference "RFC2205"; "RSVP Resv message";
reference
"RFC2205";
} }
identity rsvp-message-path-err { identity rsvp-message-path-err {
base rsvp-message-type; base rsvp-message-type;
description "RSVP Path-Err message"; description
reference "RFC2205"; "RSVP Path-Err message";
reference
"RFC2205";
} }
identity rsvp-message-resv-err { identity rsvp-message-resv-err {
base rsvp-message-type; base rsvp-message-type;
description "RSVP Resv-Err message"; description
reference "RFC2205"; "RSVP Resv-Err message";
reference
"RFC2205";
} }
identity rsvp-message-path-tear { identity rsvp-message-path-tear {
base rsvp-message-type; base rsvp-message-type;
description "RSVP Path Tear message"; description
reference "RFC2205"; "RSVP Path Tear message";
reference
"RFC2205";
} }
identity rsvp-message-resv-conf { identity rsvp-message-resv-conf {
base rsvp-message-type; base rsvp-message-type;
description "RSVP Resv Confirm message"; description
reference "RFC2205"; "RSVP Resv Confirm message";
reference
"RFC2205";
} }
identity rsvp-message-srefresh { identity rsvp-message-srefresh {
base rsvp-message-type; base rsvp-message-type;
description "RSVP SRefresh message"; description
reference "RFC2961"; "RSVP SRefresh message";
reference
"RFC2961";
} }
identity rsvp-message-hello { identity rsvp-message-hello {
base rsvp-message-type; base rsvp-message-type;
description "RSVP Hello message"; description
reference "RFC3209"; "RSVP Hello message";
reference
"RFC3209";
} }
identity rsvp-message-bundle { identity rsvp-message-bundle {
base rsvp-message-type; base rsvp-message-type;
description "RSVP Bundle message"; description
reference "RFC2961"; "RSVP Bundle message";
reference
"RFC2961";
} }
identity rsvp-message-notify { identity rsvp-message-notify {
base rsvp-message-type; base rsvp-message-type;
description "RSVP Notify message"; description
reference "RFC3473"; "RSVP Notify message";
reference
"RFC3473";
} }
/** /**
* 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";
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";
ordered-by user; ordered-by user;
description description
"List of RSVP Path record-route objects"; "List of RSVP Path record-route objects";
uses te-types:record-route-state; uses te-types:record-route-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";
ordered-by user; ordered-by user;
description description
"List of RSVP Resv record-route objects"; "List of RSVP Resv record-route objects";
uses te-types:record-route-state; uses te-types:record-route-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";
ordered-by user; ordered-by user;
description description
"List of incoming RSVP Path explicit-route objects"; "List of incoming RSVP Path explicit-route objects";
leaf index { leaf index {
type uint32; type uint32;
description description
"Explicit route hop index. The index is used to "Explicit route hop index. The index is used to
identify an entry in the list. The order of entries identify an entry in the list. The order of entries
is defined by the user without relying on key values"; is defined by the user without relying on key values";
} }
uses te-types:explicit-route-hop; uses te-types:explicit-route-hop;
} }
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";
ordered-by user; ordered-by user;
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 uint32;
description description
"Explicit route hop index. The index is used to "Explicit route hop index. The index is used to
identify an entry in the list. The order of entries identify an entry in the list. The order of entries
is defined by the user without relying on key values"; is defined by the user without relying on key values";
} }
uses te-types:explicit-route-hop; uses te-types:explicit-route-hop;
} }
} }
} }
grouping lsp-attributes-flags-config { grouping lsp-attributes-flags {
description description
"Configuration parameters relating to RSVP-TE LSP "Configuration parameters relating to RSVP-TE LSP
attribute flags"; attribute flags";
leaf-list lsp-attribute { leaf-list lsp-attribute {
type identityref { type identityref {
base te-types:lsp-attributes-flags; base te-types:lsp-attributes-flags;
} }
description "RSVP per LSP attributes flags"; description
"RSVP per LSP attributes flags";
reference reference
"RFC4920, RFC5420, RFC7570"; "RFC4920, RFC5420, RFC7570";
} }
} }
grouping lsp-session-attributes-obj-flags-config { grouping lsp-session-attributes-obj-flags {
description description
"Configuration parameters relating to RSVP-TE LSP "Configuration parameters relating to RSVP-TE LSP
session attribute flags"; session attribute flags";
reference reference
"RFC4859: Registry for RSVP-TE Session Flags"; "RFC4859: Registry for RSVP-TE Session Flags";
leaf-list session-attribute { leaf-list session-attribute {
when "../session-attribute != when "../session-attribute !=
'te-types:bandwidth-protection-desired' or 'te-types:bandwidth-protection-desired' or
../session-attribute != ../session-attribute !=
'te-types:soft-preemption-desired'"; 'te-types:soft-preemption-desired'" {
description
"Session attributes applicable to generic technologies
only.";
}
type identityref { type identityref {
base te-types:session-attributes-flags; base te-types:session-attributes-flags;
} }
description "RSVP session attributes flags"; description
"RSVP session attributes flags";
reference reference
"RFC4859: Registry for RSVP-TE Session Flags"; "RFC4859: Registry for RSVP-TE Session Flags";
} }
} }
grouping lsp-properties-config { grouping lsp-properties {
description description
"Configuration parameters relating to RSVP-TE LSP "Configuration parameters relating to RSVP-TE LSP
session attribute flags"; session attribute flags";
leaf lsp-signaled-name { leaf lsp-signaled-name {
type string; type string;
description description
"Sets the session name to use in the session "Sets the session name to use in the session
attribute object."; attribute object.";
} }
uses lsp-session-attributes-obj-flags-config; uses lsp-session-attributes-obj-flags;
uses lsp-attributes-flags-config; uses lsp-attributes-flags;
} }
grouping tunnel-properties-config { grouping tunnel-properties {
description "RSVP-TE Tunnel properties grouping"; description
"RSVP-TE Tunnel properties grouping";
leaf retry-timer { leaf retry-timer {
type uint16 { type uint16 {
range 1..600; range "1..600";
} }
units seconds; units "seconds";
description description
"sets the time between attempts to establish the "sets the time between attempts to establish the
LSP"; LSP";
} }
} }
/*** End of RSVP-TE LSP groupings ***/ /*** End of RSVP-TE LSP groupings ***/
/** /**
* RSVP-TE generic global properties. * RSVP-TE generic global properties.
*/ */
grouping global-soft-preemption-config {
description
"Configuration for global RSVP-TE soft preemption";
leaf soft-preemption-timeout {
type uint16 {
range 0..300;
}
default 0;
description
"Timeout value for soft preemption to revert
to hard preemption";
}
}
grouping global-soft-preemption { grouping global-soft-preemption {
description description
"Top level group for RSVP-TE soft-preemption"; "Configuration for global 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";
uses global-soft-preemption-config; leaf soft-preemption-timeout {
type uint16 {
range "0..300";
}
units "seconds";
default "0";
description
"Timeout value for soft preemption to revert
to hard preemption";
}
} }
} }
/*** 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 state {
config false;
description
"State information associated with RSVP-TE
bandwidth";
}
} }
} }
/*** End of RSVP-TE generic groupings ***/
/*** End of RSVP-TE generic groupings ***/
/* 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/rsvp:globals" { + "rt:control-plane-protocol/rsvp:rsvp" {
description description
"RSVP-TE augmentation to RSVP globals"; "RSVP-TE augmentation to RSVP globals";
uses global-soft-preemption; uses global-soft-preemption;
} }
/* Linkage to the base RSVP all links */ /* Linkage to the base RSVP all links */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" { + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" {
description description
"RSVP-TE generic data augmentation pertaining to interfaces"; "RSVP-TE generic data augmentation pertaining to interfaces";
uses rsvp-te-interface-attributes; uses rsvp-te-interface-attributes;
} }
/* Linkage to per RSVP interface */ /* Linkage to per RSVP interface */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/"
"rsvp:interface" { + "rsvp:interface" {
description description
"RSVP-TE generic data augmentation pertaining to specific "RSVP-TE generic data augmentation pertaining to specific
interface"; interface";
uses rsvp-te-interface-attributes; uses rsvp-te-interface-attributes;
} }
/* add augmentation for sessions and neighbors */ /* add augmentation for sessions and neighbors */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + "rt:control-plane-protocol/rsvp:rsvp/"
+ "rsvp:sessions" { + "rsvp:sessions" {
description description
"RSVP-TE generic data augmentation pertaining to session"; "RSVP-TE generic data augmentation pertaining to session";
list session-te { list session-te {
key "tunnel-endpoint tunnel-id extended-tunnel-id"; key "tunnel-endpoint tunnel-id extended-tunnel-id";
config false; config false;
description description
"List of RSVP sessions"; "List of RSVP sessions";
leaf tunnel-endpoint { leaf tunnel-endpoint {
type inet:ip-address; type inet:ip-address;
description "XX"; description
"XX";
} }
leaf tunnel-id { leaf tunnel-id {
type uint16; type uint16;
description "XX"; description
"XX";
} }
leaf extended-tunnel-id { leaf extended-tunnel-id {
type inet:ip-address; type inet:ip-address;
description "XX"; description
"XX";
} }
uses rsvp:session-attributes;
uses rsvp:session-attributes-state;
} }
} }
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + "rt:control-plane-protocol/rsvp:rsvp/"
+ "rsvp:sessions/session-te/psbs/psb" { + "rsvp:sessions/session-te/psbs/psb" {
description description
"RSVP-TE generic data augmentation pertaining to session"; "RSVP-TE generic data augmentation pertaining to session";
/* To be added */ /* To be added */
leaf tspec-average-rate { leaf tspec-average-rate {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
units "Bytes per second"; units "Bytes per second";
description "Tspec Token Bucket Average Rate"; description
reference "RFC2210: RSVP with INTSERV"; "Tspec Token Bucket Average Rate";
reference
"RFC2210: RSVP with INTSERV";
} }
leaf tspec-size { leaf tspec-size {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
units "Bytes per second"; units "Bytes per second";
description "Tspec Token Bucket Burst Rate"; description
reference "RFC2210"; "Tspec Token Bucket Burst Rate";
reference
"RFC2210";
} }
leaf tspec-peak-rate { leaf tspec-peak-rate {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
units "Bytes per second"; units "Bytes per second";
description "Tspec Token Bucket Peak Data Rate"; description
reference "RFC2210"; "Tspec Token Bucket Peak Data Rate";
reference
"RFC2210";
} }
leaf min-policed-unit { leaf min-policed-unit {
type uint32; type uint32;
description "Tspec Minimum Policed Unit"; description
reference "RFC2210"; "Tspec Minimum Policed Unit";
reference
"RFC2210";
} }
leaf max-packet-size { leaf max-packet-size {
type uint32; type uint32;
description "Tspec Maximum Packet Size"; description
reference "RFC2210"; "Tspec Maximum Packet Size";
reference
"RFC2210";
} }
} }
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + "rt:control-plane-protocol/rsvp:rsvp/"
+ "rsvp:sessions/session-te/rsbs/rsb" { + "rsvp:sessions/session-te/rsbs/rsb" {
description description
"RSVP-TE generic data augmentation pertaining to session"; "RSVP-TE generic data augmentation pertaining to session";
leaf fspec-average-rate { leaf fspec-average-rate {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
units "Bytes per second"; units "Bytes per second";
description "Fspec Token Bucket Average Rate"; description
reference "RFC2210"; "Fspec Token Bucket Average Rate";
reference
"RFC2210";
} }
leaf fspec-size { leaf fspec-size {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
units "Bytes per second"; units "Bytes per second";
description "Fspec Token Bucket Burst Rate"; description
reference "RFC2210"; "Fspec Token Bucket Burst Rate";
reference
"RFC2210";
} }
leaf fspec-peak-rate { leaf fspec-peak-rate {
type rt-types:bandwidth-ieee-float32; type rt-types:bandwidth-ieee-float32;
units "Bytes per second"; units "Bytes per second";
description "Fspec Token Bucket Peak Data Rate"; description
reference "RFC2210"; "Fspec Token Bucket Peak Data Rate";
reference
"RFC2210";
} }
leaf min-policed-unit { leaf min-policed-unit {
type uint32; type uint32;
description "Fspec Minimum Policed Unit"; description
reference "RFC2210"; "Fspec Minimum Policed Unit";
reference
"RFC2210";
} }
leaf max-packet-size { leaf max-packet-size {
type uint32; type uint32;
description "Fspec Maximum Packet Size"; description
reference "RFC2210"; "Fspec Maximum Packet Size";
reference
"RFC2210";
} }
} }
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
"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" { augment "/te:te/te:tunnels/te:tunnel" {
when "/te:te/te:tunnels/te:tunnel" + when "/te:te/te:tunnels/te:tunnel"
"/te:primary-paths/te:primary-path" + + "/te:primary-paths/te:primary-path"
"/te:signaling-type = 'te-types:path-setup-rsvp'" { + "/te:signaling-type = 'te-types: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;
uses tunnel-properties-config; uses tunnel-properties;
} }
/* TE LSP augmentation */ /* TE LSP augmentation */
grouping rsvp-te-lsp-error-info { grouping rsvp-te-lsp-error-info {
description description
"Grouping for RSVP-TE error reporting information"; "Grouping for RSVP-TE error reporting information";
leaf rsvp-message-type { leaf rsvp-message-type {
type identityref { type identityref {
base rsvp-message-type; base rsvp-message-type;
} }
description description
"The RSVP message type that delivered the error"; "The RSVP message type that delivered the error";
} }
skipping to change at page 27, line 29 skipping to change at page 23, line 29
"Grouping for RSVP-TE error reporting information"; "Grouping for RSVP-TE error reporting information";
leaf rsvp-message-type { leaf rsvp-message-type {
type identityref { type identityref {
base rsvp-message-type; base rsvp-message-type;
} }
description description
"The RSVP message type that delivered the error"; "The RSVP message type that delivered the error";
} }
leaf rsvp-error-code { leaf rsvp-error-code {
type uint8; type uint8;
description "RSVP error code"; description
reference "RFC2205"; "RSVP error code";
reference
"RFC2205";
} }
leaf rsvp-error-subcode { leaf rsvp-error-subcode {
type uint16; type uint16;
description "RSVP Error sub-codes"; description
reference "RFC2205"; "RSVP Error sub-codes";
reference
"RFC2205";
} }
} }
grouping rsvp-te-lsp-properties { augment "/te:te/te:lsps/te:lsp" {
description "RSVP-TE LSP properties grouping"; when "/te:te/te:lsps/te:lsp"
+ "/te:signaling-type = 'te-types:path-setup-rsvp'" {
description
"When the signaling protocol is RSVP-TE ";
}
description
"RSVP-TE generic data augmentation pertaining to specific TE
LSP";
leaf associated-rsvp-session { leaf associated-rsvp-session {
type leafref { type leafref {
path "/rt:routing/rt:control-plane-protocols/" path "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + "rt:control-plane-protocol/rsvp:rsvp/"
+ "rsvp:sessions/session-te/tunnel-id"; + "rsvp:sessions/session-te/tunnel-id";
} }
config false; config false;
description description
"If the signalling protocol specified for this path is "If the signalling protocol specified for this path is
RSVP-TE, this leaf provides a reference to the associated RSVP-TE, this leaf provides a reference to the associated
session within the RSVP-TE protocol sessions list, such session within the RSVP-TE protocol sessions list, such
that details of the signaling can be retrieved."; that details of the signaling can be retrieved.";
} }
uses lsp-properties;
uses lsp-properties-config; uses rsvp-te-lsp-error-info;
uses lsp-explicit-route-information-state; uses lsp-explicit-route-information-state;
uses lsp-record-route-information-state; uses lsp-record-route-information-state;
} }
augment "/te:te/te:lsps-state/te:lsp" {
when "/te:te/te:lsps-state/te:lsp" +
"/te:signaling-type = 'te-types:path-setup-rsvp'" {
description
"When the signaling protocol is RSVP-TE ";
}
description
"RSVP-TE generic data augmentation pertaining to specific TE
LSP";
uses rsvp-te-lsp-properties;
}
augment "/te:te/te:tunnels/te:tunnel/te:primary-paths" +
"/te:primary-path/te:lsps/te:lsp" {
when "/te:te/te:tunnels/te:tunnel/te:primary-paths" +
"/te:primary-path/te:lsps/te:lsp" +
"/te:signaling-type = 'te-types:path-setup-rsvp'" {
description
"When the signaling protocol is RSVP-TE ";
}
description
"RSVP-TE generic data augmentation pertaining to specific TE
LSP";
uses rsvp-te-lsp-properties;
}
augment "/te:te/te:tunnels/te:tunnel/te:primary-paths" +
"/te:primary-path" +
"/te:lsp-provisioning-error-infos" +
"/te:lsp-provisioning-error-info" {
description
"Augmentation for RSVP-TE per LSP error reason";
uses rsvp-te-lsp-error-info;
}
augment "/te:te/te:tunnels/te:tunnel/te:primary-paths" +
"/te:primary-path/te:lsps/te:lsp" +
"/te:lsp-provisioning-error-infos" +
"/te:lsp-provisioning-error-info" {
when "/te:te/te:tunnels/te:tunnel/te:primary-paths" +
"/te:primary-path/te:lsps/te:lsp" +
"/te:signaling-type = 'te-types:path-setup-rsvp'" {
description
"When the signaling protocol is RSVP-TE ";
}
description
"Augmentation for RSVP-TE per path error reason";
uses rsvp-te-lsp-error-info;
}
augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths" +
"/te:secondary-path/te:lsps/te:lsp" {
when "/te:te/te:tunnels/te:tunnel/te:secondary-paths" +
"/te:secondary-path/te:lsps/te:lsp" +
"/te:signaling-type = 'te-types:path-setup-rsvp'" {
description
"When the signaling protocol is RSVP-TE ";
}
description
"RSVP-TE generic data augmentation pertaining to specific TE
LSP";
uses rsvp-te-lsp-properties;
}
augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths" +
"/te:secondary-path" +
"/te:lsp-provisioning-error-infos" +
"/te:lsp-provisioning-error-info" {
description
"Augmentation for RSVP-TE per path error reason";
uses rsvp-te-lsp-error-info;
}
augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths" +
"/te:secondary-path/te:lsps/te:lsp" +
"/te:lsp-provisioning-error-infos" +
"/te:lsp-provisioning-error-info" {
when "/te:te/te:tunnels/te:tunnel/te:secondary-paths" +
"/te:secondary-path/te:lsps/te:lsp" +
"/te:signaling-type = 'te-types:path-setup-rsvp'" {
description
"When the signaling protocol is RSVP-TE ";
}
description
"Augmentation for RSVP-TE per LSP error reason";
uses rsvp-te-lsp-error-info;
}
/* TE interface augmentation */ /* TE interface augmentation */
augment "/te:te/te-dev:interfaces/te-dev:interface" { augment "/te:te/te-dev:interfaces/te-dev:interface" {
description description
"RSVP-TE generic data augmentation pertaining to specific TE "RSVP-TE generic data augmentation pertaining to specific TE
interface"; interface";
} }
} }
<CODE ENDS> <CODE ENDS>
Figure 4: RSVP TE generic YANG module Figure 4: RSVP TE generic YANG module
skipping to change at page 30, line 28 skipping to change at page 25, line 5
o ietf-routing-types defined in [RFC8294] o ietf-routing-types defined in [RFC8294]
o ietf-te-mpls-types defined in [I-D.ietf-teas-yang-te-types] o ietf-te-mpls-types defined in [I-D.ietf-teas-yang-te-types]
o ietf-te and ietf-te-dev defined in [I-D.ietf-teas-yang-te] o ietf-te and ietf-te-dev defined in [I-D.ietf-teas-yang-te]
This module references the following documents: This module references the following documents:
[I-D.ietf-teas-yang-rsvp], [RFC8349], [I-D.ietf-teas-yang-te-types], [I-D.ietf-teas-yang-rsvp], [RFC8349], [I-D.ietf-teas-yang-te-types],
[I-D.ietf-teas-yang-te], [RFC3209]. [I-D.ietf-teas-yang-te], [RFC3209].
<CODE BEGINS> file "ietf-rsvp-te-mpls@2020-03-09.yang" <CODE BEGINS> file "ietf-rsvp-te-mpls@2021-02-21.yang"
module ietf-rsvp-te-mpls { module ietf-rsvp-te-mpls {
yang-version 1.1; yang-version 1.1;
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;
reference "draft-ietf-teas-yang-rsvp: A YANG Data Model for reference
Resource Reservation Protocol (RSVP)"; "draft-ietf-teas-yang-rsvp: A YANG Data Model for
Resource Reservation Protocol (RSVP)";
} }
import ietf-routing { import ietf-routing {
prefix "rt"; prefix rt;
reference "RFC8349: A YANG Data Model for Routing Management"; reference
"RFC8349: A YANG Data Model for Routing Management";
} }
import ietf-te-packet-types { import ietf-te-packet-types {
prefix "te-packet-types"; prefix te-packet-types;
reference "draft-ietf-teas-yang-te-types: A YANG Data Model for reference
Common Traffic Engineering Types"; "RFC8776: Common YANG Data Types for Traffic Engineering.";
} }
import ietf-te-types { import ietf-te-types {
prefix "te-types"; prefix te-types;
reference "draft-ietf-teas-yang-te-types: A YANG Data Model for reference
Common Traffic Engineering Types"; "RFC8776: Common YANG Data Types for Traffic Engineering.";
} }
import ietf-te { import ietf-te {
prefix "te"; prefix te;
reference "draft-ietf-teas-yang-te: A YANG Data Model for Traffic reference
Engineering Tunnels and Interfaces"; "draft-ietf-teas-yang-te: A YANG Data Model for Traffic
Engineering Tunnels and Interfaces";
} }
import ietf-te-device { import ietf-te-device {
prefix "te-dev"; prefix te-dev;
reference "draft-ietf-teas-yang-te: A YANG Data Model for Traffic reference
Engineering Tunnels and Interfaces"; "draft-ietf-teas-yang-te: A YANG Data Model for Traffic
Engineering Tunnels and Interfaces";
} }
organization organization
"IETF Traffic Engineering Architecture and Signaling (TEAS) "IETF Traffic Engineering Architecture and Signaling (TEAS)
Working Group"; Working Group";
contact contact
"WG Web: <http://tools.ietf.org/wg/teas/> "WG Web: <http://tools.ietf.org/wg/teas/>
WG List: <mailto:teas@ietf.org> WG List: <mailto:teas@ietf.org>
WG Chair: Lou Berger
<mailto:lberger@labn.net>
WG Chair: Vishnu Pavan Beeram
<mailto:vbeeram@juniper.net>
Editor: Vishnu Pavan Beeram Editor: Vishnu Pavan Beeram
<mailto:vbeeram@juniper.net> <mailto:vbeeram@juniper.net>
Editor: Tarek Saad Editor: Tarek Saad
<mailto:tsaad.net@gmail.com> <mailto:tsaad.net@gmail.com>
Editor: Rakesh Gandhi Editor: Rakesh Gandhi
<mailto:rgandhi@cisco.com> <mailto:rgandhi@cisco.com>
Editor: Xufeng Liu Editor: Xufeng Liu
skipping to change at page 32, line 25 skipping to change at page 26, line 39
without modification, is permitted pursuant to, and subject without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents Relating to IETF Documents
(https://trustee.ietf.org/license-info). (https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices."; the RFC itself for full legal notices.";
// RFC Ed.: replace XXXX with actual RFC number and remove this // RFC Ed.: replace XXXX with actual RFC number and remove this
// note. // note.
// RFC Ed.: update the date below with the date of RFC publication // RFC Ed.: update the date below with the date of RFC publication
// and remove this note. // and remove this note.
revision "2020-03-09" { revision 2021-02-21 {
description "Update to MPLS RSVP-TE YANG initial revision."; description
"Update to MPLS RSVP-TE YANG initial revision.";
reference reference
"RFCXXXX: A YANG Data Model for RSVP-TE Protocol"; "RFCXXXX: A YANG Data Model for RSVP-TE Protocol";
} }
/* RSVP-TE MPLS LSPs groupings */ /* RSVP-TE MPLS LSPs groupings */
grouping lsp-attributes-flags-mpls-config {
grouping lsp-attributes-flags-mpls {
description description
"Configuration parameters relating to RSVP-TE MPLS LSP "Configuration parameters relating to RSVP-TE MPLS LSP
attribute flags"; attribute flags";
} }
grouping lsp-session-attributes-obj-flags-mpls-config { grouping lsp-session-attributes-obj-flags-mpls {
description description
"Configuration parameters relating to RSVP-TE MPLS LSP "Configuration parameters relating to RSVP-TE MPLS LSP
session attribute flags"; session attribute flags";
reference reference
"RFC4859: Registry for RSVP-TE Session Flags"; "RFC4859: Registry for RSVP-TE Session Flags";
leaf-list session-attribute { leaf-list session-attribute {
when "../session-attribute = when "../session-attribute =
'te-types:bandwidth-protection-desired' or 'te-types:bandwidth-protection-desired' or
../session-attribute = ../session-attribute =
'te-types:soft-preemption-desired'"; 'te-types:soft-preemption-desired'" {
description
"Session attributes applicable to mpls technology";
}
type identityref { type identityref {
base te-types:session-attributes-flags; base te-types:session-attributes-flags;
} }
description "RSVP session attributes flags"; description
"RSVP session attributes flags";
reference reference
"RFC4859: Registry for RSVP-TE Session Flags"; "RFC4859: Registry for RSVP-TE Session Flags";
} }
} }
grouping tunnel-properties-mpls-config { grouping tunnel-properties-mpls {
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;
uses lsp-attributes-flags-mpls-config; uses lsp-attributes-flags-mpls;
} }
grouping lsp-properties-mpls { grouping lsp-properties-mpls {
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;
uses lsp-attributes-flags-mpls-config; uses lsp-attributes-flags-mpls;
} }
/* 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 te-packet-types:bandwidth-kbps; type te-packet-types:bandwidth-kbps;
description description
"The amount of over-subscribed bandwidth on "The amount of over-subscribed bandwidth on
the interface"; the interface";
} }
} }
grouping rsvp-te-interface-softpreemption-state { grouping rsvp-te-interface-softpreemption-state {
description description
"The RSVP-TE interface preeemptions state grouping"; "The RSVP-TE interface preeemptions state grouping";
container interface-softpreemption-state { container interface-softpreemption-state {
description description
"The RSVP-TE interface preeemptions state grouping"; "The RSVP-TE interface preeemptions state grouping";
leaf soft-preempted-bandwidth { leaf soft-preempted-bandwidth {
type te-packet-types:bandwidth-kbps; type te-packet-types:bandwidth-kbps;
description description
"The amount of soft-preempted bandwidth on "The amount of soft-preempted bandwidth on
this interface"; this interface";
} }
list lsps { list lsps {
key key "source destination tunnel-id lsp-id "
"source destination tunnel-id lsp-id "+ + "extended-tunnel-id";
"extended-tunnel-id";
description description
"List of LSPs that are soft-preempted"; "List of LSPs that are soft-preempted";
leaf source { leaf source {
type leafref { type leafref {
path "/te:te/te:lsps-state/te:lsp/"+ path "/te:te/te:lsps/te:lsp/"
"te:source"; + "te:source";
} }
description description
"Tunnel sender address extracted from "Tunnel sender address extracted from
SENDER_TEMPLATE object"; SENDER_TEMPLATE object";
reference "RFC3209"; reference
"RFC3209";
} }
leaf destination { leaf destination {
type leafref { type leafref {
path "/te:te/te:lsps-state/te:lsp/"+ path "/te:te/te:lsps/te:lsp/"
"te:destination"; + "te:destination";
} }
description description
"Tunnel endpoint address extracted from "Tunnel endpoint address extracted from
SESSION object"; SESSION object";
reference "RFC3209"; reference
"RFC3209";
} }
leaf tunnel-id { leaf tunnel-id {
type leafref { type leafref {
path "/te:te/te:lsps-state/te:lsp/"+ path "/te:te/te:lsps/te:lsp/"
"te:tunnel-id"; + "te:tunnel-id";
} }
description description
"Tunnel identifier used in the SESSION "Tunnel identifier used in the SESSION
that remains constant over the life that remains constant over the life
of the tunnel."; of the tunnel.";
reference "RFC3209"; reference
"RFC3209";
} }
leaf lsp-id { leaf lsp-id {
type leafref { type leafref {
path "/te:te/te:lsps-state/te:lsp/"+ path "/te:te/te:lsps/te:lsp/"
"te:lsp-id"; + "te:lsp-id";
} }
description description
"Identifier used in the SENDER_TEMPLATE "Identifier used in the SENDER_TEMPLATE
and the FILTER_SPEC that can be changed and the FILTER_SPEC that can be changed
to allow a sender to share resources with to allow a sender to share resources with
itself."; itself.";
reference
reference "RFC3209"; "RFC3209";
} }
leaf extended-tunnel-id { leaf extended-tunnel-id {
type leafref { type leafref {
path "/te:te/te:lsps-state/te:lsp/"+ path "/te:te/te:lsps/te:lsp/"
"te:extended-tunnel-id"; + "te:extended-tunnel-id";
} }
description description
"Extended Tunnel ID of the LSP."; "Extended Tunnel ID of the LSP.";
reference "RFC3209"; reference
"RFC3209";
} }
leaf type { leaf type {
type leafref { type leafref {
path "/te:te/te:lsps-state/te:lsp/"+ path "/te:te/te:lsps/te:lsp/"
"te:type"; + "te:type";
} }
description "LSP type P2P or P2MP"; description
"LSP type P2P or P2MP";
} }
} }
} }
} }
grouping bandwidth-mpls-constraints { grouping bandwidth-mpls-constraints {
description "Bandwidth constraints."; description
"Bandwidth constraints.";
container bandwidth-mpls-constraints { container bandwidth-mpls-constraints {
description description
"Holds the bandwidth constraints properties"; "Holds the bandwidth constraints properties";
leaf maximum-reservable { leaf maximum-reservable {
type te-packet-types:bandwidth-kbps; type te-packet-types:bandwidth-kbps;
description description
"The maximum reservable bandwidth on the "The maximum reservable bandwidth on the
interface in kbps"; interface in kbps";
} }
leaf-list bc-value { leaf-list bc-value {
type uint32 { type uint32 {
range "0..4294967295"; range "0..4294967295";
} }
max-elements 8; max-elements 8;
description description
"The bandwidth constraint type"; "The bandwidth constraint type";
} }
} }
skipping to change at page 36, line 23 skipping to change at page 30, line 49
case absolutes { case absolutes {
container abs-values { container abs-values {
uses bandwidth-mpls-constraints; uses bandwidth-mpls-constraints;
description description
"Absolute values"; "Absolute values";
} }
} }
} }
} }
grouping bandwidth-mpls-reservable-config { grouping bandwidth-mpls-reservable {
description description
"Interface bandwidth reservable configuration grouping"; "Interface bandwidth reservable configuration grouping";
choice bandwidth-value {
description "Reservable bandwidth configuration choice"; container bandwidth-mpls-reservable {
case absolute { description
leaf absolute-value { "Interface bandwidth reservable container";
type te-packet-types:bandwidth-kbps; choice bandwidth-value {
description "Absolute value of the bandwidth"; description
} "Reservable bandwidth configuration choice";
} case absolute {
case percentage { leaf absolute-value {
leaf percent-value { type te-packet-types:bandwidth-kbps;
type uint32 { description
range "0..4294967295"; "Absolute value of the bandwidth";
} }
description "Percentage reservable bandwidth";
} }
description case percentage {
"The maximum reservable bandwidth on the leaf percent-value {
interface"; type uint32 {
} range "0..4294967295";
} }
choice bc-model-type { description
description "Percentage reservable bandwidth";
"Reservable bandwidth percentage capacity }
values.";
case bc-model-rdm {
container bc-model-rdm {
description description
"Russian Doll Model Bandwidth Constraints."; "The maximum reservable bandwidth on the
uses bandwidth-mpls-constraints; interface";
} }
} }
case bc-model-mam { choice bc-model-type {
container bc-model-mam { description
uses bandwidth-mpls-constraints; "Reservable bandwidth percentage capacity
description values.";
"Maximum Allocation Model Bandwidth case bc-model-rdm {
Constraints."; container bc-model-rdm {
description
"Russian Doll Model Bandwidth Constraints.";
uses bandwidth-mpls-constraints;
}
} }
} case bc-model-mam {
case bc-model-mar { container bc-model-mam {
container bc-model-mar { uses bandwidth-mpls-constraints;
uses bandwidth-mpls-constraints; description
description "Maximum Allocation Model Bandwidth
"Maximum Allocation with Reservation Model Constraints.";
Bandwidth Constraints."; }
}
case bc-model-mar {
container bc-model-mar {
uses bandwidth-mpls-constraints;
description
"Maximum Allocation with Reservation Model
Bandwidth Constraints.";
}
} }
} }
} }
} }
grouping bandwidth-mpls-reservable {
description
"Packet reservable bandwidth";
container bandwidth-mpls-reservable {
description
"Interface bandwidth reservable container";
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 {
grouping rsvp-te-frr-auto-tunnel-backup {
description description
"Auto-tunnel backup configuration grouping"; "Auto-tunnel backup configuration grouping";
leaf auto-backup-protection { leaf auto-backup-protection {
type identityref { type identityref {
base te-packet-types:backup-protection-type; base te-packet-types:backup-protection-type;
} }
default default "te-packet-types:backup-protection-node-link";
te-packet-types:backup-protection-node-link;
description description
"Describes whether the backup should offer "Describes whether the backup should offer
protection against link, node, or either"; protection against link, node, or either";
} }
leaf auto-backup-path-computation { leaf auto-backup-path-computation {
type identityref { type identityref {
base base te-types:path-computation-srlg-type;
te-types:path-computation-srlg-type;
} }
description description
"FRR backup computation type"; "FRR backup computation type";
} }
} }
grouping rsvp-te-frr-backups-config { grouping rsvp-te-frr-backups {
description description
"Top level container for RSVP-TE FRR backup parameters"; "Top level container for RSVP-TE FRR backup parameters";
choice type { container rsvp-te-frr-backups {
description description
"FRR backup tunnel type"; "RSVP-TE facility backup properties";
case static-tunnel { choice type {
container static-backups { description
description "List of static backups"; "FRR backup tunnel type";
list static-backup { case static-tunnel {
key "backup-tunnel-name"; container static-backups {
description description
"List of static backup tunnels that "List of static backups";
protect the RSVP-TE interface."; list static-backup {
leaf backup-tunnel-name { key "backup-tunnel-name";
type leafref { description
path "/te:te/te:tunnels/te:tunnel/te:name"; "List of static backup tunnels that
protect the RSVP-TE interface.";
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 {
container auto-tunnel-backups {
description
"Auto-tunnel choice";
uses rsvp-te-frr-auto-tunnel-backup;
} }
} }
} }
}
case auto-tunnel {
container auto-tunnel-backups {
description "Auto-tunnel choice";
uses rsvp-te-frr-auto-tunnel-backup-config;
}
}
}
}
grouping rsvp-te-frr-backups {
description
"RSVP-TE facility backup grouping";
container rsvp-te-frr-backups {
description
"RSVP-TE facility backup properties";
uses rsvp-te-frr-backups-config;
} }
} }
grouping lsp-backup-info-state { grouping lsp-backup-info-state {
description "LSP backup information grouping"; description
"LSP backup information grouping";
leaf backup-tunnel-name { leaf backup-tunnel-name {
type string; type string;
description description
"If an LSP has an FRR backup LSP that can protect it, "If an LSP has an FRR backup LSP that can protect it,
this field identifies the tunnel name of the backup LSP. this field identifies the tunnel name of the backup LSP.
Otherwise, this field is empty."; Otherwise, this field is empty.";
} }
leaf backup-frr-on { leaf backup-frr-on {
type uint8; type uint8;
description description
"Whether currently this backup is carrying traffic"; "Whether currently this backup is carrying traffic";
} }
leaf backup-protected-lsp-num { leaf backup-protected-lsp-num {
type uint32; type uint32;
description description
"Number of LSPs protected by this backup"; "Number of LSPs protected by this backup";
} }
} }
grouping lsp-backup-info { 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";
uses lsp-backup-info-state; uses lsp-backup-info-state;
} }
} }
grouping fast-reroute-local-revertive-config {
description "RSVP-TE FRR local revertive grouping";
leaf rsvp-frr-local-revert-delay {
type uint32;
description
"Time to wait after primary link is restored
before node attempts local revertive
procedures.";
}
}
/*** End of RSVP-TE FRR backup information ***/ /*** End of RSVP-TE FRR backup information ***/
grouping fast-reroute-local-revertive {
description
"Top level grouping for globals properties";
container fast-reroute-local-revertive {
description "RSVP-TE FRR local revertive container";
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; leaf rsvp-frr-local-revert-delay {
type uint32;
description
"Time to wait after primary link is restored
before node attempts local revertive
procedures.";
}
} }
/* Linkage to the base RSVP all interfaces */ /* Linkage to the base RSVP all interfaces */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" { + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" {
description description
"Augmentations for RSVP-TE MPLS all interfaces properties"; "Augmentations for RSVP-TE MPLS all interfaces properties";
/* To be added */ /* To be added */
} }
/* Linkage to per RSVP interface */ /* Linkage to per RSVP interface */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/"
"rsvp:interface" { + "rsvp:interface" {
description description
"Augmentations for RSVP-TE MPLS per interface properties"; "Augmentations for RSVP-TE MPLS per interface properties";
/* To be added */ /* To be added */
} }
/* add augmentation for sessions neighbors */ /* add augmentation for sessions neighbors */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + "rt:control-plane-protocol/rsvp:rsvp/"
+ "rsvp:sessions" { + "rsvp:sessions" {
description description
"Augmentation for RSVP-TE MPLS sessions"; "Augmentation for RSVP-TE MPLS sessions";
/* To be added */ /* To be added */
} }
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" { augment "/te:te/te:tunnels/te:tunnel" {
description description
"Augmentations for RSVP-TE MPLS TE tunnel properties"; "Augmentations for RSVP-TE MPLS TE tunnel properties";
uses tunnel-properties-mpls-config; uses tunnel-properties-mpls;
} }
augment "/te:te/te:lsps-state/te:lsp" { augment "/te:te/te:lsps/te:lsp" {
when "/te:te/te:lsps-state/te:lsp" + when "/te:te/te:lsps/te:lsp"
"/te:signaling-type = 'te-types:path-setup-rsvp'" { + "/te:signaling-type = 'te-types:path-setup-rsvp'" {
description description
"When the signaling protocol is RSVP-TE "; "When the signaling protocol is RSVP-TE ";
} }
description description
"RSP-TE MPLS LSP state properties"; "RSP-TE MPLS LSP state properties";
uses lsp-properties-mpls; uses lsp-properties-mpls;
uses lsp-backup-info; uses lsp-backup-info;
} }
augment "/te:te/te:tunnels/te:tunnel/te:primary-paths" + augment "/te:te/te:tunnels/te:tunnel/te:primary-paths"
"/te:primary-path/te:lsps/te:lsp" { + "/te:primary-path/te:lsps/te:lsp" {
when "/te:te/te:tunnels/te:tunnel" + when "/te:te/te:tunnels/te:tunnel"
"/te:secondary-paths/te:secondary-path/" + + "/te:secondary-paths/te:secondary-path/"
"te:signaling-type = 'te-types:path-setup-rsvp'" { + "te:signaling-type = 'te-types: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 lsp-backup-info; uses lsp-backup-info;
} }
augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths"
augment "/te:te/te:tunnels/te:tunnel/te:secondary-paths" + + "/te:secondary-path/te:lsps/te:lsp" {
"/te:secondary-path/te:lsps/te:lsp" { when "/te:te/te:tunnels/te:tunnel"
when "/te:te/te:tunnels/te:tunnel" + + "/te:secondary-paths/te:secondary-path/"
"/te:secondary-paths/te:secondary-path/" + + "te:signaling-type = 'te-types:path-setup-rsvp'" {
"te:signaling-type = 'te-types: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 lsp-backup-info; 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";
skipping to change at page 42, line 30 skipping to change at page 36, line 41
Figure 5: RSVP TE MPLS YANG module Figure 5: RSVP TE MPLS YANG module
3. IANA Considerations 3. IANA Considerations
This document registers the following URIs in the IETF XML registry This document registers the following URIs in the IETF XML registry
[RFC3688]. Following the format in [RFC3688], the following [RFC3688]. Following the format in [RFC3688], the following
registration is requested to be made. registration is requested to be made.
URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-te URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-te
Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace. XML: N/A, the requested URI is an XML namespace.
URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-te-mpls URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-te-mpls
Registrant Contact: The IESG.
XML: N/A, the requested URI is an XML namespace. XML: N/A, the requested URI is an XML namespace.
This document registers two YANG modules in the YANG Module Names This document registers two YANG modules in the YANG Module Names
registry [RFC6020]. registry [RFC6020].
name: ietf-rsvp name: ietf-rsvp-te
namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp-te namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp-te
prefix: ietf-rsvp prefix: rsvp-te
reference: RFCXXXX reference: RFCXXXX
name: ietf-rsvp-te name: 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: ietf-rsvp-te prefix: rsvp-te-mpls
reference: RFCXXXX reference: RFCXXXX
4. Security Considerations 4. Security Considerations
The YANG module defined in this memo is designed to be accessed via The YANG module defined in this memo is designed to be accessed via
the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the
secure transport layer and the mandatory-to-implement secure secure transport layer and the mandatory-to-implement secure
transport is SSH [RFC6242]. The NETCONF access control model transport is SSH [RFC6242]. The NETCONF access control model
[RFC8341] provides means to restrict access for particular NETCONF [RFC8341] provides means to restrict access for particular NETCONF
users to a pre-configured subset of all available NETCONF protocol users to a pre-configured subset of all available NETCONF protocol
skipping to change at page 44, line 26 skipping to change at page 38, line 34
Email: Bin_Wen@cable.comcast.com Email: Bin_Wen@cable.comcast.com
7. References 7. References
7.1. Normative References 7.1. Normative References
[I-D.ietf-teas-yang-rsvp] [I-D.ietf-teas-yang-rsvp]
Beeram, V., Saad, T., Gandhi, R., Liu, X., and I. Bryskin, Beeram, V., Saad, T., Gandhi, R., Liu, X., and I. Bryskin,
"A YANG Data Model for Resource Reservation Protocol "A YANG Data Model for Resource Reservation Protocol
(RSVP)", draft-ietf-teas-yang-rsvp-12 (work in progress), (RSVP)", draft-ietf-teas-yang-rsvp-15 (work in progress),
January 2020. September 2020.
[I-D.ietf-teas-yang-te] [I-D.ietf-teas-yang-te]
Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin, Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin,
"A YANG Data Model for Traffic Engineering Tunnels and "A YANG Data Model for Traffic Engineering Tunnels, Label
Interfaces", draft-ietf-teas-yang-te-22 (work in Switched Paths and Interfaces", draft-ietf-teas-yang-te-25
progress), November 2019. (work in progress), July 2020.
[I-D.ietf-teas-yang-te-types] [I-D.ietf-teas-yang-te-types]
Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin, Saad, T., Gandhi, R., Liu, X., Beeram, V., and I. Bryskin,
"Traffic Engineering Common YANG Types", draft-ietf-teas- "Traffic Engineering Common YANG Types", draft-ietf-teas-
yang-te-types-13 (work in progress), November 2019. yang-te-types-13 (work in progress), November 2019.
[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, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<https://www.rfc-editor.org/info/rfc2119>. <https://www.rfc-editor.org/info/rfc2119>.
skipping to change at page 46, line 33 skipping to change at page 40, line 42
TE) Session Attribute Object", RFC 4859, TE) Session Attribute Object", RFC 4859,
DOI 10.17487/RFC4859, April 2007, DOI 10.17487/RFC4859, April 2007,
<https://www.rfc-editor.org/info/rfc4859>. <https://www.rfc-editor.org/info/rfc4859>.
[RFC4920] Farrel, A., Ed., Satyanarayana, A., Iwata, A., Fujita, N., [RFC4920] Farrel, A., Ed., Satyanarayana, A., Iwata, A., Fujita, N.,
and G. Ash, "Crankback Signaling Extensions for MPLS and and G. Ash, "Crankback Signaling Extensions for MPLS and
GMPLS RSVP-TE", RFC 4920, DOI 10.17487/RFC4920, July 2007, GMPLS RSVP-TE", RFC 4920, DOI 10.17487/RFC4920, July 2007,
<https://www.rfc-editor.org/info/rfc4920>. <https://www.rfc-editor.org/info/rfc4920>.
[RFC5420] Farrel, A., Ed., Papadimitriou, D., Vasseur, JP., and A. [RFC5420] Farrel, A., Ed., Papadimitriou, D., Vasseur, JP., and A.
Ayyangarps, "Encoding of Attributes for MPLS LSP Ayyangar, "Encoding of Attributes for MPLS LSP
Establishment Using Resource Reservation Protocol Traffic Establishment Using Resource Reservation Protocol Traffic
Engineering (RSVP-TE)", RFC 5420, DOI 10.17487/RFC5420, Engineering (RSVP-TE)", RFC 5420, DOI 10.17487/RFC5420,
February 2009, <https://www.rfc-editor.org/info/rfc5420>. February 2009, <https://www.rfc-editor.org/info/rfc5420>.
[RFC7570] Margaria, C., Ed., Martinelli, G., Balls, S., and B. [RFC7570] Margaria, C., Ed., Martinelli, G., Balls, S., and B.
Wright, "Label Switched Path (LSP) Attribute in the Wright, "Label Switched Path (LSP) Attribute in the
Explicit Route Object (ERO)", RFC 7570, Explicit Route Object (ERO)", RFC 7570,
DOI 10.17487/RFC7570, July 2015, DOI 10.17487/RFC7570, July 2015,
<https://www.rfc-editor.org/info/rfc7570>. <https://www.rfc-editor.org/info/rfc7570>.
 End of changes. 224 change blocks. 
997 lines changed or deleted 724 lines changed or added

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