draft-ietf-teas-yang-rsvp-07.txt   draft-ietf-teas-yang-rsvp-08.txt 
TEAS Working Group V. Beeram TEAS Working Group V. Beeram
Internet-Draft Juniper Networks Internet-Draft Juniper Networks
Intended status: Standards Track T. Saad, Ed. Intended status: Standards Track T. Saad, Ed.
Expires: September 11, 2017 R. Gandhi Expires: May 2, 2018 R. Gandhi
Cisco Systems, Inc. Cisco Systems, Inc.
X. Liu X. Liu
Jabil Jabil
I. Bryskin I. Bryskin
Huawei Technologies Huawei Technologies
H. Shah H. Shah
Ciena Ciena
March 10, 2017 October 29, 2017
A YANG Data Model for Resource Reservation Protocol (RSVP) A YANG Data Model for Resource Reservation Protocol (RSVP)
draft-ietf-teas-yang-rsvp-07 draft-ietf-teas-yang-rsvp-08
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 RVSP 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 procedural calls, and event notifications data.
skipping to change at page 1, line 43 skipping to change at page 1, line 43
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF). Note that other groups may also distribute Task Force (IETF). Note that other groups may also distribute
working documents as Internet-Drafts. The list of current Internet- working documents as Internet-Drafts. The list of current Internet-
Drafts is at http://datatracker.ietf.org/drafts/current/. Drafts is at http://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
This Internet-Draft will expire on September 11, 2017. This Internet-Draft will expire on May 2, 2018.
Copyright Notice Copyright Notice
Copyright (c) 2017 IETF Trust and the persons identified as the Copyright (c) 2017 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents Provisions Relating to IETF Documents
(http://trustee.ietf.org/license-info) in effect on the date of (http://trustee.ietf.org/license-info) in effect on the date of
publication of this document. Please review these documents publication of this document. Please review these documents
skipping to change at page 2, line 23 skipping to change at page 2, line 23
described in the Simplified BSD License. described in the Simplified BSD License.
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2
1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 4 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 4
2. Design Considerations . . . . . . . . . . . . . . . . . . . . 5 2. Design Considerations . . . . . . . . . . . . . . . . . . . . 5
2.1. Module Hierarchy . . . . . . . . . . . . . . . . . . . . 5 2.1. Module Hierarchy . . . . . . . . . . . . . . . . . . . . 5
2.2. Data Organization . . . . . . . . . . . . . . . . . . . . 6 2.2. State Data Organization . . . . . . . . . . . . . . . . . 6
2.3. Configuration Inheritance . . . . . . . . . . . . . . . . 7 2.3. Configuration Inheritance . . . . . . . . . . . . . . . . 6
3. Model Organization . . . . . . . . . . . . . . . . . . . . . 7 3. Model Organization . . . . . . . . . . . . . . . . . . . . . 7
3.1. RSVP Base YANG Model . . . . . . . . . . . . . . . . . . 7 3.1. RSVP Base YANG Model . . . . . . . . . . . . . . . . . . 7
3.1.1. Global Data . . . . . . . . . . . . . . . . . . . . . 9 3.1.1. Global Data . . . . . . . . . . . . . . . . . . . . . 8
3.1.2. Interface Data . . . . . . . . . . . . . . . . . . . 9 3.1.2. Interface Data . . . . . . . . . . . . . . . . . . . 8
3.1.3. Neighbor Data . . . . . . . . . . . . . . . . . . . . 9 3.1.3. Neighbor Data . . . . . . . . . . . . . . . . . . . . 9
3.1.4. Session Data . . . . . . . . . . . . . . . . . . . . 9 3.1.4. Session Data . . . . . . . . . . . . . . . . . . . . 9
3.1.5. Tree Diagram . . . . . . . . . . . . . . . . . . . . 9 3.1.5. Tree Diagram . . . . . . . . . . . . . . . . . . . . 9
3.1.6. YANG Module . . . . . . . . . . . . . . . . . . . . . 14 3.1.6. YANG Module . . . . . . . . . . . . . . . . . . . . . 13
3.2. RSVP Extended YANG Model . . . . . . . . . . . . . . . . 33 3.2. RSVP Extended YANG Model . . . . . . . . . . . . . . . . 31
3.2.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 34 3.2.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 32
3.2.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 40 3.2.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 33
4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 52 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 44
5. Security Considerations . . . . . . . . . . . . . . . . . . . 52 5. Security Considerations . . . . . . . . . . . . . . . . . . . 44
6. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 52 6. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 44
7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 53 7. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 45
8. References . . . . . . . . . . . . . . . . . . . . . . . . . 53 8. References . . . . . . . . . . . . . . . . . . . . . . . . . 45
8.1. Normative References . . . . . . . . . . . . . . . . . . 53 8.1. Normative References . . . . . . . . . . . . . . . . . . 45
8.2. Informative References . . . . . . . . . . . . . . . . . 54 8.2. Informative References . . . . . . . . . . . . . . . . . 46
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 55 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 47
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 6, line 39 skipping to change at page 6, line 39
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 non-basic configuration(s) for
RSVP feature(s) as well as optional RSVP feature that are not a must RSVP feature(s) as well as optional RSVP feature that are not a must
for basic RSVP operation. for basic RSVP operation.
2.2. Data Organization 2.2. State Data Organization
Throughout the model, the approach described in
[I-D.openconfig-netmod-opstate] is adopted to represent data
pertaining to configuration intended state, applied state and derived
state data elements. Each container in the model hold a "config" and
"state" sub-container.
The "config" sub-container is used to represent the intended
configurable parameters, and the state sub-container is used to
represent both the applied configurable parameters and any derived
state, such as counters or statistical information.
The decision to use this approach was made to better align with the
MPLS consolidated model in [I-D.openconfig-mpls-consolidated-model],
and maximize reusability of groupings defined in this document and
allow for possible convergence between the two models.
The approach described in [I-D.openconfig-netmod-opstate] allows for
modeling the respective intended and applied configuration and
derived state. The state data can be categorized into one of the
following:
o State corresponding to applied configuration
o State corresponding to derived state, counters, stats, etc.
Pure state data (for example, protocol derived data) is placed inside The Network Management Datastore Architecture (NMDA)
the "state" sub-container, as shown in Figure 2. [I-D.dsdt-nmda-guidelines] addresses the "OpState" that was discussed
in the IETF. As per NMDA guidelines for new models and models that
are not concerned with the operational state of configuration
information, this revision of the draft adopts the NMDA proposal for
configuration and state data of this model.
2.3. Configuration Inheritance 2.3. Configuration Inheritance
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
skipping to change at page 9, line 38 skipping to change at page 9, line 19
future revisions. future revisions.
3.1.4. Session Data 3.1.4. Session Data
This branch of the data model covers configuration of elements This branch of the data model covers configuration of elements
relevant to RSVP sessions. This would be discussed in detail in relevant to RSVP sessions. This would be discussed in detail in
future revisions. future revisions.
3.1.5. Tree Diagram 3.1.5. Tree Diagram
module: ietf-rsvp module: ietf-rsvp
augment augment
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol: /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol:
+--rw rsvp! +--rw rsvp!
+--rw globals +--rw globals
| +--rw sessions | +--rw sessions
| | +--ro session* [local-index] | | +--ro session* [local-index]
| | +--ro local-index -> ../state/local-index | | +--ro local-index -> ../state/local-index
| | +--ro state | | +--ro state
| | +--ro local-index? uint64 | | +--ro local-index? uint64
| | +--ro destination-port? inet:port-number | | +--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
| +--rw statistics | +--rw statistics
| | +--ro state | | +--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-len? yang:counter64 | | +--ro packet-len? yang:counter64
| +--rw graceful-restart | +--rw graceful-restart
| +--rw config | +--rw enabled? boolean
| | +--rw enabled? boolean +--rw interfaces
| +--ro state | +--rw refresh-reduction
| +--ro enabled? boolean | | +--rw enabled? boolean
+--rw interfaces | +--rw hellos
| +--rw config | | +--rw enabled? boolean
| +--ro state | +--rw authentication
| +--rw refresh-reduction | | +--rw enabled? boolean
| | +--rw config | | +--rw authentication-key? string
| | | +--rw enabled? boolean | | +--rw crypto-algorithm identityref
| | +--ro state | +--rw statistics
| | +--ro enabled? boolean | | +--ro state
| +--rw hellos | | +--ro messages
| | +--rw config | | | +--ro ack-sent? yang:counter64
| | | +--rw enabled? boolean | | | +--ro ack-received? yang:counter64
| | +--ro state | | | +--ro bundle-sent? yang:counter64
| | +--ro enabled? boolean | | | +--ro bundle-received? yang:counter64
| +--rw authentication | | | +--ro hello-sent? yang:counter64
| | +--rw config | | | +--ro hello-received? yang:counter64
| | | +--rw enabled? boolean | | | +--ro integrity-challenge-sent? yang:counter64
| | | +--rw authentication-key? string | | | +--ro integrity-challenge-received? yang:counter64
| | | +--rw crypto-algorithm identityref | | | +--ro integrity-response-sent? yang:counter64
| | +--ro state | | | +--ro integrity-response-received? yang:counter64
| | +--ro enabled? boolean | | | +--ro notify-sent? yang:counter64
| | +--ro authentication-key? string | | | +--ro notify-received? yang:counter64
| | +--ro crypto-algorithm identityref | | | +--ro path-sent? yang:counter64
| +--rw statistics | | | +--ro path-received? yang:counter64
| | +--ro state | | | +--ro path-err-sent? yang:counter64
| | +--ro messages | | | +--ro path-err-received? yang:counter64
| | | +--ro ack-sent? yang:counter64 | | | +--ro path-tear-sent? yang:counter64
| | | +--ro ack-received? yang:counter64 | | | +--ro path-tear-received? yang:counter64
| | | +--ro bundle-sent? yang:counter64 | | | +--ro resv-sent? yang:counter64
| | | +--ro bundle-received? yang:counter64 | | | +--ro resv-received? yang:counter64
| | | +--ro hello-sent? yang:counter64 | | | +--ro resv-confirm-sent? yang:counter64
| | | +--ro hello-received? yang:counter64 | | | +--ro resv-confirm-received? yang:counter64
| | | +--ro integrity-challenge-sent? yang:counter64 | | | +--ro resv-err-sent? yang:counter64
| | | +--ro integrity-challenge-received? yang:counter64 | | | +--ro resv-err-received? yang:counter64
| | | +--ro integrity-response-sent? yang:counter64 | | | +--ro resv-tear-sent? yang:counter64
| | | +--ro integrity-response-received? yang:counter64 | | | +--ro resv-tear-received? yang:counter64
| | | +--ro notify-sent? yang:counter64 | | | +--ro summary-refresh-sent? yang:counter64
| | | +--ro notify-received? yang:counter64 | | | +--ro summary-refresh-received? yang:counter64
| | | +--ro path-sent? yang:counter64 | | | +--ro unknown-messages-received? yang:counter64
| | | +--ro path-received? yang:counter64 | | +--ro packets
| | | +--ro path-err-sent? yang:counter64 | | | +--ro sent? yang:counter64
| | | +--ro path-err-received? yang:counter64 | | | +--ro received? yang:counter64
| | | +--ro path-tear-sent? yang:counter64 | | +--ro errors
| | | +--ro path-tear-received? yang:counter64 | | +--ro authenticate? yang:counter64
| | | +--ro resv-sent? yang:counter64 | | +--ro checksum? yang:counter64
| | | +--ro resv-received? yang:counter64 | | +--ro packet-len? yang:counter64
| | | +--ro resv-confirm-sent? yang:counter64 | +--rw interface* [interface]
| | | +--ro resv-confirm-received? yang:counter64 | +--rw interface if:interface-ref
| | | +--ro resv-err-sent? yang:counter64 | +--rw refresh-reduction
| | | +--ro resv-err-received? yang:counter64 | | +--rw enabled? boolean
| | | +--ro resv-tear-sent? yang:counter64 | +--rw hellos
| | | +--ro resv-tear-received? yang:counter64 | | +--rw enabled? boolean
| | | +--ro summary-refresh-sent? yang:counter64 | +--rw authentication
| | | +--ro summary-refresh-received? yang:counter64 | | +--rw enabled? boolean
| | | +--ro unknown-messages-received? yang:counter64 | | +--rw authentication-key? string
| | +--ro packets | | +--rw crypto-algorithm identityref
| | | +--ro sent? yang:counter64 | +--rw statistics
| | | +--ro received? yang:counter64 | +--ro state
| | +--ro errors | +--ro messages
| | +--ro authenticate? yang:counter64 | | +--ro ack-sent?
| | +--ro checksum? yang:counter64 yang:counter64
| | +--ro packet-len? yang:counter64 | | +--ro ack-received?
| +--rw interface* [interface] yang:counter64
| +--rw interface if:interface-ref | | +--ro bundle-sent?
| +--rw config yang:counter64
| +--ro state | | +--ro bundle-received?
| +--rw refresh-reduction yang:counter64
| | +--rw config | | +--ro hello-sent?
| | | +--rw enabled? boolean yang:counter64
| | +--ro state | | +--ro hello-received?
| | +--ro enabled? boolean yang:counter64
| +--rw hellos | | +--ro integrity-challenge-sent?
| | +--rw config yang:counter64
| | | +--rw enabled? boolean | | +--ro integrity-challenge-received?
| | +--ro state yang:counter64
| | +--ro enabled? boolean | | +--ro integrity-response-sent?
| +--rw authentication yang:counter64
| | +--rw config | | +--ro integrity-response-received?
| | | +--rw enabled? boolean yang:counter64
| | | +--rw authentication-key? string | | +--ro notify-sent?
| | | +--rw crypto-algorithm identityref yang:counter64
| | +--ro state | | +--ro notify-received?
| | +--ro enabled? boolean yang:counter64
| | +--ro authentication-key? string | | +--ro path-sent?
| | +--ro crypto-algorithm identityref yang:counter64
| +--rw statistics | | +--ro path-received?
| +--ro state yang:counter64
| +--ro messages | | +--ro path-err-sent?
| | +--ro ack-sent? yang:counter64 yang:counter64
| | +--ro ack-received? yang:counter64 | | +--ro path-err-received?
| | +--ro bundle-sent? yang:counter64 yang:counter64
| | +--ro bundle-received? yang:counter64 | | +--ro path-tear-sent?
| | +--ro hello-sent? yang:counter64 yang:counter64
| | +--ro hello-received? yang:counter64 | | +--ro path-tear-received?
| | +--ro integrity-challenge-sent? yang:counter64 yang:counter64
| | +--ro integrity-challenge-received? yang:counter64 | | +--ro resv-sent?
| | +--ro integrity-response-sent? yang:counter64 yang:counter64
| | +--ro integrity-response-received? yang:counter64 | | +--ro resv-received?
| | +--ro notify-sent? yang:counter64 yang:counter64
| | +--ro notify-received? yang:counter64 | | +--ro resv-confirm-sent?
| | +--ro path-sent? yang:counter64 yang:counter64
| | +--ro path-received? yang:counter64 | | +--ro resv-confirm-received?
| | +--ro path-err-sent? yang:counter64 yang:counter64
| | +--ro path-err-received? yang:counter64 | | +--ro resv-err-sent?
| | +--ro path-tear-sent? yang:counter64 yang:counter64
| | +--ro path-tear-received? yang:counter64 | | +--ro resv-err-received?
| | +--ro resv-sent? yang:counter64 yang:counter64
| | +--ro resv-received? yang:counter64 | | +--ro resv-tear-sent?
| | +--ro resv-confirm-sent? yang:counter64 yang:counter64
| | +--ro resv-confirm-received? yang:counter64 | | +--ro resv-tear-received?
| | +--ro resv-err-sent? yang:counter64 yang:counter64
| | +--ro resv-err-received? yang:counter64 | | +--ro summary-refresh-sent?
| | +--ro resv-tear-sent? yang:counter64 yang:counter64
| | +--ro resv-tear-received? yang:counter64 | | +--ro summary-refresh-received?
| | +--ro summary-refresh-sent? yang:counter64 yang:counter64
| | +--ro summary-refresh-received? yang:counter64 | | +--ro unknown-messages-received?
| | +--ro unknown-messages-received? yang:counter64 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-len? yang:counter64 | +--ro packet-len? yang:counter64
+--rw neighbors +--rw neighbors
+--rw neighbor* [address] +--rw neighbor* [address]
+--rw address -> ../config/address +--rw address inet:ip-address
+--rw config +--ro state
| +--rw address? inet:ip-address +--ro address? inet:ip-address
+--ro state +--ro epoch? uint32
+--ro address? inet:ip-address +--ro expiry-time? uint32
+--ro epoch? uint32 +--ro graceful-restart
+--ro expiry-time? uint32 | +--ro enabled? boolean
+--ro graceful-restart | +--ro local-restart-time? uint32
| +--ro enabled? boolean | +--ro local-recovery-time? uint32
| +--ro local-restart-time? uint32 | +--ro neighbor-restart-time? uint32
| +--ro local-recovery-time? uint32 | +--ro neighbor-recovery-time? uint32
| +--ro neighbor-restart-time? uint32 | +--ro helper-mode
| +--ro neighbor-recovery-time? uint32 | +--ro enabled? boolean
| +--ro helper-mode | +--ro max-helper-restart-time? uint32
| +--ro enabled? boolean | +--ro max-helper-recovery-time? uint32
| +--ro max-helper-restart-time? uint32 | +--ro neighbor-restart-time-remaining? uint32
| +--ro max-helper-recovery-time? uint32 | +--ro neighbor-recovery-time-remaining? uint32
| +--ro neighbor-restart-time-remaining? uint32 +--ro hello-status? enumeration
| +--ro neighbor-recovery-time-remaining? uint32 +--ro interface? if:interface-ref
+--ro hello-status? enumeration +--ro neighbor-state? enumeration
+--ro interface? if:interface-ref +--ro refresh-reduction-capable? boolean
+--ro neighbor-state? enumeration +--ro restart-count? yang:counter32
+--ro refresh-reduction-capable? boolean +--ro restart-time? yang:date-and-time
+--ro restart-count? yang:counter32
+--ro restart-time? yang:date-and-time
Figure 3: RSVP model tree diagram Figure 3: RSVP model tree diagram
3.1.6. YANG Module 3.1.6. YANG Module
<CODE BEGINS> file "ietf-rsvp@2017-03-10.yang" <CODE BEGINS> file "ietf-rsvp@2017-10-29.yang"
module ietf-rsvp { module ietf-rsvp {
namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp"; namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp";
/* Replace with IANA when assigned */ /* Replace with IANA when assigned */
prefix "rsvp"; prefix "rsvp";
import ietf-interfaces { import ietf-interfaces {
prefix "if"; prefix "if";
} }
import ietf-inet-types { import ietf-inet-types {
prefix inet; prefix inet;
} }
skipping to change at page 15, line 42 skipping to change at page 15, line 20
Editor: Raqib Jones Editor: Raqib Jones
<mailto:raqib@Brocade.com> <mailto:raqib@Brocade.com>
Editor: Bin Wen Editor: Bin Wen
<mailto:Bin_Wen@cable.comcast.com>"; <mailto:Bin_Wen@cable.comcast.com>";
description description
"This module contains the RSVP YANG data model."; "This module contains the RSVP YANG data model.";
revision "2017-03-10" { revision "2017-10-29" {
description "Latest revision of RSVP yang module."; description "Latest revision of RSVP yang module.";
reference "RFC2205"; reference "RFC2205";
} }
identity rsvp { identity rsvp {
base "rt:routing-protocol"; base "rt:routing-protocol";
description "RSVP protocol"; description "RSVP protocol";
} }
identity rsvp-session-type { identity rsvp-session-type {
skipping to change at page 17, line 9 skipping to change at page 16, line 34
'false' if RSVP Graceful Restart is disabled."; 'false' if RSVP Graceful Restart is disabled.";
} }
} }
grouping graceful-restart { grouping graceful-restart {
description description
"RSVP graceful restart parameters grouping"; "RSVP graceful restart parameters grouping";
container graceful-restart { container graceful-restart {
description description
"RSVP graceful restart parameters container"; "RSVP graceful restart parameters container";
container config { uses graceful-restart_config;
description
"Configuration parameters for graceful restart
properties";
uses graceful-restart_config;
}
container state {
config false;
description
"State parameters for graceful restart
properties";
uses graceful-restart_config;
}
} }
} }
grouping refresh-reduction_config { grouping refresh-reduction_config {
description description
"Configuration parameters relating to RSVP "Configuration parameters relating to RSVP
refresh reduction"; refresh reduction";
leaf enabled { leaf enabled {
type boolean; type boolean;
skipping to change at page 17, line 46 skipping to change at page 17, line 11
} }
grouping refresh-reduction { grouping refresh-reduction {
description description
"Top level grouping for RSVP refresh reduction "Top level grouping for RSVP refresh reduction
parameters"; parameters";
container refresh-reduction { container refresh-reduction {
description description
"Top level container for RSVP refresh reduction "Top level container for RSVP refresh reduction
parameters"; parameters";
container config { uses refresh-reduction_config;
description
"Configuration parameters relating to
RSVP refresh reduction parameters";
uses refresh-reduction_config;
}
container state {
config false;
description
"State information associated with RSVP
refresh reduction parameters";
uses refresh-reduction_config;
}
} }
} }
grouping authentication_config { grouping authentication_config {
description description
"Configuration parameters relating to RSVP "Configuration parameters relating to RSVP
authentication"; authentication";
leaf enabled { leaf enabled {
type boolean; type boolean;
description description
skipping to change at page 18, line 48 skipping to change at page 17, line 49
} }
} }
grouping authentication { grouping authentication {
description description
"Top level grouping for RSVP authentication parameters"; "Top level grouping for RSVP authentication parameters";
container authentication { container authentication {
description description
"Top level container for RSVP authentication "Top level container for RSVP authentication
parameters"; parameters";
container config { uses authentication_config;
description
"Configuration parameters relating to
RSVP authentication parameters";
uses authentication_config;
}
container state {
config false;
description
"State information associated with RSVP
authentication parameters";
uses authentication_config;
}
} }
} }
grouping hellos_config { grouping hellos_config {
description description
"Configuration parameters relating to RSVP "Configuration parameters relating to RSVP
hellos"; hellos";
leaf enabled { leaf enabled {
type boolean; type boolean;
description description
"'true' if RSVP Hello is enabled. "'true' if RSVP Hello is enabled.
'false' if RSVP Hello is disabled."; 'false' if RSVP Hello is disabled.";
} }
skipping to change at page 19, line 35 skipping to change at page 18, line 22
'false' if RSVP Hello is disabled."; 'false' if RSVP Hello is disabled.";
} }
} }
grouping hellos { grouping hellos {
description description
"Top level grouping for RSVP hellos parameters"; "Top level grouping for RSVP hellos parameters";
container hellos { container hellos {
description description
"Top level container for RSVP hello parameters"; "Top level container for RSVP hello parameters";
container config { uses hellos_config;
description
"Configuration parameters relating to
RSVP hello parameters";
uses hellos_config;
}
container state {
config false;
description
"State information associated with RSVP
hello parameters";
uses hellos_config;
}
} }
} }
grouping signaling-parameters_config { grouping signaling-parameters_config {
description description
"Configuration parameters relating to RSVP "Configuration parameters relating to RSVP
signaling"; signaling";
} }
grouping signaling-parameters { grouping signaling-parameters {
description description
"Top level grouping for RSVP signaling parameters"; "Top level grouping for RSVP signaling parameters";
container config { uses signaling-parameters_config;
description
"Configuration parameters relating to
RSVP signaling parameters";
uses signaling-parameters_config;
}
container state {
config false;
description
"State information associated with RSVP
signaling parameters";
uses signaling-parameters_config;
}
} }
grouping session-attributes_state { grouping session-attributes_state {
description description
"Top level grouping for RSVP session properties"; "Top level grouping for RSVP session properties";
leaf local-index { leaf local-index {
type uint64; type uint64;
description description
"The index used to identify the RSVP session "The index used to identify the RSVP session
on the local network element. This index is on the local network element. This index is
skipping to change at page 22, line 24 skipping to change at page 20, line 36
units seconds; units seconds;
description "Time to reservation expiry (in seconds)"; description "Time to reservation expiry (in seconds)";
} }
} }
} }
} }
grouping neighbor-attributes { grouping neighbor-attributes {
description description
"Top level grouping for RSVP neighbor properties"; "Top level grouping for RSVP neighbor properties";
container config { leaf address {
type inet:ip-address;
description description
"Configuration for neighbor properties"; "Address of RSVP neighbor";
leaf address {
type inet:ip-address;
description
"Address of RSVP neighbor";
}
} }
container state { container state {
config false; config false;
description description
"State information associated with RSVP "State information associated with RSVP
neighbor properties"; neighbor properties";
uses neighbor-derived_state; uses neighbor-derived_state;
} }
} }
skipping to change at page 33, line 21 skipping to change at page 31, line 29
leaf interface { leaf interface {
type if:interface-ref; type if:interface-ref;
description description
"RSVP interface."; "RSVP interface.";
} }
uses intf-attributes; uses intf-attributes;
} }
} }
container neighbors { container neighbors {
description description "RSVP neighbors container";
"RSVP neighbors container";
list neighbor { list neighbor {
key "address"; key "address";
description description "List of RSVP neighbors";
"List of RSVP neighbors";
leaf address {
type leafref {
path "../config/address";
}
description
"Address of RSVP neighbor";
}
uses neighbor-attributes; uses neighbor-attributes;
} }
} }
} }
} }
} }
<CODE ENDS> <CODE ENDS>
3.2. RSVP Extended YANG Model 3.2. RSVP Extended YANG Model
The RSVP extended YANG model covers optional or non-core RSVP The RSVP extended YANG model covers optional or non-core RSVP
feature(s). It also covers feature(s) that are not necessarily feature(s). It also covers feature(s) that are not necessarily
supported by all vendors, and hence, guarded with "if-feature" supported by all vendors, and hence, guarded with "if-feature"
checks. checks.
3.2.1. Tree Diagram 3.2.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 basic module: state data that is augmenting the RSVP basic module:
module: ietf-rsvp module: ietf-rsvp-extended
augment augment
/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol: /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
+--rw rsvp! rsvp:rsvp/rsvp:globals/rsvp:graceful-restart:
+--rw globals +--rw restart-time? uint32
| +--rw sessions +--rw recovery-time? uint32
| | +--ro session* [local-index] augment
| | +--ro local-index -> ../state/local-index /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
| | +--ro state rsvp:rsvp/rsvp:globals/rsvp:statistics/rsvp:state/rsvp:packets:
| | +--ro local-index? uint64 +--ro discontinuity-time? yang:date-and-time
| | +--ro destination-port? inet:port-number +--ro out-dropped? yang:counter64
| | +--ro source? inet:ip-address +--ro in-dropped? yang:counter64
| | +--ro destination? inet:ip-address +--ro out-error? yang:counter64
| | +--ro session-name? string +--ro in-error? yang:counter64
| | +--ro session-state? enumeration augment
| | +--ro session-type? identityref /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
| | +--ro psbs rsvp:rsvp/rsvp:globals/rsvp:statistics/rsvp:state/rsvp:messages:
| | | +--ro psb* augment
| | | +--ro source-port? inet:port-number /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
| | | +--ro expires-in? uint32 rsvp:rsvp/rsvp:globals/rsvp:statistics/rsvp:state/rsvp:errors:
| | +--ro rsbs augment
| | +--ro rsb* /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
| | +--ro source-port? inet:port-number rsvp:rsvp/rsvp:interfaces:
| | +--ro reservation-style? identityref +--rw refresh-interval? uint32
| | +--ro expires-in? uint32 +--rw refresh-misses? uint32
| +--rw statistics +--rw checksum? boolean
| | +--ro state +--rw patherr-state-removal? empty
| | +--ro messages augment
| | | +--ro ack-sent? yang:counter64 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
| | | +--ro ack-received? yang:counter64 rsvp:rsvp/rsvp:interfaces/rsvp:refresh-reduction:
| | | +--ro bundle-sent? yang:counter64 +--rw bundle-message-max-size? uint32
| | | +--ro bundle-received? yang:counter64 +--rw reliable-ack-hold-time? uint32
| | | +--ro hello-sent? yang:counter64 +--rw reliable-ack-max-size? uint32
| | | +--ro hello-received? yang:counter64 +--rw reliable-retransmit-time? uint32
| | | +--ro integrity-challenge-sent? yang:counter64 +--rw reliable-srefresh? empty
| | | +--ro integrity-challenge-received? yang:counter64 +--rw summary-max-size? uint32
| | | +--ro integrity-response-sent? yang:counter64 augment
| | | +--ro integrity-response-received? yang:counter64 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
| | | +--ro notify-sent? yang:counter64 rsvp:rsvp/rsvp:interfaces/rsvp:hellos:
| | | +--ro notify-received? yang:counter64 +--rw interface-based? empty
| | | +--ro path-sent? yang:counter64 +--rw hello-interval? uint32
| | | +--ro path-received? yang:counter64 +--rw hello-misses? uint32
| | | +--ro path-err-sent? yang:counter64 augment
| | | +--ro path-err-received? yang:counter64 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
| | | +--ro path-tear-sent? yang:counter64 rsvp:rsvp/rsvp:interfaces/rsvp:authentication:
| | | +--ro path-tear-received? yang:counter64 +--rw lifetime? uint32
| | | +--ro resv-sent? yang:counter64 +--rw window-size? uint32
| | | +--ro resv-received? yang:counter64 +--rw challenge? empty
| | | +--ro resv-confirm-sent? yang:counter64 +--rw retransmits? uint32
| | | +--ro resv-confirm-received? yang:counter64 +--rw key-chain? key-chain:key-chain-ref
| | | +--ro resv-err-sent? yang:counter64 augment
| | | +--ro resv-err-received? yang:counter64 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
| | | +--ro resv-tear-sent? yang:counter64 rsvp:rsvp/rsvp:interfaces/rsvp:interface:
| | | +--ro resv-tear-received? yang:counter64 +--rw refresh-interval? uint32
| | | +--ro summary-refresh-sent? yang:counter64 +--rw refresh-misses? uint32
| | | +--ro summary-refresh-received? yang:counter64 +--rw checksum? boolean
| | | +--ro unknown-messages-received? yang:counter64 +--rw patherr-state-removal? empty
| | +--ro packets augment
| | | +--ro sent? yang:counter64 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
| | | +--ro received? yang:counter64 rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:refresh-reduction:
| | | +--ro rsvp-ext:discontinuity-time? yang:date-and-time +--rw bundle-message-max-size? uint32
| | | +--ro rsvp-ext:out-dropped? yang:counter64 +--rw reliable-ack-hold-time? uint32
| | | +--ro rsvp-ext:in-dropped? yang:counter64 +--rw reliable-ack-max-size? uint32
| | | +--ro rsvp-ext:out-error? yang:counter64 +--rw reliable-retransmit-time? uint32
| | | +--ro rsvp-ext:in-error? yang:counter64 +--rw reliable-srefresh? empty
| | +--ro errors +--rw summary-max-size? uint32
| | +--ro authenticate? yang:counter64 augment
| | +--ro checksum? yang:counter64 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
| | +--ro packet-len? yang:counter64 rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:hellos:
| +--rw graceful-restart +--rw interface-based? empty
| +--rw config +--rw hello-interval? uint32
| | +--rw enabled? boolean +--rw hello-misses? uint32
| | +--rw rsvp-ext:restart-time? uint32 augment
| | +--rw rsvp-ext:recovery-time? uint32 /rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/
| +--ro state rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:authentication:
| +--ro enabled? boolean +--rw lifetime? uint32
| +--ro rsvp-ext:restart-time? uint32 +--rw window-size? uint32
| +--ro rsvp-ext:recovery-time? uint32 +--rw challenge? empty
+--rw interfaces +--rw retransmits? uint32
| +--rw config +--rw key-chain? key-chain:key-chain-ref
| | +--rw rsvp-ext:refresh-interval? uint32
| | +--rw rsvp-ext:refresh-misses? uint32
| | +--rw rsvp-ext:checksum? boolean
| | +--rw rsvp-ext:patherr-state-removal? empty
| +--ro state
| | +--ro rsvp-ext:refresh-interval? uint32
| | +--ro rsvp-ext:refresh-misses? uint32
| | +--ro rsvp-ext:checksum? boolean
| | +--ro rsvp-ext:patherr-state-removal? empty
| +--rw refresh-reduction
| | +--rw config
| | | +--rw enabled? boolean
| | | +--rw rsvp-ext:bundle-message-max-size? uint32
| | | +--rw rsvp-ext:reliable-ack-hold-time? uint32
| | | +--rw rsvp-ext:reliable-ack-max-size? uint32
| | | +--rw rsvp-ext:reliable-retransmit-time? uint32
| | | +--rw rsvp-ext:reliable-srefresh? empty
| | | +--rw rsvp-ext:summary-max-size? uint32
| | +--ro state
| | +--ro enabled? boolean
| | +--ro rsvp-ext:bundle-message-max-size? uint32
| | +--ro rsvp-ext:reliable-ack-hold-time? uint32
| | +--ro rsvp-ext:reliable-ack-max-size? uint32
| | +--ro rsvp-ext:reliable-retransmit-time? uint32
| | +--ro rsvp-ext:reliable-srefresh? empty
| | +--ro rsvp-ext:summary-max-size? uint32
| +--rw hellos
| | +--rw config
| | | +--rw enabled? boolean
| | | +--rw rsvp-ext:interface-based? empty
| | | +--rw rsvp-ext:hello-interval? uint32
| | | +--rw rsvp-ext:hello-misses? uint32
| | +--ro state
| | +--ro enabled? boolean
| | +--ro rsvp-ext:interface-based? empty
| | +--ro rsvp-ext:hello-interval? uint32
| | +--ro rsvp-ext:hello-misses? uint32
| +--rw authentication
| | +--rw config
| | | +--rw enabled? boolean
| | | +--rw authentication-key? string
| | | +--rw crypto-algorithm identityref
| | | +--rw rsvp-ext:lifetime? uint32
| | | +--rw rsvp-ext:window-size? uint32
| | | +--rw rsvp-ext:challenge? empty
| | | +--rw rsvp-ext:retransmits? uint32
| | | +--rw rsvp-ext:key-chain? key-chain:key-chain-ref
| | +--ro state
| | +--ro enabled? boolean
| | +--ro authentication-key? string
| | +--ro crypto-algorithm identityref
| | +--ro rsvp-ext:lifetime? uint32
| | +--ro rsvp-ext:window-size? uint32
| | +--ro rsvp-ext:challenge? empty
| | +--ro rsvp-ext:retransmits? uint32
| | +--ro rsvp-ext:key-chain? key-chain:key-chain-ref
| +--rw statistics
| | +--ro state
| | +--ro messages
| | | +--ro ack-sent? yang:counter64
| | | +--ro ack-received? yang:counter64
| | | +--ro bundle-sent? yang:counter64
| | | +--ro bundle-received? yang:counter64
| | | +--ro hello-sent? yang:counter64
| | | +--ro hello-received? yang:counter64
| | | +--ro integrity-challenge-sent? yang:counter64
| | | +--ro integrity-challenge-received? yang:counter64
| | | +--ro integrity-response-sent? yang:counter64
| | | +--ro integrity-response-received? yang:counter64
| | | +--ro notify-sent? yang:counter64
| | | +--ro notify-received? yang:counter64
| | | +--ro path-sent? yang:counter64
| | | +--ro path-received? yang:counter64
| | | +--ro path-err-sent? yang:counter64
| | | +--ro path-err-received? yang:counter64
| | | +--ro path-tear-sent? yang:counter64
| | | +--ro path-tear-received? 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 interface* [interface]
| +--rw interface if:interface-ref
| +--rw config
| | +--rw rsvp-ext:refresh-interval? uint32
| | +--rw rsvp-ext:refresh-misses? uint32
| | +--rw rsvp-ext:checksum? boolean
| | +--rw rsvp-ext:patherr-state-removal? empty
| +--ro state
| | +--ro rsvp-ext:refresh-interval? uint32
| | +--ro rsvp-ext:refresh-misses? uint32
| | +--ro rsvp-ext:checksum? boolean
| | +--ro rsvp-ext:patherr-state-removal? empty
| +--rw refresh-reduction
| | +--rw config
| | | +--rw enabled? boolean
| | | +--rw rsvp-ext:bundle-message-max-size? uint32
| | | +--rw rsvp-ext:reliable-ack-hold-time? uint32
| | | +--rw rsvp-ext:reliable-ack-max-size? uint32
| | | +--rw rsvp-ext:reliable-retransmit-time? uint32
| | | +--rw rsvp-ext:reliable-srefresh? empty
| | | +--rw rsvp-ext:summary-max-size? uint32
| | +--ro state
| | +--ro enabled? boolean
| | +--ro rsvp-ext:bundle-message-max-size? uint32
| | +--ro rsvp-ext:reliable-ack-hold-time? uint32
| | +--ro rsvp-ext:reliable-ack-max-size? uint32
| | +--ro rsvp-ext:reliable-retransmit-time? uint32
| | +--ro rsvp-ext:reliable-srefresh? empty
| | +--ro rsvp-ext:summary-max-size? uint32
| +--rw hellos
| | +--rw config
| | | +--rw enabled? boolean
| | | +--rw rsvp-ext:interface-based? empty
| | | +--rw rsvp-ext:hello-interval? uint32
| | | +--rw rsvp-ext:hello-misses? uint32
| | +--ro state
| | +--ro enabled? boolean
| | +--ro rsvp-ext:interface-based? empty
| | +--ro rsvp-ext:hello-interval? uint32
| | +--ro rsvp-ext:hello-misses? uint32
| +--rw authentication
| | +--rw config
| | | +--rw enabled? boolean
| | | +--rw authentication-key? string
| | | +--rw crypto-algorithm identityref
| | | +--rw rsvp-ext:lifetime? uint32
| | | +--rw rsvp-ext:window-size? uint32
| | | +--rw rsvp-ext:challenge? empty
| | | +--rw rsvp-ext:retransmits? uint32
| | | +--rw rsvp-ext:key-chain? key-chain:key-chain-ref
| | +--ro state
| | +--ro enabled? boolean
| | +--ro authentication-key? string
| | +--ro crypto-algorithm identityref
| | +--ro rsvp-ext:lifetime? uint32
| | +--ro rsvp-ext:window-size? uint32
| | +--ro rsvp-ext:challenge? empty
| | +--ro rsvp-ext:retransmits? uint32
| | +--ro rsvp-ext:key-chain? key-chain:key-chain-ref
| +--rw statistics
| +--ro state
| +--ro messages
| | +--ro ack-sent? yang:counter64
| | +--ro ack-received? yang:counter64
| | +--ro bundle-sent? yang:counter64
| | +--ro bundle-received? yang:counter64
| | +--ro hello-sent? yang:counter64
| | +--ro hello-received? yang:counter64
| | +--ro integrity-challenge-sent? yang:counter64
| | +--ro integrity-challenge-received? yang:counter64
| | +--ro integrity-response-sent? yang:counter64
| | +--ro integrity-response-received? yang:counter64
| | +--ro notify-sent? yang:counter64
| | +--ro notify-received? yang:counter64
| | +--ro path-sent? yang:counter64
| | +--ro path-received? yang:counter64
| | +--ro path-err-sent? yang:counter64
| | +--ro path-err-received? yang:counter64
| | +--ro path-tear-sent? yang:counter64
| | +--ro path-tear-received? 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 neighbor* [address]
+--rw address -> ../config/address
+--rw config
| +--rw address? inet:ip-address
+--ro state
+--ro address? inet:ip-address
+--ro epoch? uint32
+--ro expiry-time? uint32
+--ro graceful-restart
| +--ro enabled? boolean
| +--ro local-restart-time? uint32
| +--ro local-recovery-time? uint32
| +--ro neighbor-restart-time? uint32
| +--ro neighbor-recovery-time? uint32
| +--ro helper-mode
| +--ro enabled? boolean
| +--ro max-helper-restart-time? uint32
| +--ro max-helper-recovery-time? uint32
| +--ro neighbor-restart-time-remaining? uint32
| +--ro neighbor-recovery-time-remaining? uint32
+--ro hello-status? enumeration
+--ro interface? if:interface-ref
+--ro neighbor-state? enumeration
+--ro refresh-reduction-capable? boolean
+--ro restart-count? yang:counter32
+--ro restart-time? yang:date-and-time
Figure 4: RSVP extended model tree diagram Figure 4: RSVP extended model tree diagram
3.2.2. YANG Module 3.2.2. YANG Module
Figure 5 shows the RSVP extended YANG module: Figure 5 shows the RSVP extended YANG module:
<CODE BEGINS> file "ietf-rsvp-extended@2017-03-10.yang" <CODE BEGINS> file "ietf-rsvp-extended@2017-10-29.yang"
module ietf-rsvp-extended { module ietf-rsvp-extended {
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";
} }
import ietf-routing { import ietf-routing {
prefix "rt"; prefix "rt";
} }
skipping to change at page 41, line 45 skipping to change at page 35, line 17
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.";
revision "2017-03-10" { revision "2017-10-29" {
description "Latest revision of RSVP extended yang module."; description "Latest revision of RSVP extended yang module.";
reference "RFC2205"; reference "RFC2205";
} }
/* RSVP features */ /* RSVP features */
feature authentication { feature authentication {
description description
"Indicates support for RSVP authentication"; "Indicates support for RSVP authentication";
} }
skipping to change at page 48, line 14 skipping to change at page 41, line 33
uses packets-extended_state; uses packets-extended_state;
uses protocol-extended_state; uses protocol-extended_state;
uses errors-extended_state; uses errors-extended_state;
} }
/** /**
* RSVP extensions augmentations * RSVP extensions augmentations
*/ */
/* RSVP globals graceful restart*/ /* RSVP globals graceful restart*/
augment "/rt:routing/rt:control-plane-protocols/" +
"rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" +
"rsvp:graceful-restart/rsvp:config" {
description
"RSVP globals configuration extensions";
uses graceful-restart-extended_config;
}
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:state" { "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:state/rsvp:packets" {
description description
skipping to change at page 49, line 4 skipping to change at page 42, line 15
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:state/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 */
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:config" {
description description
"RSVP signaling all interfaces configuration extensions"; "RSVP signaling all interfaces configuration extensions";
uses signaling-parameters-extended_config; uses signaling-parameters-extended_config;
} }
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/"
+ "rsvp:state" {
description
"RSVP signaling all interfaces state extensions";
uses signaling-parameters-extended_config;
}
/* RSVP refresh reduction extension */ /* RSVP refresh reduction extension */
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:config" { + "rsvp:refresh-reduction" {
description description
"RSVP refresh-reduction all interface configuration "RSVP refresh-reduction all interface configuration
extensions"; extensions";
uses refresh-reduction-extended_config; uses refresh-reduction-extended_config;
} }
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/"
+ "rsvp:refresh-reduction/rsvp:state" {
description
"RSVP refresh-reduction all interfaces state extensions";
uses refresh-reduction-extended_config;
}
/* RSVP hellos extension */ /* RSVP hellos extension */
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:hellos/rsvp:config" { + "rsvp:hellos" {
description description
"RSVP hello all interfaces configuration extensions"; "RSVP hello all interfaces configuration extensions";
uses hellos-extended_config; uses hellos-extended_config;
} }
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/"
+ "rsvp:hellos/rsvp:state" {
description
"RSVP hello all interfaces state extensions";
uses hellos-extended_config;
}
/* RSVP authentication extension */ /* RSVP authentication extension */
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:authentication/rsvp:config" { + "rsvp:authentication" {
description description
"RSVP authentication all interfaces configuration extensions"; "RSVP authentication all interfaces configuration extensions";
uses authentication-extended_config; uses authentication-extended_config;
} }
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/"
+ "rsvp:authentication/rsvp:state" {
description
"RSVP authentication all interfaces state extensions";
uses authentication-extended_config;
}
/** /**
* RSVP interface extensions * RSVP interface extensions
*/ */
/* RSVP interface signaling extensions */ /* RSVP interface signaling extensions */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" +
"rsvp:interface/rsvp:config" { "rsvp:interface" {
description description
"RSVP signaling interface configuration extensions"; "RSVP signaling interface configuration extensions";
uses signaling-parameters-extended_config; uses signaling-parameters-extended_config;
} }
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" +
"rsvp:interface/rsvp:state" {
description
"RSVP signaling interface state extensions";
uses signaling-parameters-extended_config;
}
/* RSVP refresh reduction extension */ /* RSVP refresh reduction extension */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" +
"rsvp:interface/rsvp:refresh-reduction/rsvp:config" { "rsvp:interface/rsvp:refresh-reduction" {
description description
"RSVP refresh-reduction interface configuration extensions"; "RSVP refresh-reduction interface configuration extensions";
uses refresh-reduction-extended_config; uses refresh-reduction-extended_config;
} }
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" +
"rsvp:interface/rsvp:refresh-reduction/rsvp:state" {
description
"RSVP refresh-reduction interface state extensions";
uses refresh-reduction-extended_config;
}
/* RSVP hellos extension */ /* RSVP hellos extension */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" +
"rsvp:interface/rsvp:hellos/rsvp:config" { "rsvp:interface/rsvp:hellos" {
description description
"RSVP hello interface configuration extensions"; "RSVP hello interface configuration extensions";
uses hellos-extended_config; uses hellos-extended_config;
} }
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" +
"rsvp:interface/rsvp:hellos/rsvp:state" {
description
"RSVP hello interface state extensions";
uses hellos-extended_config;
}
/* RSVP authentication extension */ /* RSVP authentication extension */
augment "/rt:routing/rt:control-plane-protocols/" augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" +
"rsvp:interface/rsvp:authentication/rsvp:config" { "rsvp:interface/rsvp:authentication" {
description description
"RSVP authentication interface configuration extensions"; "RSVP authentication interface configuration extensions";
uses authentication-extended_config; uses authentication-extended_config;
} }
augment "/rt:routing/rt:control-plane-protocols/"
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" +
"rsvp:interface/rsvp:authentication/rsvp:state" {
description
"RSVP authentication interface state extensions";
uses authentication-extended_config;
}
} }
<CODE ENDS> <CODE ENDS>
Figure 5: RSVP extended YANG module Figure 5: RSVP extended YANG module
4. IANA Considerations 4. 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.
skipping to change at page 53, line 28 skipping to change at page 45, line 28
Comcast Comcast
Email: Bin_Wen@cable.comcast.com Email: Bin_Wen@cable.comcast.com
8. References 8. References
8.1. Normative References 8.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/
RFC2119, March 1997, RFC2119, March 1997, <https://www.rfc-editor.org/info/
<http://www.rfc-editor.org/info/rfc2119>. rfc2119>.
[RFC2205] Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S. [RFC2205] Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S.
Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1
Functional Specification", RFC 2205, DOI 10.17487/RFC2205, Functional Specification", RFC 2205, DOI 10.17487/RFC2205,
September 1997, <http://www.rfc-editor.org/info/rfc2205>. September 1997, <https://www.rfc-editor.org/info/rfc2205>.
[RFC2747] Baker, F., Lindell, B., and M. Talwar, "RSVP Cryptographic [RFC2747] Baker, F., Lindell, B., and M. Talwar, "RSVP Cryptographic
Authentication", RFC 2747, DOI 10.17487/RFC2747, January Authentication", RFC 2747, DOI 10.17487/RFC2747, January
2000, <http://www.rfc-editor.org/info/rfc2747>. 2000, <https://www.rfc-editor.org/info/rfc2747>.
[RFC2961] Berger, L., Gan, D., Swallow, G., Pan, P., Tommasi, F., [RFC2961] Berger, L., Gan, D., Swallow, G., Pan, P., Tommasi, F.,
and S. Molendini, "RSVP Refresh Overhead Reduction and S. Molendini, "RSVP Refresh Overhead Reduction
Extensions", RFC 2961, DOI 10.17487/RFC2961, April 2001, Extensions", RFC 2961, DOI 10.17487/RFC2961, April 2001,
<http://www.rfc-editor.org/info/rfc2961>. <https://www.rfc-editor.org/info/rfc2961>.
[RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V., [RFC3209] Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V.,
and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP
Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001,
<http://www.rfc-editor.org/info/rfc3209>. <https://www.rfc-editor.org/info/rfc3209>.
[RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label [RFC3473] Berger, L., Ed., "Generalized Multi-Protocol Label
Switching (GMPLS) Signaling Resource ReserVation Protocol- Switching (GMPLS) Signaling Resource ReserVation Protocol-
Traffic Engineering (RSVP-TE) Extensions", RFC 3473, DOI Traffic Engineering (RSVP-TE) Extensions", RFC 3473, DOI
10.17487/RFC3473, January 2003, 10.17487/RFC3473, January 2003, <https://www.rfc-
<http://www.rfc-editor.org/info/rfc3473>. editor.org/info/rfc3473>.
[RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688,
DOI 10.17487/RFC3688, January 2004, DOI 10.17487/RFC3688, January 2004, <https://www.rfc-
<http://www.rfc-editor.org/info/rfc3688>. editor.org/info/rfc3688>.
[RFC5063] Satyanarayana, A., Ed. and R. Rahman, Ed., "Extensions to [RFC5063] Satyanarayana, A., Ed. and R. Rahman, Ed., "Extensions to
GMPLS Resource Reservation Protocol (RSVP) Graceful GMPLS Resource Reservation Protocol (RSVP) Graceful
Restart", RFC 5063, DOI 10.17487/RFC5063, October 2007, Restart", RFC 5063, DOI 10.17487/RFC5063, October 2007,
<http://www.rfc-editor.org/info/rfc5063>. <https://www.rfc-editor.org/info/rfc5063>.
[RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for
the Network Configuration Protocol (NETCONF)", RFC 6020, the Network Configuration Protocol (NETCONF)", RFC 6020,
DOI 10.17487/RFC6020, October 2010, DOI 10.17487/RFC6020, October 2010, <https://www.rfc-
<http://www.rfc-editor.org/info/rfc6020>. editor.org/info/rfc6020>.
[RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed., [RFC6241] Enns, R., Ed., Bjorklund, M., Ed., Schoenwaelder, J., Ed.,
and A. Bierman, Ed., "Network Configuration Protocol and A. Bierman, Ed., "Network Configuration Protocol
(NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011, (NETCONF)", RFC 6241, DOI 10.17487/RFC6241, June 2011,
<http://www.rfc-editor.org/info/rfc6241>. <https://www.rfc-editor.org/info/rfc6241>.
[RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure [RFC6242] Wasserman, M., "Using the NETCONF Protocol over Secure
Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011, Shell (SSH)", RFC 6242, DOI 10.17487/RFC6242, June 2011,
<http://www.rfc-editor.org/info/rfc6242>. <https://www.rfc-editor.org/info/rfc6242>.
[RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration [RFC6536] Bierman, A. and M. Bjorklund, "Network Configuration
Protocol (NETCONF) Access Control Model", RFC 6536, DOI Protocol (NETCONF) Access Control Model", RFC 6536, DOI
10.17487/RFC6536, March 2012, 10.17487/RFC6536, March 2012, <https://www.rfc-
<http://www.rfc-editor.org/info/rfc6536>. editor.org/info/rfc6536>.
[RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC
6991, DOI 10.17487/RFC6991, July 2013, 6991, DOI 10.17487/RFC6991, July 2013, <https://www.rfc-
<http://www.rfc-editor.org/info/rfc6991>. editor.org/info/rfc6991>.
[RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing [RFC8022] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing
Management", RFC 8022, DOI 10.17487/RFC8022, November Management", RFC 8022, DOI 10.17487/RFC8022, November
2016, <http://www.rfc-editor.org/info/rfc8022>. 2016, <https://www.rfc-editor.org/info/rfc8022>.
8.2. Informative References 8.2. Informative References
[I-D.openconfig-mpls-consolidated-model] [I-D.dsdt-nmda-guidelines]
George, J., Fang, L., eric.osborne@level3.com, e., and R. Bjorklund, M., Schoenwaelder, J., Shafer, P., Watsen, K.,
Shakir, "MPLS / TE Model for Service Provider Networks", and R. Wilton, "Guidelines for YANG Module Authors
draft-openconfig-mpls-consolidated-model-02 (work in (NMDA)", draft-dsdt-nmda-guidelines-01 (work in progress),
progress), October 2015. May 2017.
[I-D.openconfig-netmod-opstate]
Shakir, R., Shaikh, A., and M. Hines, "Consistent Modeling
of Operational State Data in YANG", draft-openconfig-
netmod-opstate-01 (work in progress), July 2015.
Authors' Addresses Authors' Addresses
Vishnu Pavan Beeram Vishnu Pavan Beeram
Juniper Networks Juniper Networks
Email: vbeeram@juniper.net Email: vbeeram@juniper.net
Tarek Saad (editor) Tarek Saad (editor)
Cisco Systems, Inc. Cisco Systems, Inc.
 End of changes. 61 change blocks. 
764 lines changed or deleted 372 lines changed or added

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