draft-ietf-teas-yang-rsvp-te-04.txt   draft-ietf-teas-yang-rsvp-te-05.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 Intended status: Standards Track T. Saad
Expires: April 23, 2019 R. Gandhi Expires: August 22, 2019 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
October 20, 2018 February 18, 2019
A YANG Data Model for RSVP-TE A YANG Data Model for RSVP-TE Protocol
draft-ietf-teas-yang-rsvp-te-04 draft-ietf-teas-yang-rsvp-te-05
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 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 April 23, 2019. This Internet-Draft will expire on August 22, 2019.
Copyright Notice Copyright Notice
Copyright (c) 2018 IETF Trust and the persons identified as the Copyright (c) 2019 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 31 skipping to change at page 2, line 31
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 . . . . . . . . . . . 13 2.2.2. RSVP-TE MPLS Model Tree Diagram . . . . . . . . . . . 13
2.3. YANG Modules . . . . . . . . . . . . . . . . . . . . . . 16 2.3. YANG Modules . . . . . . . . . . . . . . . . . . . . . . 15
2.3.1. RSVP-TE YANG Module . . . . . . . . . . . . . . . . . 16 2.3.1. RSVP-TE YANG Module . . . . . . . . . . . . . . . . . 15
2.3.2. RSVP-TE MPLS YANG Module . . . . . . . . . . . . . . 27 2.3.2. RSVP-TE MPLS YANG Module . . . . . . . . . . . . . . 26
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 40 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 38
4. Security Considerations . . . . . . . . . . . . . . . . . . . 40 4. Security Considerations . . . . . . . . . . . . . . . . . . . 38
5. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 41 5. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 39
6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 41 6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 39
7. Normative References . . . . . . . . . . . . . . . . . . . . 42 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 40
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 44 7.1. Normative References . . . . . . . . . . . . . . . . . . 40
7.2. Informative References . . . . . . . . . . . . . . . . . 42
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 42
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 4, line 38 skipping to change at page 5, line 5
defined in this document. defined in this document.
2.1. Module Relationship 2.1. Module Relationship
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 MPLS parameters for RSVP-TE applicable to all technologies, and a MPLS
technology specific RSVP-TE module that holds parameters specific to technology specific RSVP-TE module that holds parameters specific to
MPLS technology. MPLS technology.
The RSVP-TE generic YANG module "ietf-rsvp-te" imports the following
modules:
o ietf-rsvp defined in [I-D.ietf-teas-yang-rsvp]
o ietf-routing-types defined in [RFC8294]
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]
The RSVP-TE MPLS YANG module "ietf-te-device" imports the following
module(s):
o ietf-rsvp defined in [I-D.ietf-teas-yang-rsvp]
o ietf-routing-types defined in [RFC8294]
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]
The relationship between the different modules is shown in Figure 1. The relationship between the different modules is shown in Figure 1.
TE basic +---------+ TE basic +---------+
module | ietf-te | o: augment module | ietf-te | o: augment
+---------+ +---------+
o o
| |
| |
+--------------+ +--------------+
RSVP-TE module | ietf-rsvp-te |o . . . RSVP-TE module | ietf-rsvp-te |o . . .
skipping to change at page 5, line 47 skipping to change at page 5, line 42
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 augment /rt:routing/rt:control-plane-protocols
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ /rt:control-plane-protocol/rsvp:rsvp/rsvp:globals:
rsvp:rsvp/rsvp:globals:
+--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:control-plane-protocol/rsvp:rsvp/rsvp:interfaces:
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
rsvp:rsvp/rsvp:interfaces:
+--rw rsvp-te-interface-attributes +--rw rsvp-te-interface-attributes
+--ro state +--ro state
augment augment /rt:routing/rt:control-plane-protocols
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces
rsvp:rsvp/rsvp:interfaces/rsvp:interface: /rsvp:interface:
+--rw rsvp-te-interface-attributes +--rw rsvp-te-interface-attributes
+--ro state +--ro state
augment augment /rt:routing/rt:control-plane-protocols
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ /rt:control-plane-protocol/rsvp:rsvp/rsvp:globals
rsvp:rsvp/rsvp:globals/rsvp:sessions/rsvp:session/rsvp:state/ /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
augment augment /rt:routing/rt:control-plane-protocols
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/ /rt:control-plane-protocol/rsvp:rsvp/rsvp:globals
rsvp:rsvp/rsvp:globals/rsvp:sessions/rsvp:session/rsvp:state/ /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:routing/rt:control-plane-protocols/rt:control-plane-protocol/ /rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors:
rsvp:rsvp/rsvp:neighbors:
augment /te:te/te:tunnels/te:tunnel: augment /te:te/te:tunnels/te:tunnel:
+--rw lsp-signaled-name? string +--rw lsp-signaled-name? string
+--rw local-recording-desired? boolean +--rw session-attribute* identityref
+--rw se-style-desired? boolean +--rw lsp-attribute* identityref
+--rw path-reevaluation-request? boolean +--rw retry-timer? uint16
+--rw soft-preemption-desired? boolean
+--rw lsp-rerouting? enumeration
+--rw lsp-integrity-required? boolean
+--rw lsp-contiguous? boolean
+--rw lsp-stitching-desired? boolean
+--rw lsp-preplanned? boolean
+--rw lsp-oob-mapping? boolean
+--rw retry-timer? uint16
augment /te:te/te:tunnels/te:tunnel/te:state:
+--ro lsp-signaled-name? string
+--ro local-recording-desired? boolean
+--ro se-style-desired? boolean
+--ro path-reevaluation-request? boolean
+--ro soft-preemption-desired? boolean
+--ro lsp-rerouting? enumeration
+--ro lsp-integrity-required? boolean
+--ro lsp-contiguous? boolean
+--ro lsp-stitching-desired? boolean
+--ro lsp-preplanned? boolean
+--ro lsp-oob-mapping? boolean
+--ro retry-timer? uint16
augment /te:te/te:lsps-state/te:lsp: augment /te:te/te:lsps-state/te:lsp:
+--ro associated-rsvp-session? -> +--ro associated-rsvp-session? leafref
/rt:routing/control-plane-protocols/control-plane-protocol/
rsvp:rsvp/globals/sessions/session/local-index
+--ro lsp-signaled-name? string +--ro lsp-signaled-name? string
+--ro local-recording-desired? boolean +--ro session-attribute* identityref
+--ro se-style-desired? boolean +--ro lsp-attribute* identityref
+--ro path-reevaluation-request? boolean
+--ro soft-preemption-desired? boolean
+--ro lsp-rerouting? enumeration
+--ro lsp-integrity-required? boolean
+--ro lsp-contiguous? boolean
+--ro lsp-stitching-desired? boolean
+--ro lsp-preplanned? 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 -> ../state/index | | +--ro index uint32
| | +--ro state | | +--ro (type)?
| | +--ro index? uint32 | | +--:(numbered-node-hop)
| | +--ro (type)? | | | +--ro numbered-node-hop
| | +--:(numbered) | | | +--ro node-id te-node-id
| | | +--ro numbered-hop | | | +--ro hop-type? te-hop-type
| | | +--ro address? te-types:te-tp-id | | +--:(numbered-link-hop)
| | | +--ro hop-type? te-hop-type | | | +--ro numbered-link-hop
| | | +--ro direction? te-link-direction | | | +--ro link-tp-id te-tp-id
| | +--:(as-number) | | | +--ro hop-type? te-hop-type
| | | +--ro as-number-hop | | | +--ro direction? te-link-direction
| | | +--ro as-number? binary | | +--:(unnumbered-link-hop)
| | | +--ro hop-type? te-hop-type | | | +--ro unnumbered-link-hop
| | +--:(unnumbered) | | | +--ro link-tp-id te-tp-id
| | | +--ro unnumbered-hop | | | +--ro node-id te-node-id
| | | +--ro node-id? te-types:te-node-id | | | +--ro hop-type? te-hop-type
| | | +--ro link-tp-id? te-types: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
| | +--:(label) | | | +--ro as-number inet:as-number
| | +--ro label-hop | | | +--ro hop-type? te-hop-type
| | +--ro te-label | | +--:(label)
| | +--ro (technology)? | | +--ro label-hop
| | | +--:(generic) | | +--ro te-label
| | | +--ro generic? | | +--ro (technology)?
rt-types:generalized-label | | | +--:(generic)
| | +--ro direction? te-label-direction | | | +--ro generic? rt-types:generalized-label
| | +--ro direction? te-label-direction
| +--ro outgoing-explicit-route-hop* [index] | +--ro outgoing-explicit-route-hop* [index]
| +--ro index -> ../state/index | +--ro index uint32
| +--ro state | +--ro (type)?
| +--ro index? uint32 | +--:(numbered-node-hop)
| +--ro (type)? | | +--ro numbered-node-hop
| +--:(numbered) | | +--ro node-id te-node-id
| | +--ro numbered-hop | | +--ro hop-type? te-hop-type
| | +--ro address? te-types:te-tp-id | +--:(numbered-link-hop)
| | +--ro hop-type? te-hop-type | | +--ro numbered-link-hop
| | +--ro direction? te-link-direction | | +--ro link-tp-id te-tp-id
| +--:(as-number) | | +--ro hop-type? te-hop-type
| | +--ro as-number-hop | | +--ro direction? te-link-direction
| | +--ro as-number? binary | +--:(unnumbered-link-hop)
| | +--ro hop-type? te-hop-type | | +--ro unnumbered-link-hop
| +--:(unnumbered) | | +--ro link-tp-id te-tp-id
| | +--ro unnumbered-hop | | +--ro node-id te-node-id
| | +--ro node-id? te-types:te-node-id | | +--ro hop-type? te-hop-type
| | +--ro link-tp-id? te-types: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
| +--:(label) | | +--ro as-number inet:as-number
| +--ro label-hop | | +--ro hop-type? te-hop-type
| +--ro te-label | +--:(label)
| +--ro (technology)? | +--ro label-hop
| | +--:(generic) | +--ro te-label
| | +--ro generic? | +--ro (technology)?
rt-types:generalized-label | | +--:(generic)
| +--ro direction? te-label-direction | | +--ro generic? rt-types:generalized-label
| +--ro direction? te-label-direction
+--ro incoming-record-route-subobjects +--ro incoming-record-route-subobjects
| +--ro incoming-record-route-subobject* [index] | +--ro incoming-record-route-subobject* [index]
| +--ro index -> ../state/index | +--ro index uint32
| +--ro state | +--ro (type)?
| +--ro index? uint32 | +--:(numbered-node-hop)
| +--ro (type)? | | +--ro numbered-node-hop
| +--:(numbered) | | +--ro node-id te-node-id
| | +--ro address? te-types:te-tp-id | | +--ro flags* path-attribute-flags
| | +--ro ip-flags? binary | +--:(numbered-link-hop)
| +--:(unnumbered) | | +--ro numbered-link-hop
| | +--ro node-id? te-types:te-node-id | | +--ro link-tp-id te-tp-id
| | +--ro link-tp-id? te-types:te-tp-id | | +--ro flags* path-attribute-flags
| +--:(label) | +--:(unnumbered-link-hop)
| +--ro value? rt-types:generalized-label | | +--ro unnumbered-link-hop
| +--ro label-flags? binary | | +--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-subobjects
+--ro outgoing-record-route-subobject* [index] +--ro outgoing-record-route-subobject* [index]
+--ro index -> ../state/index +--ro index uint32
+--ro state +--ro (type)?
+--ro index? uint32 +--:(numbered-node-hop)
+--ro (type)? | +--ro numbered-node-hop
+--:(numbered) | +--ro node-id te-node-id
| +--ro address? te-types:te-tp-id | +--ro flags* path-attribute-flags
| +--ro ip-flags? binary +--:(numbered-link-hop)
+--:(unnumbered) | +--ro numbered-link-hop
| +--ro node-id? te-types:te-node-id | +--ro link-tp-id te-tp-id
| +--ro link-tp-id? te-types:te-tp-id | +--ro flags* path-attribute-flags
+--:(label) +--:(unnumbered-link-hop)
+--ro value? rt-types:generalized-label | +--ro unnumbered-link-hop
+--ro label-flags? binary | +--ro link-tp-id te-tp-id
augment | +--ro node-id? te-node-id
/te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/te:p2p-primary-path/ | +--ro flags* path-attribute-flags
te:state/te:lsps/te:lsp: +--:(label)
+--ro associated-rsvp-session? -> +--ro label-hop
/rt:routing/control-plane-protocols/control-plane-protocol/ +--ro te-label
rsvp:rsvp/globals/sessions/session/local-index | +--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:p2p-primary-paths
/te:p2p-primary-path/te:lsps/te:lsp:
+--ro associated-rsvp-session? leafref
+--ro lsp-signaled-name? string +--ro lsp-signaled-name? string
+--ro local-recording-desired? boolean +--ro session-attribute* identityref
+--ro se-style-desired? boolean +--ro lsp-attribute* identityref
+--ro path-reevaluation-request? boolean
+--ro soft-preemption-desired? boolean
+--ro lsp-rerouting? enumeration
+--ro lsp-integrity-required? boolean
+--ro lsp-contiguous? boolean
+--ro lsp-stitching-desired? boolean
+--ro lsp-preplanned? 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 -> ../state/index | | +--ro index uint32
| | +--ro state | | +--ro (type)?
| | +--ro index? uint32 | | +--:(numbered-node-hop)
| | +--ro (type)? | | | +--ro numbered-node-hop
| | +--:(numbered) | | | +--ro node-id te-node-id
| | | +--ro numbered-hop | | | +--ro hop-type? te-hop-type
| | | +--ro address? te-types:te-tp-id | | +--:(numbered-link-hop)
| | | +--ro hop-type? te-hop-type | | | +--ro numbered-link-hop
| | | +--ro direction? te-link-direction | | | +--ro link-tp-id te-tp-id
| | +--:(as-number) | | | +--ro hop-type? te-hop-type
| | | +--ro as-number-hop | | | +--ro direction? te-link-direction
| | | +--ro as-number? binary | | +--:(unnumbered-link-hop)
| | | +--ro hop-type? te-hop-type | | | +--ro unnumbered-link-hop
| | +--:(unnumbered) | | | +--ro link-tp-id te-tp-id
| | | +--ro unnumbered-hop | | | +--ro node-id te-node-id
| | | +--ro node-id? te-types:te-node-id | | | +--ro hop-type? te-hop-type
| | | +--ro link-tp-id? te-types: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
| | +--:(label) | | | +--ro as-number inet:as-number
| | +--ro label-hop | | | +--ro hop-type? te-hop-type
| | +--ro te-label | | +--:(label)
| | +--ro (technology)? | | +--ro label-hop
| | | +--:(generic) | | +--ro te-label
| | | +--ro generic? | | +--ro (technology)?
rt-types:generalized-label | | | +--:(generic)
| | +--ro direction? te-label-direction | | | +--ro generic? rt-types:generalized-label
| | +--ro direction? te-label-direction
| +--ro outgoing-explicit-route-hop* [index] | +--ro outgoing-explicit-route-hop* [index]
| +--ro index -> ../state/index | +--ro index uint32
| +--ro state | +--ro (type)?
| +--ro index? uint32 | +--:(numbered-node-hop)
| +--ro (type)? | | +--ro numbered-node-hop
| +--:(numbered) | | +--ro node-id te-node-id
| | +--ro numbered-hop | | +--ro hop-type? te-hop-type
| | +--ro address? te-types:te-tp-id | +--:(numbered-link-hop)
| | +--ro hop-type? te-hop-type | | +--ro numbered-link-hop
| | +--ro direction? te-link-direction | | +--ro link-tp-id te-tp-id
| +--:(as-number) | | +--ro hop-type? te-hop-type
| | +--ro as-number-hop | | +--ro direction? te-link-direction
| | +--ro as-number? binary | +--:(unnumbered-link-hop)
| | +--ro hop-type? te-hop-type | | +--ro unnumbered-link-hop
| +--:(unnumbered) | | +--ro link-tp-id te-tp-id
| | +--ro unnumbered-hop | | +--ro node-id te-node-id
| | +--ro node-id? te-types:te-node-id | | +--ro hop-type? te-hop-type
| | +--ro link-tp-id? te-types: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
| +--:(label) | | +--ro as-number inet:as-number
| +--ro label-hop | | +--ro hop-type? te-hop-type
| +--ro te-label | +--:(label)
| +--ro (technology)? | +--ro label-hop
| | +--:(generic) | +--ro te-label
| | +--ro generic? | +--ro (technology)?
rt-types:generalized-label | | +--:(generic)
| +--ro direction? te-label-direction | | +--ro generic? rt-types:generalized-label
| +--ro direction? te-label-direction
+--ro incoming-record-route-subobjects +--ro incoming-record-route-subobjects
| +--ro incoming-record-route-subobject* [index] | +--ro incoming-record-route-subobject* [index]
| +--ro index -> ../state/index | +--ro index uint32
| +--ro state | +--ro (type)?
| +--ro index? uint32 | +--:(numbered-node-hop)
| +--ro (type)? | | +--ro numbered-node-hop
| +--:(numbered) | | +--ro node-id te-node-id
| | +--ro address? te-types:te-tp-id | | +--ro flags* path-attribute-flags
| | +--ro ip-flags? binary | +--:(numbered-link-hop)
| +--:(unnumbered) | | +--ro numbered-link-hop
| | +--ro node-id? te-types:te-node-id | | +--ro link-tp-id te-tp-id
| | +--ro link-tp-id? te-types:te-tp-id | | +--ro flags* path-attribute-flags
| +--:(label) | +--:(unnumbered-link-hop)
| +--ro value? rt-types:generalized-label | | +--ro unnumbered-link-hop
| +--ro label-flags? binary | | +--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-subobjects
+--ro outgoing-record-route-subobject* [index] +--ro outgoing-record-route-subobject* [index]
+--ro index -> ../state/index +--ro index uint32
+--ro state +--ro (type)?
+--ro index? uint32 +--:(numbered-node-hop)
+--ro (type)? | +--ro numbered-node-hop
+--:(numbered) | +--ro node-id te-node-id
| +--ro address? te-types:te-tp-id | +--ro flags* path-attribute-flags
| +--ro ip-flags? binary +--:(numbered-link-hop)
+--:(unnumbered) | +--ro numbered-link-hop
| +--ro node-id? te-types:te-node-id | +--ro link-tp-id te-tp-id
| +--ro link-tp-id? te-types:te-tp-id | +--ro flags* path-attribute-flags
+--:(label) +--:(unnumbered-link-hop)
+--ro value? rt-types:generalized-label | +--ro unnumbered-link-hop
+--ro label-flags? binary | +--ro link-tp-id te-tp-id
augment | +--ro node-id? te-node-id
/te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ | +--ro flags* path-attribute-flags
te:p2p-secondary-path/te:state/te:lsps/te:lsp: +--:(label)
+--ro associated-rsvp-session? -> +--ro label-hop
/rt:routing/control-plane-protocols/control-plane-protocol/ +--ro te-label
rsvp:rsvp/globals/sessions/session/local-index | +--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:p2p-secondary-paths
/te:p2p-secondary-path/te:lsps/te:lsp:
+--ro associated-rsvp-session? leafref
+--ro lsp-signaled-name? string +--ro lsp-signaled-name? string
+--ro local-recording-desired? boolean +--ro session-attribute* identityref
+--ro se-style-desired? boolean +--ro lsp-attribute* identityref
+--ro path-reevaluation-request? boolean
+--ro soft-preemption-desired? boolean
+--ro lsp-rerouting? enumeration
+--ro lsp-integrity-required? boolean
+--ro lsp-contiguous? boolean
+--ro lsp-stitching-desired? boolean
+--ro lsp-preplanned? 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 -> ../state/index | | +--ro index uint32
| | +--ro state | | +--ro (type)?
| | +--ro index? uint32 | | +--:(numbered-node-hop)
| | +--ro (type)? | | | +--ro numbered-node-hop
| | +--:(numbered) | | | +--ro node-id te-node-id
| | | +--ro numbered-hop | | | +--ro hop-type? te-hop-type
| | | +--ro address? te-types:te-tp-id | | +--:(numbered-link-hop)
| | | +--ro hop-type? te-hop-type | | | +--ro numbered-link-hop
| | | +--ro direction? te-link-direction | | | +--ro link-tp-id te-tp-id
| | +--:(as-number) | | | +--ro hop-type? te-hop-type
| | | +--ro as-number-hop | | | +--ro direction? te-link-direction
| | | +--ro as-number? binary | | +--:(unnumbered-link-hop)
| | | +--ro hop-type? te-hop-type | | | +--ro unnumbered-link-hop
| | +--:(unnumbered) | | | +--ro link-tp-id te-tp-id
| | | +--ro unnumbered-hop | | | +--ro node-id te-node-id
| | | +--ro node-id? te-types:te-node-id | | | +--ro hop-type? te-hop-type
| | | +--ro link-tp-id? te-types: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
| | +--:(label) | | | +--ro as-number inet:as-number
| | +--ro label-hop | | | +--ro hop-type? te-hop-type
| | +--ro te-label | | +--:(label)
| | +--ro (technology)? | | +--ro label-hop
| | | +--:(generic) | | +--ro te-label
| | | +--ro generic? | | +--ro (technology)?
rt-types:generalized-label | | | +--:(generic)
| | +--ro direction? te-label-direction | | | +--ro generic? rt-types:generalized-label
| | +--ro direction? te-label-direction
| +--ro outgoing-explicit-route-hop* [index] | +--ro outgoing-explicit-route-hop* [index]
| +--ro index -> ../state/index | +--ro index uint32
| +--ro state | +--ro (type)?
| +--ro index? uint32 | +--:(numbered-node-hop)
| +--ro (type)? | | +--ro numbered-node-hop
| +--:(numbered) | | +--ro node-id te-node-id
| | +--ro numbered-hop | | +--ro hop-type? te-hop-type
| | +--ro address? te-types:te-tp-id | +--:(numbered-link-hop)
| | +--ro hop-type? te-hop-type | | +--ro numbered-link-hop
| | +--ro direction? te-link-direction | | +--ro link-tp-id te-tp-id
| +--:(as-number) | | +--ro hop-type? te-hop-type
| | +--ro as-number-hop | | +--ro direction? te-link-direction
| | +--ro as-number? binary | +--:(unnumbered-link-hop)
| | +--ro hop-type? te-hop-type | | +--ro unnumbered-link-hop
| +--:(unnumbered) | | +--ro link-tp-id te-tp-id
| | +--ro unnumbered-hop | | +--ro node-id te-node-id
| | +--ro node-id? te-types:te-node-id | | +--ro hop-type? te-hop-type
| | +--ro link-tp-id? te-types: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
| +--:(label) | | +--ro as-number inet:as-number
| +--ro label-hop | | +--ro hop-type? te-hop-type
| +--ro te-label | +--:(label)
| +--ro (technology)? | +--ro label-hop
| | +--:(generic) | +--ro te-label
| | +--ro generic? | +--ro (technology)?
rt-types:generalized-label | | +--:(generic)
| +--ro direction? te-label-direction | | +--ro generic? rt-types:generalized-label
| +--ro direction? te-label-direction
+--ro incoming-record-route-subobjects +--ro incoming-record-route-subobjects
| +--ro incoming-record-route-subobject* [index] | +--ro incoming-record-route-subobject* [index]
| +--ro index -> ../state/index | +--ro index uint32
| +--ro state | +--ro (type)?
| +--ro index? uint32 | +--:(numbered-node-hop)
| +--ro (type)? | | +--ro numbered-node-hop
| +--:(numbered) | | +--ro node-id te-node-id
| | +--ro address? te-types:te-tp-id | | +--ro flags* path-attribute-flags
| | +--ro ip-flags? binary | +--:(numbered-link-hop)
| +--:(unnumbered) | | +--ro numbered-link-hop
| | +--ro node-id? te-types:te-node-id | | +--ro link-tp-id te-tp-id
| | +--ro link-tp-id? te-types:te-tp-id | | +--ro flags* path-attribute-flags
| +--:(label) | +--:(unnumbered-link-hop)
| +--ro value? rt-types:generalized-label | | +--ro unnumbered-link-hop
| +--ro label-flags? binary | | +--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-subobjects
+--ro outgoing-record-route-subobject* [index] +--ro outgoing-record-route-subobject* [index]
+--ro index -> ../state/index +--ro index uint32
+--ro state +--ro (type)?
+--ro index? uint32 +--:(numbered-node-hop)
+--ro (type)? | +--ro numbered-node-hop
+--:(numbered) | +--ro node-id te-node-id
| +--ro address? te-types:te-tp-id | +--ro flags* path-attribute-flags
| +--ro ip-flags? binary +--:(numbered-link-hop)
+--:(unnumbered) | +--ro numbered-link-hop
| +--ro node-id? te-types:te-node-id | +--ro link-tp-id te-tp-id
| +--ro link-tp-id? te-types:te-tp-id | +--ro flags* path-attribute-flags
+--:(label) +--:(unnumbered-link-hop)
+--ro value? rt-types:generalized-label | +--ro unnumbered-link-hop
+--ro label-flags? binary | +--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-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.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 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/
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/rsvp:interface: /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:globals/ /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces
rsvp:sessions/rsvp:session/rsvp:state: /rsvp:interface:
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:globals
/rsvp:sessions/rsvp:session/rsvp:state:
augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol/rsvp:rsvp/rsvp:neighbors:
augment /te:te/te:tunnels/te:tunnel: augment /te:te/te:tunnels/te:tunnel:
+--rw local-protection-desired? empty +--rw session-attribute* identityref
+--rw bandwidth-protection-desired? empty
+--rw node-protection-desired? empty
+--rw non-php-desired? empty
+--rw entropy-label-cap? empty
+--rw oam-mep-entities-desired? empty
+--rw oam-mip-entities-desired? empty
augment /te:te/te:lsps-state/te:lsp: augment /te:te/te:lsps-state/te:lsp:
+--ro state +--ro session-attribute* identityref
| +--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
+--ro backup-info +--ro backup-info
+--ro state +--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:p2p-primary-paths
augment /te:te/te:tunnels/te:tunnel/te:p2p-primary-paths/ /te:p2p-primary-path/te:lsps/te:lsp:
te:p2p-primary-path/te:state/te:lsps/te:lsp: +--ro session-attribute* identityref
+--ro 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
+--ro backup-info +--ro backup-info
+--ro state +--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:p2p-secondary-paths
augment /te:te/te:tunnels/te:tunnel/te:p2p-secondary-paths/ /te:p2p-secondary-path/te:lsps/te:lsp:
te:p2p-secondary-path/te:state/te:lsps/te:lsp: +--ro session-attribute* identityref
+--ro 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
+--ro backup-info +--ro backup-info
+--ro state +--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? uint32 | | +--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? uint32 | +--rw maximum-reservable?
| | 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? uint32 | +--rw maximum-reservable?
| | 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? uint32 +--rw maximum-reservable?
| 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
<CODE BEGINS> file "ietf-rsvp-te@2018-10-20.yang" The RSVP-TE generic YANG module "ietf-rsvp-te" imports the following
modules:
o ietf-rsvp defined in [I-D.ietf-teas-yang-rsvp]
o ietf-routing-types defined in [RFC8294]
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]
This module references the following documents:
[I-D.ietf-teas-yang-rsvp], [RFC8349], [I-D.ietf-teas-yang-te],
[I-D.ietf-teas-yang-te-types], [RFC2210], [RFC4920], [RFC5420],
[RFC7570], [RFC4859].
<CODE BEGINS> file "ietf-rsvp-te@2019-02-18.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 "draft-ietf-teas-yang-rsvp: A YANG Data Model for
Resource Reservation Protocol (RSVP)"; Resource Reservation Protocol (RSVP)";
} }
skipping to change at page 17, line 21 skipping to change at page 17, line 13
WG Chair: Lou Berger WG Chair: Lou Berger
<mailto:lberger@labn.net> <mailto:lberger@labn.net>
WG Chair: Vishnu Pavan Beeram WG Chair: Vishnu Pavan Beeram
<mailto:vbeeram@juniper.net> <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@cisco.com> <mailto:tsaad.net@gmail.com>
Editor: Rakesh Gandhi Editor: Rakesh Gandhi
<mailto:rgandhi@cisco.com> <mailto:rgandhi@cisco.com>
Editor: Himanshu Shah
<mailto:hshah@ciena.com>
Editor: Xufeng Liu Editor: Xufeng Liu
<mailto: xufeng.liu.ietf@gmail.com> <mailto: xufeng.liu.ietf@gmail.com>
Editor: Xia Chen Editor: Igor Bryskin
<mailto:jescia.chenxia@huawei.com> <mailto:Igor.Bryskin@huawei.com>
Editor: Raqib Jones
<mailto:raqib@Brocade.com>
Editor: Bin Wen Editor: Himanshu Shah
<mailto:Bin_Wen@cable.comcast.com>"; <mailto:hshah@ciena.com>";
description description
"This module contains the RSVP-TE YANG generic data model."; "This module contains the RSVP-TE YANG generic data model.
The model fully conforms to the Network Management Datastore
Architecture (NMDA).
revision "2018-10-20" { Copyright (c) 2018 IETF Trust and the persons
description "Latest revision to RSVP-TE generic YANG module"; identified as authors of the code. All rights reserved.
reference "RFC2205, RFC3209, etc.";
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices.";
// RFC Ed.: replace XXXX with actual RFC number and remove this
// note.
// RFC Ed.: update the date below with the date of RFC publication
// and remove this note.
revision "2019-02-18" {
description "A YANG Data Model for RSVP-TE";
reference
"RFCXXXX: A YANG Data Model for RSVP-TE Protocol";
} }
/** /**
* 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;
description description
"List of RSVP Path record-route objects"; "List of RSVP Path record-route objects";
leaf index { uses te-types:record-route_state;
type leafref {
path "../state/index";
}
description "RRO subobject index";
}
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";
ordered-by user;
description description
"List of RSVP Resv record-route objects"; "List of RSVP Resv record-route objects";
leaf index { uses te-types:record-route_state;
type leafref {
path "../state/index";
}
description "RRO subobject index";
}
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";
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 leafref { type uint32;
path "../state/index";
}
description "ERO subobject index";
}
container state {
config false;
description description
"State parameters for the explicit route hop"; "Explicit route hop index. The index is used to
leaf index { identify an entry in the list. The order of entries
type uint32; is defined by the user without relying on key values";
description "ERO subobject index";
}
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;
description description
"List of outgoing RSVP Path explicit-route objects"; "List of outgoing RSVP Path explicit-route objects";
leaf index { leaf index {
type leafref { type uint32;
path "../state/index";
}
description "ERO subobject index";
}
container state {
config false;
description description
"State parameters for the explicit route hop"; "Explicit route hop index. The index is used to
leaf index { identify an entry in the list. The order of entries
type uint32; is defined by the user without relying on key values";
description "ERO subobject index";
}
uses te-types:explicit-route-hop;
} }
uses te-types:explicit-route-hop;
} }
} }
} }
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-list lsp-attribute {
type enumeration { type identityref {
enum end-to-end-routing { base te-types:lsp-attributes-flags;
description
"End-to-end routing desired";
reference "RFC4920, RFC5420";
}
enum boundary-rerouting {
description
"Boundary rerouting desired";
reference "RFC4920, RFC5420";
}
enum segment-based-rerouting {
description
"Segment-based rerouting desired";
reference "RFC4920, RFC5420";
}
} }
description "LSP rerouting types"; description "RSVP per LSP attributes flags";
} reference
leaf lsp-integrity-required { "RFC4920, RFC5420, RFC7570";
type boolean;
description "LSP integrity desired";
reference "RFC4875";
}
leaf lsp-contiguous {
type boolean;
description "Contiguous LSP";
reference "RFC5151";
}
leaf lsp-stitching-desired {
type boolean;
description "Stitched LSP";
reference "RFC5150";
}
leaf lsp-preplanned {
type boolean;
description "Preplanned LSP";
reference "RFC6001";
}
leaf lsp-oob-mapping {
type boolean;
description
"Mapping is done out-of-band";
reference "RFC6511";
} }
} }
grouping lsp-session-attributes-obj-flags_config { grouping lsp-session-attributes-obj-flags-config {
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 local-recording-desired { leaf-list session-attribute {
type boolean; when "../session-attribute !=
description "Path recording is desired."; 'te-types:bandwidth-protection-desired' or
reference "RFC3209"; ../session-attribute !=
} 'te-types:soft-preemption-desired'";
leaf se-style-desired { type identityref {
type boolean; base te-types:session-attributes-flags;
description "SE Style desired"; }
reference "RFC3209"; description "RSVP session attributes flags";
} reference
leaf path-reevaluation-request { "RFC4859: Registry for RSVP-TE Session Flags";
type boolean;
description "Path re-evaluation request";
reference "RFC4736";
}
leaf soft-preemption-desired {
type boolean;
description "Soft-preemption is desired";
reference "RFC5712";
} }
} }
grouping lsp-properties_config { grouping lsp-properties-config {
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-config;
uses lsp-attributes-flags_config; uses lsp-attributes-flags-config;
} }
grouping tunnel-properties_config { grouping tunnel-properties-config {
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 { */
grouping global-soft-preemption-config {
description description
"Configuration for global RSVP-TE soft preemption"; "Configuration for global RSVP-TE soft preemption";
leaf soft-preemption-timeout { leaf soft-preemption-timeout {
type uint16 { type uint16 {
range 0..300; range 0..300;
} }
default 0; default 0;
description description
"Timeout value for soft preemption to revert "Timeout value for soft preemption to revert
to hard preemption"; to hard preemption";
} }
} }
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";
uses global-soft-preemption_config; 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 state { container state {
config false; config false;
description description
skipping to change at page 26, line 6 skipping to change at page 24, line 25
/* 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:p2p-primary-paths/te:p2p-primary-path" + "/te:p2p-primary-paths/te:p2p-primary-path" +
"/te:path-setup-protocol = 'te-types:path-setup-rsvp'" { "/te:path-setup-protocol = '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-config;
uses tunnel-properties_config; uses tunnel-properties-config;
}
augment "/te:te/te:tunnels/te:tunnel/te:state" {
when "/te:te/te:tunnels/te:tunnel" +
"/te:p2p-primary-paths/te:p2p-primary-path" +
"/te:path-setup-protocol = 'te-types:path-setup-rsvp'" {
description
"When the path signaling protocol is RSVP-TE ";
}
description
"RSVP-TE generic data augmentation pertaining to TE tunnels";
uses lsp-properties_config;
uses tunnel-properties_config;
} }
/* TE LSP augmentation */ /* TE LSP augmentation */
grouping rsvp-te-lsp-properties { grouping rsvp-te-lsp-properties {
description "RSVP-TE LSP properties grouping"; description "RSVP-TE LSP properties grouping";
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:globals/"
+ "rsvp:sessions/rsvp:session/rsvp:local-index"; + "rsvp:sessions/rsvp:session/rsvp:local-index";
} }
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_config; uses lsp-properties-config;
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" { 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:path-setup-rsvp'" { "/te:path-setup-protocol = '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 generic data augmentation pertaining to specific TE "RSVP-TE generic data augmentation pertaining to specific TE
LSP"; LSP";
uses rsvp-te-lsp-properties; uses rsvp-te-lsp-properties;
} }
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:lsps/te:lsp" {
when "/te:te/te:tunnels/te:tunnel/te:p2p-primary-paths" + when "/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:lsps/te:lsp" +
"/te:path-setup-protocol = 'te-types:path-setup-rsvp'" { "/te:path-setup-protocol = '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 generic data augmentation pertaining to specific TE "RSVP-TE generic data augmentation pertaining to specific TE
LSP"; LSP";
uses rsvp-te-lsp-properties; uses rsvp-te-lsp-properties;
} }
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:lsps/te:lsp" {
when "/te:te/te:tunnels/te:tunnel/te:p2p-primary-paths" + when "/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:lsps/te:lsp" +
"/te:path-setup-protocol = 'te-types:path-setup-rsvp'" { "/te:path-setup-protocol = '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 generic data augmentation pertaining to specific TE "RSVP-TE generic data augmentation pertaining to specific TE
LSP"; LSP";
uses rsvp-te-lsp-properties; uses rsvp-te-lsp-properties;
} }
skipping to change at page 27, line 44 skipping to change at page 26, line 4
} }
/* 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
2.3.2. RSVP-TE MPLS YANG Module 2.3.2. RSVP-TE MPLS YANG Module
<CODE BEGINS> file "ietf-rsvp-te-mpls@2018-10-20.yang" The RSVP-TE MPLS YANG module "ietf-rsvp-te-mpls" imports the
following module(s):
o ietf-rsvp defined in [I-D.ietf-teas-yang-rsvp]
o ietf-routing-types defined in [RFC8294]
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]
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-te], [RFC3209].
<CODE BEGINS> file "ietf-rsvp-te-mpls@2019-02-18.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 "draft-ietf-teas-yang-rsvp: A YANG Data Model for
Resource Reservation Protocol (RSVP)"; Resource Reservation Protocol (RSVP)";
} }
skipping to change at page 28, line 19 skipping to change at page 26, line 42
prefix "rsvp"; prefix "rsvp";
reference "draft-ietf-teas-yang-rsvp: A YANG Data Model for reference "draft-ietf-teas-yang-rsvp: A YANG Data Model for
Resource Reservation Protocol (RSVP)"; 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-mpls-types { import ietf-te-packet-types {
prefix "te-mpls-types"; prefix "te-packet-types";
reference "draft-ietf-teas-yang-te-types: A YANG Data Model for reference "draft-ietf-teas-yang-te-types: A YANG Data Model for
Common Traffic Engineering Types"; Common Traffic Engineering 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 "draft-ietf-teas-yang-te-types: A YANG Data Model for
Common Traffic Engineering Types"; Common Traffic Engineering Types";
} }
import ietf-te { import ietf-te {
prefix "te"; prefix "te";
reference "draft-ietf-teas-yang-te: A YANG Data Model for Traffic reference "draft-ietf-teas-yang-te: A YANG Data Model for Traffic
Engineering Tunnels and Interfaces"; Engineering Tunnels and Interfaces";
} }
import ietf-te-device { import ietf-te-device {
prefix "te-dev"; prefix "te-dev";
skipping to change at page 29, line 13 skipping to change at page 27, line 37
WG Chair: Lou Berger WG Chair: Lou Berger
<mailto:lberger@labn.net> <mailto:lberger@labn.net>
WG Chair: Vishnu Pavan Beeram WG Chair: Vishnu Pavan Beeram
<mailto:vbeeram@juniper.net> <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@cisco.com> <mailto:tsaad.net@gmail.com>
Editor: Rakesh Gandhi Editor: Rakesh Gandhi
<mailto:rgandhi@cisco.com> <mailto:rgandhi@cisco.com>
Editor: Himanshu Shah
<mailto:hshah@ciena.com>
Editor: Xufeng Liu Editor: Xufeng Liu
<mailto: xufeng.liu.ietf@gmail.com> <mailto: xufeng.liu.ietf@gmail.com>
Editor: Xia Chen Editor: Igor Bryskin
<mailto:jescia.chenxia@huawei.com> <mailto:Igor.Bryskin@huawei.com>
Editor: Raqib Jones
<mailto:raqib@Brocade.com>
Editor: Bin Wen Editor: Himanshu Shah
<mailto:Bin_Wen@cable.comcast.com>"; <mailto:hshah@ciena.com>";
description description
"Latest update to MPLS RSVP-TE YANG data model."; "Latest update to MPLS RSVP-TE YANG data model.
revision "2018-10-20" { The model fully conforms to the Network Management Datastore
Architecture (NMDA).
Copyright (c) 2018 IETF Trust and the persons
identified as authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC XXXX; see
the RFC itself for full legal notices.";
// RFC Ed.: replace XXXX with actual RFC number and remove this
// note.
// RFC Ed.: update the date below with the date of RFC publication
// and remove this note.
revision "2019-02-18" {
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
"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-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 {
type empty;
description
"Non-PHP is desired";
reference "RFC6511";
}
leaf entropy-label-cap {
type empty;
description "Entropy label capability";
reference "RFC6790";
}
leaf oam-mep-entities-desired {
type empty;
description "OAM MEP entities desired";
reference "RFC7260";
}
leaf oam-mip-entities-desired {
type empty;
description "OAM MIP entities desired";
reference "RFC7260";
}
} }
grouping lsp-session-attributes-obj-flags-mpls_config { grouping lsp-session-attributes-obj-flags-mpls-config {
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 local-protection-desired { leaf-list session-attribute {
type empty; when "../session-attribute =
description "Fastreroute local protection is desired."; 'te-types:bandwidth-protection-desired' or
../session-attribute =
'te-types:soft-preemption-desired'";
type identityref {
base te-types:session-attributes-flags;
}
description "RSVP session attributes flags";
reference reference
"RFC4859: Registry for RSVP-TE Session Flags"; "RFC4859: Registry for RSVP-TE Session Flags";
} }
leaf bandwidth-protection-desired {
type empty;
description
"Request FRR bandwidth protection on LSRs if
present.";
reference "RFC4090";
}
leaf node-protection-desired {
type empty;
description
"Request FRR node protection on LSRs if
present.";
reference "RFC4090";
}
} }
grouping tunnel-properties-mpls_config { 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 { uses lsp-session-attributes-obj-flags-mpls-config;
config false; uses lsp-attributes-flags-mpls-config;
description
"Configuration applied parameters and state";
uses lsp-session-attributes-obj-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 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 uint32; 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";
skipping to change at page 33, line 24 skipping to change at page 31, line 28
} }
} }
} }
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 uint32 { type te-packet-types:bandwidth-kbps;
range "0..4294967295";
}
description description
"The maximum reservable bandwidth on the "The maximum reservable bandwidth on the
interface"; 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 34, line 17 skipping to change at page 32, line 19
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-config {
description description
"Interface bandwidth reservable configuration grouping"; "Interface bandwidth reservable configuration grouping";
choice bandwidth-value { choice bandwidth-value {
description "Reservable bandwidth configuration choice"; description "Reservable bandwidth configuration choice";
case absolute { case absolute {
leaf absolute-value { leaf absolute-value {
type uint32; type te-packet-types:bandwidth-kbps;
description "Absolute value of the bandwidth"; description "Absolute value of the bandwidth";
} }
} }
case percentage { case percentage {
leaf percent-value { leaf percent-value {
type uint32 { type uint32 {
range "0..4294967295"; range "0..4294967295";
} }
description "Percentage reservable bandwidth"; description "Percentage reservable bandwidth";
} }
skipping to change at page 35, line 28 skipping to change at page 33, line 31
} }
} }
} }
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";
uses bandwidth-mpls-reservable_config; 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-config {
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-mpls-types:backup-protection-type; base te-packet-types:backup-protection-type;
} }
default default
te-mpls-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-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";
skipping to change at page 36, line 35 skipping to change at page 34, line 37
path "/te:te/te:tunnels/te:tunnel/te:name"; 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 {
container auto-tunnel-backups { container auto-tunnel-backups {
description "Auto-tunnel choice"; description "Auto-tunnel choice";
uses rsvp-te-frr-auto-tunnel-backup_config; uses rsvp-te-frr-auto-tunnel-backup-config;
} }
} }
} }
} }
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";
uses rsvp-te-frr-backups_config; 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;
skipping to change at page 37, line 29 skipping to change at page 35, line 30
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";
container state { uses lsp-backup-info-state;
config false;
description
"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.";
} }
} }
/*** 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";
uses fast-reroute-local-revertive_config; 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 39, line 4 skipping to change at page 36, line 48
"Augmentations for RSVP-TE MPLS sessions"; "Augmentations 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-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:path-setup-rsvp'" { "/te:path-setup-protocol = '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"; "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: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: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:p2p-secondary-paths/te:p2p-secondary-path/" +
"te:path-setup-protocol = 'te-types:path-setup-rsvp'" { "te:path-setup-protocol = '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: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: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:p2p-secondary-paths/te:p2p-secondary-path/" +
"te:path-setup-protocol = 'te-types:path-setup-rsvp'" { "te:path-setup-protocol = '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;
skipping to change at page 40, line 26 skipping to change at page 38, line 24
<CODE ENDS> <CODE ENDS>
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 XML: N/A, the requested URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-te
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 XML: N/A, the URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-te-mpls
requested URI is an XML namespace. XML: N/A, the requested URI is an XML namespace.
This document registers a YANG module in the YANG Module Names This document registers two YANG modules in the YANG Module Names
registry [RFC6020]. registry [RFC6020].
name: ietf-rsvp namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp-te name: ietf-rsvp
prefix: ietf-rsvp reference: RFC3209 namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp-te
prefix: ietf-rsvp
reference: RFCXXXX
name: ietf-rsvp-te namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp- name: ietf-rsvp-te
te-mpls prefix: ietf-rsvp-te reference: RFC3209 namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp-te-mpls
prefix: ietf-rsvp-te
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
operations and content. operations and content.
skipping to change at page 42, line 19 skipping to change at page 40, line 19
Raqib Jones Raqib Jones
Brocade Brocade
Email: raqib@Brocade.com Email: raqib@Brocade.com
Bin Wen Bin Wen
Comcast Comcast
Email: Bin_Wen@cable.comcast.com Email: Bin_Wen@cable.comcast.com
7. Normative References 7. 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., 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-09 (work in Protocol (RSVP)", draft-ietf-teas-yang-rsvp-10 (work in
progress), May 2018. progress), February 2019.
[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., and I. Bryskin,
I. Bryskin, "A YANG Data Model for Traffic Engineering "A YANG Data Model for Traffic Engineering Tunnels and
Tunnels and Interfaces", draft-ietf-teas-yang-te-17 (work Interfaces", draft-ietf-teas-yang-te-19 (work in
in progress), October 2018. progress), February 2019.
[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-01 (work in progress), October 2018. yang-te-types-06 (work in progress), February 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>.
[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, <https://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.,
and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP
Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001,
<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-editor.org/info/rfc3688>. <https://www.rfc-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-editor.org/info/rfc6020>. <https://www.rfc-editor.org/info/rfc6020>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
skipping to change at page 44, line 10 skipping to change at page 42, line 5
[RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams", [RFC8340] Bjorklund, M. and L. Berger, Ed., "YANG Tree Diagrams",
BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018, BCP 215, RFC 8340, DOI 10.17487/RFC8340, March 2018,
<https://www.rfc-editor.org/info/rfc8340>. <https://www.rfc-editor.org/info/rfc8340>.
[RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration [RFC8341] Bierman, A. and M. Bjorklund, "Network Configuration
Access Control Model", STD 91, RFC 8341, Access Control Model", STD 91, RFC 8341,
DOI 10.17487/RFC8341, March 2018, DOI 10.17487/RFC8341, March 2018,
<https://www.rfc-editor.org/info/rfc8341>. <https://www.rfc-editor.org/info/rfc8341>.
[RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for
Routing Management (NMDA Version)", RFC 8349,
DOI 10.17487/RFC8349, March 2018,
<https://www.rfc-editor.org/info/rfc8349>.
7.2. Informative References
[RFC2210] Wroclawski, J., "The Use of RSVP with IETF Integrated
Services", RFC 2210, DOI 10.17487/RFC2210, September 1997,
<https://www.rfc-editor.org/info/rfc2210>.
[RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V.,
and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP
Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001,
<https://www.rfc-editor.org/info/rfc3209>.
[RFC4859] Farrel, A., "Codepoint Registry for the Flags Field in the
Resource Reservation Protocol-Traffic Engineering (RSVP-
TE) Session Attribute Object", RFC 4859,
DOI 10.17487/RFC4859, April 2007,
<https://www.rfc-editor.org/info/rfc4859>.
[RFC4920] Farrel, A., Ed., Satyanarayana, A., Iwata, A., Fujita, N.,
and G. Ash, "Crankback Signaling Extensions for MPLS and
GMPLS RSVP-TE", RFC 4920, DOI 10.17487/RFC4920, July 2007,
<https://www.rfc-editor.org/info/rfc4920>.
[RFC5420] Farrel, A., Ed., Papadimitriou, D., Vasseur, JP., and A.
Ayyangarps, "Encoding of Attributes for MPLS LSP
Establishment Using Resource Reservation Protocol Traffic
Engineering (RSVP-TE)", RFC 5420, DOI 10.17487/RFC5420,
February 2009, <https://www.rfc-editor.org/info/rfc5420>.
[RFC7570] Margaria, C., Ed., Martinelli, G., Balls, S., and B.
Wright, "Label Switched Path (LSP) Attribute in the
Explicit Route Object (ERO)", RFC 7570,
DOI 10.17487/RFC7570, July 2015,
<https://www.rfc-editor.org/info/rfc7570>.
Authors' Addresses Authors' Addresses
Vishnu Pavan Beeram Vishnu Pavan Beeram
Juniper Networks Juniper Networks
Email: vbeeram@juniper.net Email: vbeeram@juniper.net
Tarek Saad Tarek Saad
Cisco Systems, Inc. Cisco Systems, Inc.
Email: tsaad@cisco.com Email: tsaad@cisco.com
Rakesh Gandhi Rakesh Gandhi
Cisco Systems, Inc. Cisco Systems, Inc.
Email: rgandhi@cisco.com Email: rgandhi@cisco.com
 End of changes. 142 change blocks. 
721 lines changed or deleted 648 lines changed or added

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