< draft-ietf-teas-yang-rsvp-10.txt   draft-ietf-teas-yang-rsvp-11.txt >
TEAS Working Group V. Beeram TEAS Working Group V. Beeram
Internet-Draft Juniper Networks Internet-Draft T. Saad
Intended status: Standards Track T. Saad, Ed. Intended status: Standards Track Juniper Networks
Expires: August 22, 2019 R. Gandhi Expires: January 5, 2020 R. Gandhi
Cisco Systems, Inc. Cisco Systems, Inc.
X. Liu X. Liu
Jabil Jabil
I. Bryskin I. Bryskin
Huawei Technologies Huawei Technologies
H. Shah July 04, 2019
Ciena
February 18, 2019
A YANG Data Model for Resource Reservation Protocol (RSVP) A YANG Data Model for Resource Reservation Protocol (RSVP)
draft-ietf-teas-yang-rsvp-10 draft-ietf-teas-yang-rsvp-11
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 Protocol. The model covers the building blocks of management of RSVP Protocol. The model covers the building blocks of
the RSVP protocol that can be augmented and used by other RSVP the RSVP protocol that can be augmented and used by other RSVP
extension models such as RVSP extensions to Traffic-Engineering extension models such as RSVP extensions to Traffic-Engineering
(RSVP-TE). The model covers the configuration, operational state, (RSVP-TE). The model covers the configuration, operational state,
remote procedural calls, and event notifications data. remote procedure calls, and event notifications data.
Status of This Memo Status of This Memo
This Internet-Draft is submitted in full conformance with the This Internet-Draft is submitted in full conformance with the
provisions of BCP 78 and BCP 79. provisions of BCP 78 and BCP 79.
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 August 22, 2019. This Internet-Draft will expire on January 5, 2020.
Copyright Notice Copyright Notice
Copyright (c) 2019 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
skipping to change at page 2, line 24 skipping to change at page 2, line 21
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Model Tree Diagram . . . . . . . . . . . . . . . . . . . 3 1.2. Model Tree Diagram . . . . . . . . . . . . . . . . . . . 3
1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 3
2. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 3 2. Model Overview . . . . . . . . . . . . . . . . . . . . . . . 3
2.1. Module(s) Relationship . . . . . . . . . . . . . . . . . 4 2.1. Module(s) Relationship . . . . . . . . . . . . . . . . . 4
2.2. Design Considerations . . . . . . . . . . . . . . . . . . 4 2.2. Design Considerations . . . . . . . . . . . . . . . . . . 4
2.3. RSVP Base YANG Model . . . . . . . . . . . . . . . . . . 5 2.3. Model Notifications . . . . . . . . . . . . . . . . . . . 5
2.3.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 7 2.4. RSVP Base YANG Model . . . . . . . . . . . . . . . . . . 5
2.3.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 12 2.4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 7
2.4. RSVP Extended YANG Model . . . . . . . . . . . . . . . . 30 2.4.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 11
2.4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 30 2.5. RSVP Extended YANG Model . . . . . . . . . . . . . . . . 31
2.4.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 32 2.5.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 31
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 43 2.5.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 33
4. Security Considerations . . . . . . . . . . . . . . . . . . . 43 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 44
5. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 44 4. Security Considerations . . . . . . . . . . . . . . . . . . . 45
6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 44 5. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 46
7. Normative References . . . . . . . . . . . . . . . . . . . . 44 6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 46
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 46 7. Normative References . . . . . . . . . . . . . . . . . . . . 46
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 49
1. Introduction 1. Introduction
YANG [RFC6020] is a data definition language that was introduced to YANG [RFC6020] is a data definition language that was introduced to
define the contents of a conceptual data store that allows networked define the contents of a conceptual data store that allows networked
devices to be managed using NETCONF [RFC6241]. YANG is proving devices to be managed using NETCONF [RFC6241]. YANG is proving
relevant beyond its initial confines, as bindings to other interfaces relevant beyond its initial confines, as bindings to other interfaces
(e.g. ReST) and encoding other than XML (e.g. JSON) are being (e.g. ReST) and encoding other than XML (e.g. JSON) are being
defined. Furthermore, YANG data models can be used as the basis of defined. Furthermore, YANG data models can be used as the basis of
implementation for other interfaces, such as CLI and programmatic implementation for other interfaces, such as CLI and programmatic
skipping to change at page 3, line 42 skipping to change at page 3, line 42
| rt-type | ietf-routing-types | XX | | rt-type | ietf-routing-types | XX |
| key-chain | ietf-key-chain | XX | | key-chain | ietf-key-chain | XX |
+---------+----------------------+-----------+ +---------+----------------------+-----------+
Table 1: Prefixes and corresponding YANG modules Table 1: Prefixes and corresponding YANG modules
2. Model Overview 2. Model Overview
The RSVP base YANG module augments the "control-plane-protocol" list The RSVP base YANG module augments the "control-plane-protocol" list
in ietf-routing [RFC8349] module with specific RSVP parameters in an in ietf-routing [RFC8349] module with specific RSVP parameters in an
"rsvp" container. It also defines an extensiion identity "rsvp" of "rsvp" container. It also defines an extension identity "rsvp" of
base "rt:routing-protocol" to identify the RSVP protocol. base "rt:routing-protocol" to identify the RSVP protocol.
The augmentation of the RSVP model by other models (e.g. RSVP-TE for The augmentation of the RSVP model by other models (e.g. RSVP-TE for
MPLS or other technologies) are outside the scope of this document MPLS or other technologies) are outside the scope of this document
and are discussed in separate document(s), e.g. and are discussed in separate document(s), e.g.
[I-D.ietf-teas-yang-rsvp-te]. [I-D.ietf-teas-yang-rsvp-te].
2.1. Module(s) Relationship 2.1. Module(s) Relationship
This document divides the RSVP model into two modules: base and This document divides the RSVP model into two modules: base and
extended RSVP modules. Some RSVP features are categorized as core to extended RSVP modules. Some RSVP features are categorized as core to
the function of the protocol that are supported by most vendors the function of the protocol and are supported by most vendors
claiming support for RSVP protocol. Such features configuration and claiming the support for RSVP protocol. Such features configuration
state are grouped in the RSVP base module. and state are grouped in the RSVP base module.
Other extended RSVP features are categorized as either optional or Other extended RSVP features are categorized as either optional or
providing knobs to better tune basic functionality of the RSVP providing ability to better tune the basic functionality of the RSVP
protocol. The support for extended RSVP features by all vendors is protocol. The support for extended RSVP features by all vendors is
considered optional. Such features are grouped in a separate RSVP considered optional. Such features are grouped in a separate RSVP
extended module. extended module.
The relationship between the base and extended RSVP YANG model and The relationship between the base and extended RSVP YANG model and
the IETF routing YANG model is shown in Figure 1. the IETF routing YANG model is shown in Figure 1.
+--------------+ +--------------+
Routing | ietf-routing | Routing | ietf-routing |
+--------------+ +--------------+
o o
| |
+-----------+ +-----------+
RSVP module | ietf-rsvp | RSVP module | ietf-rsvp |
+-----------+ +-----------+
o o
| | o: augment relationship
RSVP extended | RSVP extended |
module +--------------------+ module +--------------------+
| ietf-rsvp-extended | | ietf-rsvp-extended |
+--------------------+ +--------------------+
Figure 1: Relationship of RSVP and RSVP extended modules with other Figure 1: Relationship of RSVP and RSVP extended modules with other
protocol modules protocol modules
2.2. Design Considerations 2.2. Design Considerations
skipping to change at page 5, line 4 skipping to change at page 5, line 4
intent is to cover a set of standard core features that are commonly intent is to cover a set of standard core features that are commonly
in use. For example: in use. For example:
o Authentication ([RFC2747]) o Authentication ([RFC2747])
o Refresh Reduction ([RFC2961]) o Refresh Reduction ([RFC2961])
o Hellos ([RFC3209]) o Hellos ([RFC3209])
o Graceful Restart ([RFC3473], [RFC5063]) o Graceful Restart ([RFC3473], [RFC5063])
The extended RSVP YANG model covers non-basic configuration(s) for The extended RSVP YANG model covers the configuration for optional
RSVP feature(s) as well as optional RSVP feature that are not a must features that are not must for basic RSVP protocol operation.
for basic RSVP operation.
The defined data model supports configuration inheritance for The defined data model supports configuration inheritance for
neighbors, and interfaces. Data elements defined in the main neighbors, and interfaces. Data elements defined in the main
container (e.g. the container that encompasses the list of container (e.g. the container that encompasses the list of
interfaces, or neighbors) are assumed to apply equally to all interfaces, or neighbors) are assumed to apply equally to all
elements of the list, unless overridden explicitly for a certain elements of the list, unless overridden explicitly for a certain
element (e.g. interface). Vendors are expected to augment the above element (e.g. interface). Vendors are expected to augment the above
container(s) to provide the list of inheritance command for their container(s) to provide the list of inheritance command for their
implementations. implementations.
2.3. RSVP Base YANG Model 2.3. Model Notifications
Notifications data modeling is key in any defined data model.
[I-D.ietf-netconf-subscribed-notifications] and
[I-D.ietf-netconf-yang-push] define a subscription and push mechanism
for YANG datastores. This mechanism currently allows the user to:
o Subscribe notifications on a per client basis
o Specify subtree filters or xpath filters so that only interested
contents will be sent.
o Specify either periodic or on-demand notifications.
2.4. RSVP Base YANG Model
The RSVP base YANG data model defines the container "rsvp" as the top The RSVP base YANG data model defines the container "rsvp" as the top
level container in this data model. The presence of this container level container in this data model. The presence of this container
enables the RSVP protocol functionality. enables the RSVP protocol functionality.
Derived state data is contained under a "state" container of the The derived state data is contained in "read-only" nodes directly
intended object as shown in Figure 2. under the intended object as shown in Figure 2.
module: ietf-rsvp module: ietf-rsvp
+--rw rsvp! +--rw rsvp!
+--rw globals +--rw globals
. .
. .
+--rw interfaces +--rw interfaces
. .
+-- ro state +-- ro <<derived state associated with interfaces>>
<<derived state associated with interfaces>>
. .
. .
+--rw neighbors +--rw neighbors
. .
+-- ro state +-- ro <<derived state associated with the tunnel>>
<<derived state associated with the tunnel>>
. .
. .
+--rw sessions +--rw sessions
. .
+-- ro state +-- ro <<derived state associated with the tunnel>>
<<derived state associated with the tunnel>>
. .
rpcs: rpcs:
+--x global-rpc +--x clear-session
+--x interfaces-rpc +--x clear-neighbor
+--x neighbors-rpc
+--x sessions-rpc
notifications:
+--n global-notif
+--n interfaces-notif
+--n neighbors-notif
+--n sessions-notif
Figure 2: RSVP high-level tree model view Figure 2: RSVP high-level tree model view
The following subsections provide overview of the parts of the model Configuration and state data are grouped to those applicable on per
pertaining to configuration and state data. node (global), per interface, per neighbor, or per session.
Configuration and state data are organized into those applicable
globally (node scope), per interface, per neighbor, or per session.
Global Data: Global Data:
The global data branch of the model covers configuration and state The global data cover the configuration and state that is
that are applicable the RSVP protocol behavior. applicable the RSVP protocol behavior.
Interface Data: Interface Data:
The interface data branch of the data model covers configuration and The interface data configuration and state model relevant
state elements relevant to one or all RSVP interfaces. Any data attributes applicable to one or all RSVP interfaces. Any data or
configuration applied at the "interfaces" container level are equally state at the "interfaces" container level is equally applicable to
applicable to all interfaces - unless overridden by explicit all interfaces - unless overridden by explicit configuration or
configuration under a specific interface. state under a specific interface.
Neighbor Data: Neighbor Data:
The neighbor data branch of the data model covers configuration and The neighbor data cover configuration and state relevant to RSVP
state elements relevant to RSVP neighbors. neighbors. Neighbors can be dynamically discovered using RSVP
signaling or explicitly configured.
Session Data: Session Data:
The sessions data branch covers configuration of elements relevant to The sessions data branch covers configuration and state relevant
RSVP sessions. to RSVP sessions. This is usually derived state that is result of
signaling. This model defines attributes related to IP RSVP
sessions as defined in [RFC2205].
2.3.1. Tree Diagram 2.4.1. Tree Diagram
Figure 3 shows the YANG tree representation for configuration and Figure 3 shows the YANG tree representation for configuration and
state data that is augmenting the RSVP basic module: state data that is augmenting the RSVP basic module:
module: ietf-rsvp module: ietf-rsvp
augment /rt:routing/rt:control-plane-protocols augment /rt:routing/rt:control-plane-protocols
/rt:control-plane-protocol: /rt:control-plane-protocol:
+--rw rsvp! +--rw rsvp!
+--rw globals +--rw globals
| +--rw sessions | +--rw sessions
| | +--ro session* [local-index] | | +--ro session-ip*
| | +--ro local-index -> ../state/local-index | | [destination protocol-id destination-port]
| | +--ro state | | +--ro destination-port inet:port-number
| | +--ro local-index? uint64 | | +--ro protocol-id uint8
| | +--ro destination-port? inet:port-number | | +--ro source? inet:ip-address
| | +--ro source? inet:ip-address | | +--ro destination inet:ip-address
| | +--ro destination? inet:ip-address | | +--ro session-name? string
| | +--ro session-name? string | | +--ro session-state? enumeration
| | +--ro session-state? enumeration | | +--ro session-type? identityref
| | +--ro session-type? identityref | | +--ro psbs
| | +--ro psbs | | | +--ro psb* []
| | | +--ro psb* [] | | | +--ro source-port? inet:port-number
| | | +--ro source-port? inet:port-number | | | +--ro expires-in? uint32
| | | +--ro expires-in? 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 statistics
| +--rw statistics | | +--ro messages
| | +--ro state | | | +--ro ack-sent? yang:counter64
| | +--ro messages | | | +--ro ack-received? yang:counter64
| | | +--ro ack-sent? yang:counter64 | | | +--ro bundle-sent? yang:counter64
| | | +--ro ack-received? yang:counter64 | | | +--ro bundle-received? yang:counter64
| | | +--ro bundle-sent? yang:counter64 | | | +--ro hello-sent? yang:counter64
| | | +--ro bundle-received? yang:counter64 | | | +--ro hello-received? yang:counter64
| | | +--ro hello-sent? yang:counter64 | | | +--ro integrity-challenge-sent? yang:counter64
| | | +--ro hello-received? yang:counter64 | | | +--ro integrity-challenge-received? yang:counter64
| | | +--ro integrity-challenge-sent? yang:counter64 | | | +--ro integrity-response-sent? yang:counter64
| | | +--ro integrity-challenge-received? yang:counter64 | | | +--ro integrity-response-received? yang:counter64
| | | +--ro integrity-response-sent? yang:counter64 | | | +--ro notify-sent? yang:counter64
| | | +--ro integrity-response-received? yang:counter64 | | | +--ro notify-received? yang:counter64
| | | +--ro notify-sent? yang:counter64 | | | +--ro path-sent? yang:counter64
| | | +--ro notify-received? yang:counter64 | | | +--ro path-received? yang:counter64
| | | +--ro path-sent? yang:counter64 | | | +--ro path-err-sent? yang:counter64
| | | +--ro path-received? yang:counter64 | | | +--ro path-err-received? yang:counter64
| | | +--ro path-err-sent? yang:counter64 | | | +--ro path-tear-sent? yang:counter64
| | | +--ro path-err-received? yang:counter64 | | | +--ro path-tear-received? yang:counter64
| | | +--ro path-tear-sent? yang:counter64 | | | +--ro resv-sent? yang:counter64
| | | +--ro path-tear-received? yang:counter64 | | | +--ro resv-received? yang:counter64
| | | +--ro resv-sent? yang:counter64 | | | +--ro resv-confirm-sent? yang:counter64
| | | +--ro resv-received? yang:counter64 | | | +--ro resv-confirm-received? yang:counter64
| | | +--ro resv-confirm-sent? yang:counter64 | | | +--ro resv-err-sent? yang:counter64
| | | +--ro resv-confirm-received? yang:counter64 | | | +--ro resv-err-received? yang:counter64
| | | +--ro resv-err-sent? yang:counter64 | | | +--ro resv-tear-sent? yang:counter64
| | | +--ro resv-err-received? yang:counter64 | | | +--ro resv-tear-received? yang:counter64
| | | +--ro resv-tear-sent? yang:counter64 | | | +--ro summary-refresh-sent? yang:counter64
| | | +--ro resv-tear-received? yang:counter64 | | | +--ro summary-refresh-received? yang:counter64
| | | +--ro summary-refresh-sent? yang:counter64 | | | +--ro unknown-messages-received? yang:counter64
| | | +--ro summary-refresh-received? yang:counter64 | | +--ro packets
| | | +--ro unknown-messages-received? yang:counter64 | | | +--ro sent? yang:counter64
| | +--ro packets | | | +--ro received? yang:counter64
| | | +--ro sent? yang:counter64 | | +--ro errors
| | | +--ro received? yang:counter64 | | +--ro authenticate? yang:counter64
| | +--ro errors | | +--ro checksum? yang:counter64
| | +--ro authenticate? yang:counter64 | | +--ro packet-length? yang:counter64
| | +--ro checksum? yang:counter64
| | +--ro packet-len? yang:counter64
| +--rw graceful-restart | +--rw graceful-restart
| +--rw enabled? boolean | +--rw enabled? boolean
+--rw interfaces +--rw interfaces
| +--rw refresh-reduction | +--rw refresh-reduction
| | +--rw enabled? boolean | | +--rw enabled? boolean
| +--rw hellos | +--rw hellos
| | +--rw enabled? boolean | | +--rw enabled? boolean
| +--rw authentication | +--rw authentication
| | +--rw enabled? boolean | | +--rw enabled? boolean
| | +--rw authentication-key? string | | +--rw authentication-key? string
| | +--rw crypto-algorithm identityref | | +--rw crypto-algorithm identityref
| +--rw statistics | +--ro statistics
| | +--ro state | | +--ro messages
| | +--ro messages | | | +--ro ack-sent? yang:counter64
| | | +--ro ack-sent? yang:counter64 | | | +--ro ack-received? yang:counter64
| | | +--ro ack-received? yang:counter64 | | | +--ro bundle-sent? yang:counter64
| | | +--ro bundle-sent? yang:counter64 | | | +--ro bundle-received? yang:counter64
| | | +--ro bundle-received? yang:counter64 | | | +--ro hello-sent? yang:counter64
| | | +--ro hello-sent? yang:counter64 | | | +--ro hello-received? yang:counter64
| | | +--ro hello-received? yang:counter64 | | | +--ro integrity-challenge-sent? yang:counter64
| | | +--ro integrity-challenge-sent? yang:counter64 | | | +--ro integrity-challenge-received? yang:counter64
| | | +--ro integrity-challenge-received? yang:counter64 | | | +--ro integrity-response-sent? yang:counter64
| | | +--ro integrity-response-sent? yang:counter64 | | | +--ro integrity-response-received? yang:counter64
| | | +--ro integrity-response-received? yang:counter64 | | | +--ro notify-sent? yang:counter64
| | | +--ro notify-sent? yang:counter64 | | | +--ro notify-received? yang:counter64
| | | +--ro notify-received? yang:counter64 | | | +--ro path-sent? yang:counter64
| | | +--ro path-sent? yang:counter64 | | | +--ro path-received? yang:counter64
| | | +--ro path-received? yang:counter64 | | | +--ro path-err-sent? yang:counter64
| | | +--ro path-err-sent? yang:counter64 | | | +--ro path-err-received? yang:counter64
| | | +--ro path-err-received? yang:counter64 | | | +--ro path-tear-sent? yang:counter64
| | | +--ro path-tear-sent? yang:counter64 | | | +--ro path-tear-received? yang:counter64
| | | +--ro path-tear-received? yang:counter64 | | | +--ro resv-sent? yang:counter64
| | | +--ro resv-sent? yang:counter64 | | | +--ro resv-received? yang:counter64
| | | +--ro resv-received? yang:counter64 | | | +--ro resv-confirm-sent? yang:counter64
| | | +--ro resv-confirm-sent? yang:counter64 | | | +--ro resv-confirm-received? yang:counter64
| | | +--ro resv-confirm-received? yang:counter64 | | | +--ro resv-err-sent? yang:counter64
| | | +--ro resv-err-sent? yang:counter64 | | | +--ro resv-err-received? yang:counter64
| | | +--ro resv-err-received? yang:counter64 | | | +--ro resv-tear-sent? yang:counter64
| | | +--ro resv-tear-sent? yang:counter64 | | | +--ro resv-tear-received? yang:counter64
| | | +--ro resv-tear-received? yang:counter64 | | | +--ro summary-refresh-sent? yang:counter64
| | | +--ro summary-refresh-sent? yang:counter64 | | | +--ro summary-refresh-received? yang:counter64
| | | +--ro summary-refresh-received? yang:counter64 | | | +--ro unknown-messages-received? yang:counter64
| | | +--ro unknown-messages-received? yang:counter64 | | +--ro packets
| | +--ro packets | | | +--ro sent? yang:counter64
| | | +--ro sent? yang:counter64 | | | +--ro received? yang:counter64
| | | +--ro received? yang:counter64 | | +--ro errors
| | +--ro errors | | +--ro authenticate? yang:counter64
| | +--ro authenticate? yang:counter64 | | +--ro checksum? yang:counter64
| | +--ro checksum? yang:counter64 | | +--ro packet-length? yang:counter64
| | +--ro packet-len? yang:counter64
| +--rw interface* [interface] | +--rw interface* [interface]
| +--rw interface if:interface-ref | +--rw interface if:interface-ref
| +--rw refresh-reduction | +--rw refresh-reduction
| | +--rw enabled? boolean | | +--rw enabled? boolean
| +--rw hellos | +--rw hellos
| | +--rw enabled? boolean | | +--rw enabled? boolean
| +--rw authentication | +--rw authentication
| | +--rw enabled? boolean | | +--rw enabled? boolean
| | +--rw authentication-key? string | | +--rw authentication-key? string
| | +--rw crypto-algorithm identityref | | +--rw crypto-algorithm identityref
| +--rw statistics | +--ro statistics
| +--ro state | +--ro messages
| +--ro messages | | +--ro ack-sent? yang:counter64
| | +--ro ack-sent? | | +--ro ack-received? yang:counter64
| | | yang:counter64 | | +--ro bundle-sent? yang:counter64
| | +--ro ack-received? | | +--ro bundle-received? yang:counter64
| | | yang:counter64 | | +--ro hello-sent? yang:counter64
| | +--ro bundle-sent? | | +--ro hello-received? yang:counter64
| | | yang:counter64 | | +--ro integrity-challenge-sent? yang:counter64
| | +--ro bundle-received? | | +--ro integrity-challenge-received? yang:counter64
| | | yang:counter64 | | +--ro integrity-response-sent? yang:counter64
| | +--ro hello-sent? | | +--ro integrity-response-received? yang:counter64
| | | yang:counter64 | | +--ro notify-sent? yang:counter64
| | +--ro hello-received? | | +--ro notify-received? yang:counter64
| | | yang:counter64 | | +--ro path-sent? yang:counter64
| | +--ro integrity-challenge-sent? | | +--ro path-received? yang:counter64
| | | yang:counter64 | | +--ro path-err-sent? yang:counter64
| | +--ro integrity-challenge-received? | | +--ro path-err-received? yang:counter64
| | | yang:counter64 | | +--ro path-tear-sent? yang:counter64
| | +--ro integrity-response-sent? | | +--ro path-tear-received? yang:counter64
| | | yang:counter64 | | +--ro resv-sent? yang:counter64
| | +--ro integrity-response-received? | | +--ro resv-received? yang:counter64
| | | yang:counter64 | | +--ro resv-confirm-sent? yang:counter64
| | +--ro notify-sent? | | +--ro resv-confirm-received? yang:counter64
| | | yang:counter64 | | +--ro resv-err-sent? yang:counter64
| | +--ro notify-received? | | +--ro resv-err-received? yang:counter64
| | | yang:counter64 | | +--ro resv-tear-sent? yang:counter64
| | +--ro path-sent? | | +--ro resv-tear-received? yang:counter64
| | | yang:counter64 | | +--ro summary-refresh-sent? yang:counter64
| | +--ro path-received? | | +--ro summary-refresh-received? yang:counter64
| | | yang:counter64 | | +--ro unknown-messages-received? yang:counter64
| | +--ro path-err-sent? | +--ro packets
| | | yang:counter64 | | +--ro sent? yang:counter64
| | +--ro path-err-received? | | +--ro received? yang:counter64
| | | yang:counter64 | +--ro errors
| | +--ro path-tear-sent? | +--ro authenticate? yang:counter64
| | | yang:counter64 | +--ro checksum? yang:counter64
| | +--ro path-tear-received? | +--ro packet-length? yang:counter64
| | | yang:counter64
| | +--ro resv-sent?
| | | yang:counter64
| | +--ro resv-received?
| | | yang:counter64
| | +--ro resv-confirm-sent?
| | | yang:counter64
| | +--ro resv-confirm-received?
| | | yang:counter64
| | +--ro resv-err-sent?
| | | yang:counter64
| | +--ro resv-err-received?
| | | yang:counter64
| | +--ro resv-tear-sent?
| | | yang:counter64
| | +--ro resv-tear-received?
| | | yang:counter64
| | +--ro summary-refresh-sent?
| | | yang:counter64
| | +--ro summary-refresh-received?
| | | yang:counter64
| | +--ro unknown-messages-received?
| | yang:counter64
| +--ro packets
| | +--ro sent? yang:counter64
| | +--ro received? yang:counter64
| +--ro errors
| +--ro authenticate? yang:counter64
| +--ro checksum? yang:counter64
| +--ro packet-len? yang:counter64
+--rw neighbors +--rw neighbors
+--rw neighbor* [address] +--rw neighbor* [address]
+--rw address inet:ip-address +--rw address inet:ip-address
+--ro state +--rw epoch? uint32
+--ro address? inet:ip-address +--rw expiry-time? uint32
+--ro epoch? uint32 +--rw graceful-restart
+--ro expiry-time? uint32 | +--rw enabled? boolean
+--ro graceful-restart | +--rw local-restart-time? uint32
| +--ro enabled? boolean | +--rw local-recovery-time? uint32
| +--ro local-restart-time? uint32 | +--rw neighbor-restart-time? uint32
| +--ro local-recovery-time? uint32 | +--rw neighbor-recovery-time? uint32
| +--ro neighbor-restart-time? uint32 | +--rw helper-mode
| +--ro neighbor-recovery-time? uint32 | +--rw enabled? boolean
| +--ro helper-mode | +--rw max-helper-restart-time? uint32
| +--ro enabled? boolean | +--rw max-helper-recovery-time? uint32
| +--ro max-helper-restart-time? uint32 | +--rw neighbor-restart-time-remaining? uint32
| +--ro max-helper-recovery-time? uint32 | +--rw neighbor-recovery-time-remaining? uint32
| +--ro neighbor-restart-time-remaining? uint32 +--rw hello-status? enumeration
| +--ro neighbor-recovery-time-remaining? uint32 +--rw interface? if:interface-ref
+--ro hello-status? enumeration +--rw neighbor-state? enumeration
+--ro interface? if:interface-ref +--rw refresh-reduction-capable? boolean
+--ro neighbor-state? enumeration +--rw restart-count? yang:counter32
+--ro refresh-reduction-capable? boolean +--rw restart-time? yang:date-and-time
+--ro restart-count? yang:counter32
+--ro restart-time? yang:date-and-time rpcs:
+---x clear-session
| +---w input
| +---w routing-protocol-instance-name leafref
| +---w (filter-type)
| +--:(match-all)
| | +---w all empty
| +--:(match-one)
| +---w session-info
| +---w (session-type)
| +--:(rsvp-session-ip)
| +---w destination leafref
| +---w protocol-id uint8
| +---w destination-port inet:ip-address
+---x clear-neighbor
+---w input
+---w routing-protocol-instance-name leafref
+---w (filter-type)
+--:(match-all)
| +---w all empty
+--:(match-one)
+---w neighbor-address leafref
Figure 3: RSVP model tree diagram Figure 3: RSVP model tree diagram
2.3.2. YANG Module 2.4.2. YANG Module
<CODE BEGINS> file "ietf-rsvp@2019-02-18.yang" The ietf-rsvp module imports from the following modules:
module ietf-rsvp {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp"; o ietf-interfaces defined in [RFC8343]
/* Replace with IANA when assigned */ o ietf-yang-types and ietf-inet-types defined in [RFC6991]
prefix "rsvp";
import ietf-interfaces { o ietf-routing defined in [RFC8349]
prefix if;
reference "RFC8343: A YANG Data Model for Interface Management";
}
import ietf-inet-types { o ietf-key-chain defined in [RFC8177]
prefix inet;
reference "RFC6991: Common YANG Data Types";
}
import ietf-yang-types { <CODE BEGINS> file "ietf-rsvp@2019-07-04.yang"
prefix "yang"; module ietf-rsvp {
reference "RFC6991: Common YANG Data Types"; yang-version 1.1;
}
import ietf-routing { namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp";
prefix "rt";
reference
"RFC8349: A YANG Data Model for Routing Management
(NMDA Version)";
}
import ietf-key-chain { /* Replace with IANA when assigned */
prefix "key-chain"; prefix "rsvp";
reference "RFC8177: YANG Data Model for Key Chains"; import ietf-interfaces {
} prefix if;
reference "RFC8343: A YANG Data Model for Interface Management";
}
organization import ietf-inet-types {
"IETF Traffic Engineering Architecture and Signaling (TEAS) prefix inet;
Working Group"; reference "RFC6991: Common YANG Data Types";
}
contact import ietf-yang-types {
"WG Web: <http://tools.ietf.org/wg/teas/> prefix "yang";
WG List: <mailto:teas@ietf.org> reference "RFC6991: Common YANG Data Types";
}
WG Chair: Lou Berger import ietf-routing {
<mailto:lberger@labn.net> prefix "rt";
reference
"RFC8349: A YANG Data Model for Routing Management
(NMDA Version)";
}
WG Chair: Vishnu Pavan Beeram import ietf-key-chain {
<mailto:vbeeram@juniper.net> prefix "key-chain";
reference "RFC8177: YANG Data Model for Key Chains";
}
Editor: Vishnu Pavan Beeram organization
<mailto:vbeeram@juniper.net> "IETF Traffic Engineering Architecture and Signaling (TEAS)
Working Group";
Editor: Tarek Saad contact
<mailto:tsaad@cisco.com> "WG Web: <http://tools.ietf.org/wg/teas/>
WG List: <mailto:teas@ietf.org>
Editor: Rakesh Gandhi Editor: Vishnu Pavan Beeram
<mailto:rgandhi@cisco.com> <mailto:vbeeram@juniper.net>
Editor: Xufeng Liu Editor: Tarek Saad
<mailto: xufeng.liu.ietf@gmail.com> <mailto:tsaad@juniper.net>
Editor: Igor Bryskin Editor: Rakesh Gandhi
<mailto:Igor.Bryskin@huawei.com> <mailto:rgandhi@cisco.com>
Editor: Himanshu Shah Editor: Xufeng Liu
<mailto:hshah@ciena.com>"; <mailto: xufeng.liu.ietf@gmail.com>
description Editor: Igor Bryskin
"This module contains the RSVP YANG data model. <mailto:Igor.Bryskin@huawei.com>
The model fully conforms to the Network Management Datastore
Architecture (NMDA).
Copyright (c) 2018 IETF Trust and the persons Editor: Himanshu Shah
identified as authors of the code. All rights reserved. <mailto:hshah@ciena.com>";
Redistribution and use in source and binary forms, with or description
without modification, is permitted pursuant to, and subject "This module contains the RSVP YANG data model.
to the license terms contained in, the Simplified BSD License The model fully conforms to the Network Management Datastore
set forth in Section 4.c of the IETF Trust's Legal Provisions Architecture (NMDA).
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 Copyright (c) 2019 IETF Trust and the persons
// note. identified as authors of the code. All rights reserved.
// RFC Ed.: update the date below with the date of RFC publication Redistribution and use in source and binary forms, with or
// and remove this note. 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.";
revision "2019-02-18" { // RFC Ed.: replace XXXX with actual RFC number and remove this
description // note.
"A YANG Data Model for Resource Reservation Protocol";
reference
"RFCXXXX: A YANG Data Model for Resource Reservation Protocol
(RSVP)";
}
identity rsvp { // RFC Ed.: update the date below with the date of RFC publication
base "rt:routing-protocol"; // and remove this note.
description "RSVP protocol";
}
identity rsvp-session-type { revision "2019-07-04" {
description "Base RSVP session type"; description
} "A YANG Data Model for Resource Reservation Protocol";
reference
"RFCXXXX: A YANG Data Model for Resource Reservation Protocol
(RSVP)";
}
identity rsvp-session-ipv4 { identity rsvp {
base rsvp-session-type; base "rt:routing-protocol";
description "RSVP IPv4 session type"; description "RSVP protocol";
} }
identity rsvp-session-ipv6 { identity rsvp-session-type {
base rsvp-session-type; description "Base RSVP session type";
description "RSVP IPv4 session type"; }
}
identity reservation-style { identity rsvp-session-ip {
description "Base identity for reservation style"; base rsvp-session-type;
} description "RSVP IP session type";
identity reservation-wildcard-filter { }
base reservation-style;
description "Wildcard-Filter (WF) Style";
reference "RFC2205";
}
identity reservation-fixed-filter { identity reservation-style {
base reservation-style; description "Base identity for reservation style";
description "Fixed-Filter (FF) Style"; }
reference "RFC2205";
}
identity reservation-shared-explicit { identity reservation-wildcard-filter {
base reservation-style; base reservation-style;
description "Shared Explicit (SE) Style"; description "Wildcard-Filter (WF) Style";
reference "RFC2205"; reference "RFC2205";
} }
grouping graceful-restart-config { identity reservation-fixed-filter {
description base reservation-style;
"Base configuration parameters relating to RSVP description "Fixed-Filter (FF) Style";
Graceful-Restart"; reference "RFC2205";
leaf enabled { }
type boolean;
description
"'true' if RSVP Graceful Restart is enabled.
'false' if RSVP Graceful Restart is disabled.";
}
}
grouping graceful-restart { identity reservation-shared-explicit {
description base reservation-style;
"RSVP graceful restart parameters grouping"; description "Shared Explicit (SE) Style";
container graceful-restart { reference "RFC2205";
description }
"RSVP graceful restart parameters container";
uses graceful-restart-config;
}
}
grouping refresh-reduction-config { grouping graceful-restart-config {
description description
"Configuration parameters relating to RSVP "Base configuration parameters relating to RSVP
refresh reduction"; Graceful-Restart";
leaf enabled {
type boolean;
description
"'true' if RSVP Graceful Restart is enabled.
'false' if RSVP Graceful Restart is disabled.";
}
}
leaf enabled { grouping graceful-restart {
type boolean; description
description "RSVP graceful restart parameters grouping";
"'true' if RSVP Refresh Reduction is enabled. container graceful-restart {
'false' if RSVP Refresh Reduction is disabled."; description
} "RSVP graceful restart parameters container";
} uses graceful-restart-config;
}
}
grouping refresh-reduction { grouping refresh-reduction-config {
description description
"Top level grouping for RSVP refresh reduction "Configuration parameters relating to RSVP
parameters"; refresh reduction";
container refresh-reduction {
description
"Top level container for RSVP refresh reduction
parameters";
uses refresh-reduction-config;
}
}
grouping authentication-config { leaf enabled {
description type boolean;
"Configuration parameters relating to RSVP description
authentication"; "'true' if RSVP Refresh Reduction is enabled.
'false' if RSVP Refresh Reduction is disabled.";
}
}
leaf enabled { grouping refresh-reduction {
type boolean; description
description "Top level grouping for RSVP refresh reduction
"'true' if RSVP Authentication is enabled. parameters";
'false' if RSVP Authentication is disabled."; container refresh-reduction {
}
leaf authentication-key {
type string;
description
"An authentication key string";
reference
"RFC 2747: RSVP Cryptographic Authentication";
}
leaf crypto-algorithm {
type identityref {
base key-chain:crypto-algorithm;
}
mandatory true;
description description
"Cryptographic algorithm associated with key."; "Top level container for RSVP refresh reduction
} parameters";
} uses refresh-reduction-config;
}
}
grouping authentication { grouping authentication-config {
description description
"Top level grouping for RSVP authentication parameters"; "Configuration parameters relating to RSVP
container authentication { authentication";
description leaf enabled {
"Top level container for RSVP authentication type boolean;
parameters"; description
uses authentication-config; "'true' if RSVP Authentication is enabled.
'false' if RSVP Authentication is disabled.";
}
leaf authentication-key {
type string;
description
"An authentication key string";
reference
"RFC 2747: RSVP Cryptographic Authentication";
}
leaf crypto-algorithm {
type identityref {
base key-chain:crypto-algorithm;
} }
} mandatory true;
grouping hellos-config {
description description
"Configuration parameters relating to RSVP "Cryptographic algorithm associated with key.";
hellos"; }
leaf enabled {
type boolean;
description
"'true' if RSVP Hello is enabled.
'false' if RSVP Hello is disabled.";
}
}
grouping hellos { }
description
"Top level grouping for RSVP hellos parameters";
container hellos {
description
"Top level container for RSVP hello parameters";
uses hellos-config;
}
}
grouping signaling-parameters-config { grouping authentication {
description description
"Configuration parameters relating to RSVP "Top level grouping for RSVP authentication parameters";
signaling"; container authentication {
} description
"Top level container for RSVP authentication
parameters";
uses authentication-config;
}
}
grouping signaling-parameters { grouping hellos-config {
description description
"Top level grouping for RSVP signaling parameters"; "Configuration parameters relating to RSVP
uses signaling-parameters-config; hellos";
} leaf enabled {
type boolean;
description
"'true' if RSVP Hello is enabled.
'false' if RSVP Hello is disabled.";
}
}
grouping session-attributes-state { grouping hellos {
description description
"Top level grouping for RSVP session properties"; "Top level grouping for RSVP hellos parameters";
leaf local-index { container hellos {
type uint64; description
description "Top level container for RSVP hello parameters";
"The index used to identify the RSVP session uses hellos-config;
on the local network element. This index is }
generated by the device and is unique only }
to the local network element.";
}
leaf destination-port {
type inet:port-number;
description "RSVP destination port";
reference "RFC2205";
}
leaf source {
type inet:ip-address;
description "RSVP source address";
reference "RFC2205";
}
leaf destination {
type inet:ip-address;
description "RSVP destination address";
reference "RFC2205";
}
leaf session-name {
type string;
description
"The signaled name of this RSVP session.";
}
leaf session-state {
type enumeration {
enum "up" {
description
"RSVP session is up";
}
enum "down" {
description
"RSVP session is down";
}
}
description
"Enumeration of RSVP session states";
}
leaf session-type {
type identityref {
base rsvp-session-type;
}
description "RSVP session type";
}
container psbs {
description "Path State Block container";
list psb {
description "List of path state blocks";
leaf source-port {
type inet:port-number;
description "RSVP source port";
reference "RFC2205";
}
leaf expires-in {
type uint32;
units seconds;
description "Time to reservation expiry (in seconds)";
}
}
}
container rsbs {
description "Reservation State Block container";
list rsb {
description "List of reservation state blocks";
leaf source-port {
type inet:port-number;
description "RSVP source port";
reference "RFC2205";
}
leaf reservation-style {
type identityref {
base reservation-style;
}
description "RSVP reservation style";
}
leaf expires-in {
type uint32;
units seconds;
description "Time to reservation expiry (in seconds)";
}
}
}
}
grouping neighbor-attributes { grouping signaling-parameters-config {
description description
"Top level grouping for RSVP neighbor properties"; "Configuration parameters relating to RSVP
leaf address { signaling";
type inet:ip-address; }
description
"Address of RSVP neighbor";
}
container state {
config false;
description
"State information associated with RSVP
neighbor properties";
uses neighbor-derived-state;
}
}
grouping packets-state { grouping signaling-parameters {
description description
"Packet statistics grouping"; "Top level grouping for RSVP signaling parameters";
container packets { uses signaling-parameters-config;
description }
"Packet statistics container";
leaf sent {
type yang:counter64;
description
"Packet sent count";
}
leaf received { grouping session-attributes-state {
type yang:counter64; description
description "Top level grouping for RSVP session properties";
"Packet received count"; leaf destination-port {
type inet:port-number;
description "RSVP destination port";
reference "RFC2205";
}
leaf protocol-id {
type uint8;
description "The IP protocol ID.";
reference "RFC2205, section 3.2";
}
leaf source {
type inet:ip-address;
description "RSVP source address";
reference "RFC2205";
}
leaf destination {
type inet:ip-address;
description "RSVP destination address";
reference "RFC2205";
}
leaf session-name {
type string;
description
"The signaled name of this RSVP session.";
}
leaf session-state {
type enumeration {
enum "up" {
description
"RSVP session is up";
}
enum "down" {
description
"RSVP session is down";
}
}
description
"Enumeration of RSVP session states";
}
leaf session-type {
type identityref {
base rsvp-session-type;
}
description "RSVP session type";
}
container psbs {
description "Path State Block container";
list psb {
description "List of path state blocks";
leaf source-port {
type inet:port-number;
description "RSVP source port";
reference "RFC2205";
}
leaf expires-in {
type uint32;
units seconds;
description "Time to reservation expiry (in seconds)";
}
}
}
container rsbs {
description "Reservation State Block container";
list rsb {
description "List of reservation state blocks";
leaf source-port {
type inet:port-number;
description "RSVP source port";
reference "RFC2205";
}
leaf reservation-style {
type identityref {
base reservation-style;
}
description "RSVP reservation style";
}
leaf expires-in {
type uint32;
units seconds;
description "Time to reservation expiry (in seconds)";
}
}
}
}
} grouping neighbor-attributes {
} description
} "Top level grouping for RSVP neighbor properties";
leaf address {
type inet:ip-address;
description
"Address of RSVP neighbor";
}
leaf epoch {
type uint32;
description
"Neighbor epoch.";
}
grouping protocol-state { leaf expiry-time {
description type uint32;
"RSVP protocol statistics grouping"; units seconds;
container messages { description
description "Neighbor expiry time after which the neighbor state
"RSVP protocol statistics container"; is purged if no states associated with it";
leaf ack-sent { }
type yang:counter64;
description
"Hello sent count";
}
leaf ack-received { container graceful-restart {
type yang:counter64; description
description "Graceful restart information.";
"Hello received count";
}
leaf bundle-sent { leaf enabled {
type yang:counter64; type boolean;
description description
"Bundle sent count"; "'true' if graceful restart is enabled for the neighbor.";
} }
leaf bundle-received { leaf local-restart-time {
type yang:counter64; type uint32;
description units seconds;
"Bundle received count"; description
} "Local node restart time";
}
leaf hello-sent { leaf local-recovery-time {
type yang:counter64; type uint32;
description units seconds;
"Hello sent count"; description
} "Local node recover time";
}
leaf hello-received { leaf neighbor-restart-time {
type yang:counter64; type uint32;
description units seconds;
"Hello received count"; description
} "Neighbor restart time";
}
leaf integrity-challenge-sent { leaf neighbor-recovery-time {
type yang:counter64; type uint32;
description units seconds;
"Integrity Challenge sent count"; description
} "Neighbor recover time";
}
leaf integrity-challenge-received { container helper-mode {
type yang:counter64; description
description "Helper mode information ";
"Integrity Challenge received count";
}
leaf integrity-response-sent { leaf enabled {
type yang:counter64; type boolean;
description description
"Integrity Response sent count"; "'true' if helper mode is enabled.";
} }
leaf integrity-response-received { leaf max-helper-restart-time {
type yang:counter64; type uint32;
description units seconds;
"Integrity Response received count"; description
} "The time the router or switch waits after it
discovers that a neighboring router has gone down
before it declares the neighbor down";
}
leaf notify-sent { leaf max-helper-recovery-time {
type yang:counter64; type uint32;
description units seconds;
"Notify sent count"; description
} "The amount of time the router retains the state of its
RSVP neighbors while they undergo a graceful restart";
}
leaf notify-received { leaf neighbor-restart-time-remaining {
type yang:counter64; type uint32;
description units seconds;
"Notify received count"; description
} "Number of seconds remaining for neighbor to send
Hello message after restart.";
}
leaf path-sent { leaf neighbor-recovery-time-remaining {
type yang:counter64; type uint32;
description units seconds;
"Path sent count"; description
} "Number of seconds remaining for neighbor to
refresh.";
}
} // helper-mode
} // graceful-restart
leaf hello-status {
type enumeration {
enum "enabled" {
description
"Enabled";
}
enum "disabled" {
description
"Disabled";
}
enum "restarting" {
description
"Restarting";
}
}
description
"Hello status";
}
leaf path-received { leaf interface {
type yang:counter64; type if:interface-ref;
description description
"Path received count"; "Interface where RSVP neighbor was detected";
} }
leaf path-err-sent { leaf neighbor-state {
type yang:counter64; type enumeration {
description enum "up" {
"Path error sent count"; description
} "up";
}
enum "down" {
description
"down";
}
enum "hello-disable" {
description
"hello-disable";
}
enum "restarting" {
description
"restarting";
}
}
description
"Neighbor state";
}
leaf refresh-reduction-capable {
type boolean;
description
"enables all RSVP refresh reduction message
bundling, RSVP message ID, reliable message delivery
and summary refresh";
reference
"RFC 2961 RSVP Refresh Overhead Reduction
Extensions";
}
leaf path-err-received { leaf restart-count {
type yang:counter64; type yang:counter32;
description description
"Path error received count"; "Number of times this neighbor restart";
} }
leaf path-tear-sent { leaf restart-time {
type yang:counter64; type yang:date-and-time;
description description
"Path tear sent count"; "Last restart time of the neighbor";
} }
}
leaf path-tear-received { grouping packets-state {
type yang:counter64; description
description "Packet statistics grouping";
"Path tear received count"; container packets {
} description
"Packet statistics container";
leaf sent {
type yang:counter64;
description
"Packet sent count";
}
leaf resv-sent { leaf received {
type yang:counter64; type yang:counter64;
description description
"Resv sent count"; "Packet received count";
} }
}
}
leaf resv-received { grouping protocol-state {
type yang:counter64; description
description "RSVP protocol statistics grouping";
"Resv received count"; container messages {
} description
"RSVP protocol statistics container";
leaf ack-sent {
type yang:counter64;
description
"Hello sent count";
}
leaf resv-confirm-sent { leaf ack-received {
type yang:counter64; type yang:counter64;
description description
"Confirm sent count"; "Hello received count";
} }
leaf resv-confirm-received { leaf bundle-sent {
type yang:counter64; type yang:counter64;
description description
"Confirm received count"; "Bundle sent count";
} }
leaf resv-err-sent { leaf bundle-received {
type yang:counter64; type yang:counter64;
description description
"Resv error sent count"; "Bundle received count";
} }
leaf resv-err-received { leaf hello-sent {
type yang:counter64; type yang:counter64;
description description
"Resv error received count"; "Hello sent count";
} }
leaf resv-tear-sent { leaf hello-received {
type yang:counter64; type yang:counter64;
description description
"Resv tear sent count"; "Hello received count";
} }
leaf resv-tear-received { leaf integrity-challenge-sent {
type yang:counter64; type yang:counter64;
description description
"Resv tear received count"; "Integrity Challenge sent count";
} }
leaf summary-refresh-sent { leaf integrity-challenge-received {
type yang:counter64; type yang:counter64;
description description
"Summary refresh sent count"; "Integrity Challenge received count";
}
leaf summary-refresh-received { }
type yang:counter64;
description
"Summary refresh received count";
}
leaf unknown-messages-received { leaf integrity-response-sent {
type yang:counter64; type yang:counter64;
description description
"Unknown packet received count"; "Integrity Response sent count";
} }
}
}
grouping errors-state { leaf integrity-response-received {
description type yang:counter64;
"Error statistics state grouping"; description
container errors { "Integrity Response received count";
description }
"Error statistics state container";
leaf authenticate { leaf notify-sent {
type yang:counter64; type yang:counter64;
description description
"The total number of packets received with an "Notify sent count";
authentication failure."; }
}
leaf checksum { leaf notify-received {
type yang:counter64; type yang:counter64;
description description
"The total number of packets received with an invalid "Notify received count";
checksum value."; }
}
leaf packet-len { leaf path-sent {
type yang:counter64; type yang:counter64;
description description
"The total number of packets received with an invalid "Path sent count";
packet length."; }
}
}
}
grouping statistics-state { leaf path-received {
description "RSVP statistic attributes."; type yang:counter64;
container statistics { description
description "Path received count";
"statistics state container"; }
container state {
config false;
description
"State information associated with RSVP
hello parameters";
uses protocol-state;
uses packets-state;
uses errors-state;
}
}
}
grouping neighbor-derived-state { leaf path-err-sent {
description type yang:counter64;
"Derived state at neighbor level."; description
"Path error sent count";
}
leaf address { leaf path-err-received {
type inet:ip-address; type yang:counter64;
description description
"Address of RSVP neighbor"; "Path error received count";
} }
leaf epoch { leaf path-tear-sent {
type uint32; type yang:counter64;
description description
"Neighbor epoch."; "Path tear sent count";
} }
leaf expiry-time { leaf path-tear-received {
type uint32; type yang:counter64;
units seconds; description
description "Path tear received count";
"Neighbor expiry time after which the neighbor state }
is purged if no states associated with it";
}
container graceful-restart { leaf resv-sent {
description type yang:counter64;
"Graceful restart information."; description
"Resv sent count";
}
leaf enabled { leaf resv-received {
type boolean; type yang:counter64;
description description
"'true' if graceful restart is enabled for the neighbor."; "Resv received count";
} }
leaf local-restart-time { leaf resv-confirm-sent {
type uint32; type yang:counter64;
units seconds; description
description "Confirm sent count";
"Local node restart time"; }
}
leaf local-recovery-time { leaf resv-confirm-received {
type uint32; type yang:counter64;
units seconds; description
description "Confirm received count";
"Local node recover time"; }
}
leaf neighbor-restart-time { leaf resv-err-sent {
type uint32; type yang:counter64;
units seconds; description
description "Resv error sent count";
"Neighbor restart time"; }
}
leaf neighbor-recovery-time { leaf resv-err-received {
type uint32; type yang:counter64;
units seconds; description
description "Resv error received count";
"Neighbor recover time";
}
container helper-mode { }
description
"Helper mode information ";
leaf enabled { leaf resv-tear-sent {
type boolean; type yang:counter64;
description description
"'true' if helper mode is enabled."; "Resv tear sent count";
} }
leaf max-helper-restart-time { leaf resv-tear-received {
type uint32; type yang:counter64;
units seconds; description
description "Resv tear received count";
"The time the router or switch waits after it }
discovers that a neighboring router has gone down
before it declares the neighbor down";
}
leaf max-helper-recovery-time { leaf summary-refresh-sent {
type uint32; type yang:counter64;
units seconds; description
description "Summary refresh sent count";
"The amount of time the router retains the state of its }
RSVP neighbors while they undergo a graceful restart";
}
leaf neighbor-restart-time-remaining { leaf summary-refresh-received {
type uint32; type yang:counter64;
units seconds; description
description "Summary refresh received count";
"Number of seconds remaining for neighbor to send }
Hello message after restart.";
}
leaf neighbor-recovery-time-remaining { leaf unknown-messages-received {
type uint32; type yang:counter64;
units seconds; description
description "Unknown packet received count";
"Number of seconds remaining for neighbor to }
refresh."; }
} }
} // helper-mode grouping errors-state {
} // graceful-restart description
"Error statistics state grouping";
container errors {
description
"Error statistics state container";
leaf authenticate {
type yang:counter64;
description
"The total number of packets received with an
authentication failure.";
}
leaf hello-status { leaf checksum {
type enumeration { type yang:counter64;
enum "enabled" { description
description "The total number of packets received with an invalid
"Enabled"; checksum value.";
} }
enum "disabled" {
description
"Disabled";
}
enum "restarting" {
description
"Restarting";
}
}
description
"Hello status";
}
leaf interface { leaf packet-length {
type if:interface-ref; type yang:counter64;
description description
"Interface where RSVP neighbor was detected"; "The total number of packets received with an invalid
} packet length.";
}
}
}
leaf neighbor-state { grouping statistics-state {
type enumeration { description "RSVP statistic attributes.";
enum "up" { container statistics {
description config false;
"up"; description
} "statistics state container";
enum "down" { uses protocol-state;
description uses packets-state;
"down"; uses errors-state;
} }
enum "hello-disable" { }
description
"hello-disable";
}
enum "restarting" {
description
"restarting";
}
}
description
"Neighbor state";
}
leaf refresh-reduction-capable { grouping neighbor-derived-state {
type boolean; description
description "Derived state at neighbor level.";
"enables all RSVP refresh reduction message
bundling, RSVP message ID, reliable message delivery
and summary refresh";
reference
"RFC 2961 RSVP Refresh Overhead Reduction
Extensions";
}
leaf restart-count { }
type yang:counter32;
description
"Number of times this neighbor restart";
}
leaf restart-time { grouping global-attributes {
type yang:date-and-time; description
description "Top level grouping for RSVP global properties";
"Last restart time of the neighbor"; container sessions {
} description
} "RSVP sessions container";
list session-ip {
key "destination protocol-id destination-port";
config false;
description
"List of RSVP sessions";
grouping global-attributes { uses session-attributes-state;
description }
"Top level grouping for RSVP global properties"; }
container sessions { uses statistics-state;
description }
"RSVP sessions container";
list session {
key "local-index";
config false;
description
"List of RSVP sessions";
leaf local-index { grouping intf-attributes {
type leafref { description
path "../state/local-index"; "Top level grouping for RSVP interface properties";
} uses signaling-parameters;
description uses refresh-reduction;
"Reference to the local index for the RSVP uses hellos;
session"; uses authentication;
} uses statistics-state;
container state { }
config false;
description
"State information associated with RSVP
session parameters";
uses session-attributes-state;
}
}
}
uses statistics-state;
}
grouping intf-attributes { augment "/rt:routing/rt:control-plane-protocols/"
description + "rt:control-plane-protocol" {
"Top level grouping for RSVP interface properties"; when "rt:type = 'rsvp:rsvp'" {
uses signaling-parameters; description
uses refresh-reduction; "This augment is only valid when routing protocol
uses hellos; instance type is RSVP.";
uses authentication; }
uses statistics-state; description
} "RSVP protocol augmentation";
container rsvp {
presence "Enable RSVP feature";
description "RSVP feature container";
container globals {
description "RSVP global properties.";
uses global-attributes;
uses graceful-restart;
}
augment "/rt:routing/rt:control-plane-protocols/" container interfaces {
+ "rt:control-plane-protocol" { description
when "rt:type = 'rsvp:rsvp'" { "RSVP interfaces container";
description uses intf-attributes;
"This augment is only valid when routing protocol
instance type is RSVP.";
}
description
"RSVP protocol augmentation";
container rsvp {
presence "Enable RSVP feature";
description "RSVP feature container";
container globals {
description "RSVP global properties.";
uses global-attributes;
uses graceful-restart;
}
container interfaces { list interface {
description key "interface";
"RSVP interfaces container"; description
uses intf-attributes; "RSVP interfaces.";
leaf interface {
type if:interface-ref;
description
"RSVP interface.";
}
uses intf-attributes;
}
}
container neighbors {
description "RSVP neighbors container";
list neighbor {
key "address";
description "List of RSVP neighbors";
uses neighbor-attributes;
}
}
}
}
list interface { grouping session-ref {
key "interface"; description "Session reference information";
description leaf destination {
"RSVP interfaces."; type leafref {
path "/rt:routing/rt:control-plane-protocols" +
"/rt:control-plane-protocol/rsvp:rsvp/rsvp:globals" +
"/rsvp:sessions/rsvp:session-ip/destination";
}
mandatory true;
description "RSVP session";
}
leaf protocol-id {
type uint8;
mandatory true;
description "The RSVP session protocol ID";
}
leaf destination-port {
type inet:ip-address;
mandatory true;
description "The RSVP session destination port";
}
}
leaf interface { rpc clear-session {
type if:interface-ref; description "Clears RSVP sessions RPC";
description input {
"RSVP interface."; leaf routing-protocol-instance-name {
} type leafref {
uses intf-attributes; path "/rt:routing/rt:control-plane-protocols/"
} + "rt:control-plane-protocol/rt:name";
} }
mandatory "true";
description
"Name of the RSVP protocol instance whose session
is being cleared.
container neighbors { If the corresponding RSVP instance doesn't exist,
description "RSVP neighbors container"; then the operation will fail with an error-tag of
list neighbor { 'data-missing' and an error-app-tag of
key "address"; 'routing-protocol-instance-not-found'.";
description "List of RSVP neighbors"; }
uses neighbor-attributes; choice filter-type {
} mandatory true;
} description "Filter choice";
} case match-all {
} leaf all {
} type empty;
<CODE ENDS> mandatory true;
description "Match all RSVP sessions";
}
}
case match-one {
container session-info {
description
"Specifies the specific session to invoke operation on";
choice session-type {
mandatory true;
description "RSVP session type";
case rsvp-session-ip {
uses session-ref;
}
}
}
}
}
}
}
2.4. RSVP Extended YANG Model rpc clear-neighbor {
description
"RPC to clear the RSVP Hello session to a neighbor";
input {
leaf routing-protocol-instance-name {
type leafref {
path "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rt:name";
}
mandatory "true";
description
"Name of the RSVP protocol instance whose session
is being cleared.
If the corresponding RSVP instance doesn't exist,
then the operation will fail with an error-tag of
'data-missing' and an error-app-tag of
'routing-protocol-instance-not-found'.";
}
choice filter-type {
mandatory true;
description "Filter choice";
case match-all {
leaf all {
type empty;
mandatory true;
description "Match all RSVP neighbor sessions";
}
}
case match-one {
leaf neighbor-address {
type leafref {
path "/rt:routing/rt:control-plane-protocols" +
"/rt:control-plane-protocol/rsvp:rsvp" +
"/rsvp:neighbors/rsvp:neighbor/address";
}
mandatory true;
description "Match specific RSVP neighbor session";
}
}
}
}
}
}
<CODE ENDS>
2.5. RSVP Extended YANG Model
The RSVP extended YANG model covers non-core RSVP feature(s). It The RSVP extended YANG model covers non-core RSVP feature(s). It
also covers feature(s) that are not necessarily supported by all also covers feature(s) that are not necessarily supported by all
vendors, and hence, can be guarded with "if-feature" checks. vendors, and hence, can be guarded with "if-feature" checks.
2.4.1. Tree Diagram 2.5.1. Tree Diagram
Figure 4 shows the YANG tree representation for configuration and Figure 4 shows the YANG tree representation for configuration and
state data that is augmenting the RSVP extended module: state data that is augmenting the RSVP extended module:
module: ietf-rsvp-extended module: ietf-rsvp-extended
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:globals
/rsvp:graceful-restart: /rsvp:graceful-restart:
+--rw restart-time? uint32 +--rw restart-time? uint32
+--rw recovery-time? uint32 +--rw recovery-time? uint32
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:globals
/rsvp:statistics/rsvp:state/rsvp:packets: /rsvp:statistics/rsvp:packets:
+--ro discontinuity-time? yang:date-and-time +--ro discontinuity-time? yang:date-and-time
+--ro out-dropped? yang:counter64 +--ro out-dropped? yang:counter64
+--ro in-dropped? yang:counter64 +--ro in-dropped? yang:counter64
+--ro out-error? yang:counter64 +--ro out-errors? yang:counter64
+--ro in-error? yang:counter64 +--ro in-errors? yang:counter64
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:globals
/rsvp:statistics/rsvp:state/rsvp:messages: /rsvp:statistics/rsvp:messages:
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:globals
/rsvp:statistics/rsvp:state/rsvp:errors: /rsvp:statistics/rsvp:errors:
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 refresh-interval? uint32 +--rw refresh-interval? uint32
+--rw refresh-misses? uint32 +--rw refresh-misses? uint32
+--rw checksum? boolean +--rw checksum? boolean
+--rw patherr-state-removal? empty +--rw patherr-state-removal? empty
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:refresh-reduction: /rsvp:refresh-reduction:
+--rw bundle-message-max-size? uint32 +--rw bundle-message-max-size? uint32
skipping to change at page 32, line 23 skipping to change at page 33, line 31
/rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces
/rsvp:interface/rsvp:authentication: /rsvp:interface/rsvp:authentication:
+--rw lifetime? uint32 +--rw lifetime? uint32
+--rw window-size? uint32 +--rw window-size? uint32
+--rw challenge? empty +--rw challenge? empty
+--rw retransmits? uint32 +--rw retransmits? uint32
+--rw key-chain? key-chain:key-chain-ref +--rw key-chain? key-chain:key-chain-ref
Figure 4: RSVP extended model tree diagram Figure 4: RSVP extended model tree diagram
2.4.2. YANG Module 2.5.2. YANG Module
The ietf-rsvp-extended module imports from the following modules:
o ietf-rsvp defined in this document
o ietf-routing defined in [RFC8349]
o ietf-yang-types and ietf-inet-types defined in [RFC6991]
o ietf-key-chain defined in [RFC8177]
Figure 5 shows the RSVP extended YANG module: Figure 5 shows the RSVP extended YANG module:
<CODE BEGINS> file "ietf-rsvp-extended@2019-02-18.yang" <CODE BEGINS> file "ietf-rsvp-extended@2019-07-04.yang"
module ietf-rsvp-extended { module ietf-rsvp-extended {
yang-version 1.1; yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-extended"; namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-extended";
prefix "rsvp-ext"; prefix "rsvp-ext";
import ietf-rsvp { import ietf-rsvp {
prefix "rsvp"; prefix "rsvp";
reference reference
"RFCXXXX: A YANG Data Model for Resource Reservation Protocol "RFCXXXX: A YANG Data Model for Resource Reservation Protocol
(RSVP)"; (RSVP)";
} }
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
reference reference
skipping to change at page 33, line 18 skipping to change at page 34, line 34
prefix "key-chain"; prefix "key-chain";
reference "RFC8177: YANG Data Model for Key Chains"; reference "RFC8177: YANG Data Model for Key Chains";
} }
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@cisco.com> <mailto:tsaad@juniper.net>
Editor: Rakesh Gandhi Editor: Rakesh Gandhi
<mailto:rgandhi@cisco.com> <mailto:rgandhi@cisco.com>
Editor: Himanshu Shah Editor: Himanshu Shah
<mailto:hshah@ciena.com> <mailto:hshah@ciena.com>
Editor: Xufeng Liu Editor: Xufeng Liu
<mailto:Xufeng_Liu@jabil.com> <mailto:Xufeng_Liu@jabil.com>
skipping to change at page 34, line 4 skipping to change at page 35, line 14
<mailto:jescia.chenxia@huawei.com> <mailto:jescia.chenxia@huawei.com>
Editor: Raqib Jones Editor: Raqib Jones
<mailto:raqib@Brocade.com> <mailto:raqib@Brocade.com>
Editor: Bin Wen Editor: Bin Wen
<mailto:Bin_Wen@cable.comcast.com>"; <mailto:Bin_Wen@cable.comcast.com>";
description description
"This module contains the Extended RSVP YANG data model. "This module contains the Extended RSVP YANG data model.
The model fully conforms to the Network Management Datastore The model fully conforms to the Network Management Datastore
Architecture (NMDA). Architecture (NMDA).
Copyright (c) 2018 IETF Trust and the persons Copyright (c) 2019 IETF Trust and the persons
identified as authors of the code. All rights reserved. identified as authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or Redistribution and use in source and binary forms, with or
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 "2019-02-18" { revision "2019-07-04" {
description description
"A YANG Data Model for Extended Resource Reservation "A YANG Data Model for Extended Resource Reservation
Protocol"; Protocol";
reference reference
"RFCXXXX: A YANG Data Model for Extended Resource Reservation "RFCXXXX: A YANG Data Model for Resource Reservation Protocol
Protocol (RSVP)"; (RSVP)";
} }
/* RSVP features */ /* RSVP features */
feature authentication { feature authentication {
description description
"Indicates support for RSVP authentication"; "Indicates support for RSVP authentication";
} }
feature error-statistics { feature error-statistics {
description description
skipping to change at page 40, line 9 skipping to change at page 41, line 19
description description
"Out packet drop count"; "Out packet drop count";
} }
leaf in-dropped { leaf in-dropped {
type yang:counter64; type yang:counter64;
description description
"In packet drop count"; "In packet drop count";
} }
leaf out-error { leaf out-errors {
type yang:counter64; type yang:counter64;
description description
"Out packet error count"; "Out packet errors count";
} }
leaf in-error { leaf in-errors {
type yang:counter64; type yang:counter64;
description description
"In packet rx error count"; "In packet rx errors count";
} }
} }
grouping protocol-extended-state { grouping protocol-extended-state {
description "RSVP protocol statistics."; description "RSVP protocol statistics.";
} }
grouping errors-extended-state { grouping errors-extended-state {
description description
"Error statistics."; "Error statistics.";
skipping to change at page 41, line 6 skipping to change at page 42, line 17
"rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" +
"rsvp:graceful-restart" { "rsvp:graceful-restart" {
description description
"RSVP globals configuration extensions"; "RSVP globals configuration extensions";
uses graceful-restart-extended-config; uses graceful-restart-extended-config;
} }
/* RSVP statistics augmentation */ /* RSVP statistics augmentation */
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:globals/" +
"rsvp:statistics/rsvp:state/rsvp:packets" { "rsvp:statistics/rsvp:packets" {
description description
"RSVP packet stats extensions"; "RSVP packet stats extensions";
uses packets-extended-state; uses packets-extended-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:globals/" +
"rsvp:statistics/rsvp:state/rsvp:messages" { "rsvp:statistics/rsvp:messages" {
description description
"RSVP protocol message stats extensions"; "RSVP protocol message stats extensions";
uses protocol-extended-state; uses protocol-extended-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:globals/" +
"rsvp:statistics/rsvp:state/rsvp:errors" { "rsvp:statistics/rsvp:errors" {
description description
"RSVP errors stats extensions"; "RSVP errors stats extensions";
uses errors-extended-state; uses errors-extended-state;
} }
/** /**
* RSVP all interfaces extensions * RSVP all interfaces extensions
*/ */
/* RSVP interface signaling extensions */ /* RSVP interface signaling extensions */
skipping to change at page 43, line 41 skipping to change at page 45, line 7
prefix: ietf-rsvp prefix: ietf-rsvp
reference: RFCXXXX reference: RFCXXXX
name: ietf-rsvp-extended name: ietf-rsvp-extended
namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp-extended namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp-extended
prefix: ietf-rsvp-extendeed prefix: ietf-rsvp-extendeed
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 specified in this document defines a schema for data
the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the that is designed to be accessed via network management protocols such
secure transport layer and the mandatory-to-implement secure as NETCONF [RFC6241] or RESTCONF [RFC8040]. The lowest NETCONF layer
transport is SSH [RFC6242]. The NETCONF access control model is the secure transport layer, and the mandatory-to-implement secure
[RFC8341] provides means to restrict access for particular NETCONF transport is Secure Shell (SSH) [RFC6242]. The lowest RESTCONF layer
is HTTPS, and the mandatory-to-implement secure transport is TLS
[RFC8446].
users to a pre-configured subset of all available NETCONF protocol The Network Configuration Access Control Model (NACM) [RFC8341]
operations and content. provides the means to restrict access for particular NETCONF or
RESTCONF users to a preconfigured subset of all available NETCONF or
RESTCONF protocol operations and content.
There are a number of data nodes defined in the YANG module which are There are a number of data nodes defined in the YANG module which are
writable/creatable/deletable (i.e., config true, which is the writable/creatable/deletable (i.e., config true, which is the
default). These data nodes may be considered sensitive or vulnerable default). These data nodes may be considered sensitive or vulnerable
in some network environments. Write operations (e.g., <edit-config>) in some network environments. Write operations (e.g., <edit-config>)
to these data nodes without proper protection can have a negative to these data nodes without proper protection can have a negative
effect on network operations. effect on network operations.
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
rsvp:
The presence of this container enables the RSVP protocol
functionality on a device. It alsocontrols the configuration
settings on data nodes pertaining to RSVP sessions, interfaces and
neighbors. All of which are considered sensitive and if access to
either of these is compromised, it can result in temporary network
outages or be employed to mount DoS attacks.
For RSVP authentication, the configuration supported is via the
specification of key-chains [RFC8177] or the direct specification of
key and authentication algorithm, and hence security considerations
of [RFC8177] are inherited. This includes the considerations with
respect to the local storage and handling of authentication keys.
Some of the RPC operations defined in this YANG module may be
considered sensitive or vulnerable in some network environments. It
is thus important to control access to these operations. The RSVP
YANG module support the "clear-session" and "clear-neighbor" RPCs.
If access to either of these is compromised, they can result in
temporary network outages be employed to mount DoS attacks.
The security considerations spelled out in the YANG 1.1 specification
[RFC7950] apply for this document as well.
5. Acknowledgement 5. Acknowledgement
The authors would like to thank Lou Berger for reviewing and The authors would like to thank Lou Berger for reviewing and
providing valuable feedback on this document. providing valuable feedback on this document.
6. Contributors 6. Contributors
Himanshu Shah
Ciena
Email: hshah@ciena.com
Xia Chen Xia Chen
Huawei Technologies Huawei Technologies
Email: jescia.chenxia@huawei.com Email: jescia.chenxia@huawei.com
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. Normative References
[I-D.ietf-netconf-subscribed-notifications]
Voit, E., Clemm, A., Prieto, A., Nilsen-Nygaard, E., and
A. Tripathy, "Subscription to YANG Event Notifications",
draft-ietf-netconf-subscribed-notifications-26 (work in
progress), May 2019.
[I-D.ietf-netconf-yang-push]
Clemm, A. and E. Voit, "Subscription to YANG Datastores",
draft-ietf-netconf-yang-push-25 (work in progress), May
2019.
[I-D.ietf-teas-yang-rsvp-te] [I-D.ietf-teas-yang-rsvp-te]
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 RSVP-TE", draft-ietf- and H. Shah, "A YANG Data Model for RSVP-TE Protocol",
teas-yang-rsvp-te-04 (work in progress), October 2018. draft-ietf-teas-yang-rsvp-te-06 (work in progress), April
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>.
skipping to change at page 46, line 9 skipping to change at page 48, line 27
<https://www.rfc-editor.org/info/rfc6242>. <https://www.rfc-editor.org/info/rfc6242>.
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types",
RFC 6991, DOI 10.17487/RFC6991, July 2013, RFC 6991, DOI 10.17487/RFC6991, July 2013,
<https://www.rfc-editor.org/info/rfc6991>. <https://www.rfc-editor.org/info/rfc6991>.
[RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language", [RFC7950] Bjorklund, M., Ed., "The YANG 1.1 Data Modeling Language",
RFC 7950, DOI 10.17487/RFC7950, August 2016, RFC 7950, DOI 10.17487/RFC7950, August 2016,
<https://www.rfc-editor.org/info/rfc7950>. <https://www.rfc-editor.org/info/rfc7950>.
[RFC8040] Bierman, A., Bjorklund, M., and K. Watsen, "RESTCONF
Protocol", RFC 8040, DOI 10.17487/RFC8040, January 2017,
<https://www.rfc-editor.org/info/rfc8040>.
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
May 2017, <https://www.rfc-editor.org/info/rfc8174>. May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[RFC8177] Lindem, A., Ed., Qu, Y., Yeung, D., Chen, I., and J.
Zhang, "YANG Data Model for Key Chains", RFC 8177,
DOI 10.17487/RFC8177, June 2017,
<https://www.rfc-editor.org/info/rfc8177>.
[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>.
[RFC8343] Bjorklund, M., "A YANG Data Model for Interface
Management", RFC 8343, DOI 10.17487/RFC8343, March 2018,
<https://www.rfc-editor.org/info/rfc8343>.
[RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for [RFC8349] Lhotka, L., Lindem, A., and Y. Qu, "A YANG Data Model for
Routing Management (NMDA Version)", RFC 8349, Routing Management (NMDA Version)", RFC 8349,
DOI 10.17487/RFC8349, March 2018, DOI 10.17487/RFC8349, March 2018,
<https://www.rfc-editor.org/info/rfc8349>. <https://www.rfc-editor.org/info/rfc8349>.
[RFC8446] Rescorla, E., "The Transport Layer Security (TLS) Protocol
Version 1.3", RFC 8446, DOI 10.17487/RFC8446, August 2018,
<https://www.rfc-editor.org/info/rfc8446>.
Authors' Addresses Authors' Addresses
Vishnu Pavan Beeram Vishnu Pavan Beeram
Juniper Networks Juniper Networks
Email: vbeeram@juniper.net Email: vbeeram@juniper.net
Tarek Saad (editor) Tarek Saad
Cisco Systems, Inc. Juniper Networks
Email: tsaad@cisco.com Email: tsaad@juniper.net
Rakesh Gandhi Rakesh Gandhi
Cisco Systems, Inc. Cisco Systems, Inc.
Email: rgandhi@cisco.com Email: rgandhi@cisco.com
Xufeng Liu Xufeng Liu
Jabil Jabil
Email: Xufeng_Liu@jabil.com Email: Xufeng_Liu@jabil.com
skipping to change at page 47, line 4 skipping to change at page 49, line 35
Rakesh Gandhi Rakesh Gandhi
Cisco Systems, Inc. Cisco Systems, Inc.
Email: rgandhi@cisco.com Email: rgandhi@cisco.com
Xufeng Liu Xufeng Liu
Jabil Jabil
Email: Xufeng_Liu@jabil.com Email: Xufeng_Liu@jabil.com
Igor Bryskin Igor Bryskin
Huawei Technologies Huawei Technologies
Email: Igor.Bryskin@huawei.com Email: Igor.Bryskin@huawei.com
Himanshu Shah
Ciena
Email: hshah@ciena.com
 End of changes. 183 change blocks. 
1071 lines changed or deleted 1199 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/