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/ |