draft-ietf-teas-yang-rsvp-12.txt | draft-ietf-teas-yang-rsvp-13.txt | |||
---|---|---|---|---|
TEAS Working Group V. Beeram | TEAS Working Group V. Beeram | |||
Internet-Draft T. Saad | Internet-Draft T. Saad | |||
Intended status: Standards Track Juniper Networks | Intended status: Standards Track Juniper Networks | |||
Expires: July 16, 2020 R. Gandhi | Expires: January 14, 2021 R. Gandhi | |||
Cisco Systems, Inc. | Cisco Systems, Inc. | |||
X. Liu | X. Liu | |||
Jabil | Volta Networks | |||
I. Bryskin | I. Bryskin | |||
Huawei Technologies | Individual | |||
January 13, 2020 | July 13, 2020 | |||
A YANG Data Model for Resource Reservation Protocol (RSVP) | A YANG Data Model for Resource Reservation Protocol (RSVP) | |||
draft-ietf-teas-yang-rsvp-12 | draft-ietf-teas-yang-rsvp-13 | |||
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 RSVP 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 procedure calls, and event notifications data. | remote procedure calls, and event notifications data. | |||
skipping to change at page 1, line 41 ¶ | skipping to change at page 1, line 41 ¶ | |||
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 July 16, 2020. | This Internet-Draft will expire on January 14, 2021. | |||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 24 ¶ | |||
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. Model Notifications . . . . . . . . . . . . . . . . . . . 5 | 2.3. Model Notifications . . . . . . . . . . . . . . . . . . . 5 | |||
2.4. RSVP Base YANG Model . . . . . . . . . . . . . . . . . . 5 | 2.4. RSVP Base YANG Model . . . . . . . . . . . . . . . . . . 5 | |||
2.4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 7 | 2.4.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 7 | |||
2.4.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 11 | 2.4.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 12 | |||
2.5. RSVP Extended YANG Model . . . . . . . . . . . . . . . . 32 | 2.5. RSVP Extended YANG Model . . . . . . . . . . . . . . . . 33 | |||
2.5.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 32 | 2.5.1. Tree Diagram . . . . . . . . . . . . . . . . . . . . 33 | |||
2.5.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 34 | 2.5.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 35 | |||
3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 | 3. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 45 | |||
4. Security Considerations . . . . . . . . . . . . . . . . . . . 46 | 4. Security Considerations . . . . . . . . . . . . . . . . . . . 46 | |||
5. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 47 | 5. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 47 | |||
6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 47 | 6. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 47 | |||
7. References . . . . . . . . . . . . . . . . . . . . . . . . . 47 | 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 47 | |||
7.1. Normative References . . . . . . . . . . . . . . . . . . 47 | 7.1. Normative References . . . . . . . . . . . . . . . . . . 47 | |||
7.2. Informative References . . . . . . . . . . . . . . . . . 50 | 7.2. Informative References . . . . . . . . . . . . . . . . . 50 | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 50 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 50 | |||
1. Introduction | 1. Introduction | |||
skipping to change at page 7, line 17 ¶ | skipping to change at page 7, line 17 ¶ | |||
The sessions data branch covers configuration and state relevant | The sessions data branch covers configuration and state relevant | |||
to RSVP sessions. This is usually derived state that is result of | to RSVP sessions. This is usually derived state that is result of | |||
signaling. This model defines attributes related to IP RSVP | signaling. This model defines attributes related to IP RSVP | |||
sessions as defined in [RFC2205]. | sessions as defined in [RFC2205]. | |||
2.4.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-ip* | | | +--ro session-ip* | |||
| | [destination protocol-id destination-port] | | | [destination protocol-id destination-port] | |||
| | +--ro destination-port inet:port-number | | | +--ro destination-port inet:port-number | |||
| | +--ro protocol-id uint8 | | | +--ro protocol-id uint8 | |||
| | +--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-status? 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 | | +--ro statistics | |||
| | +--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-length? 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 | |||
| +--ro statistics | | +--ro statistics | |||
| | +--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-length? 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 | |||
| +--ro statistics | | +--ro statistics | |||
| +--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 | |||
+--rw neighbors | | | +--ro resv-sent? | |||
+--rw neighbor* [address] | | | | yang:counter64 | |||
+--rw address inet:ip-address | | | +--ro resv-received? | |||
+--rw epoch? uint32 | | | | yang:counter64 | |||
+--rw expiry-time? uint32 | | | +--ro resv-confirm-sent? | |||
+--rw graceful-restart | | | | yang:counter64 | |||
| +--rw enabled? boolean | | | +--ro resv-confirm-received? | |||
| +--rw local-restart-time? uint32 | | | | yang:counter64 | |||
| +--rw local-recovery-time? uint32 | | | +--ro resv-err-sent? | |||
| +--rw neighbor-restart-time? uint32 | | | | yang:counter64 | |||
| +--rw neighbor-recovery-time? uint32 | | | +--ro resv-err-received? | |||
| +--rw helper-mode | | | | yang:counter64 | |||
| +--rw enabled? boolean | | | +--ro resv-tear-sent? | |||
| +--rw max-helper-restart-time? uint32 | | | | yang:counter64 | |||
| +--rw max-helper-recovery-time? uint32 | | | +--ro resv-tear-received? | |||
| +--rw neighbor-restart-time-remaining? uint32 | | | | yang:counter64 | |||
| +--rw neighbor-recovery-time-remaining? uint32 | | | +--ro summary-refresh-sent? | |||
+--rw hello-status? enumeration | | | | yang:counter64 | |||
+--rw interface? if:interface-ref | | | +--ro summary-refresh-received? | |||
+--rw neighbor-state? enumeration | | | | yang:counter64 | |||
+--rw refresh-reduction-capable? boolean | | | +--ro unknown-messages-received? | |||
+--rw restart-count? yang:counter32 | | | yang:counter64 | |||
+--rw restart-time? yang:date-and-time | | +--ro packets | |||
| | +--ro sent? yang:counter64 | ||||
| | +--ro received? yang:counter64 | ||||
| +--ro errors | ||||
| +--ro authenticate? yang:counter64 | ||||
| +--ro checksum? yang:counter64 | ||||
| +--ro packet-length? yang:counter64 | ||||
+--rw neighbors | ||||
+--rw neighbor* [address] | ||||
+--rw address inet:ip-address | ||||
+--rw epoch? uint32 | ||||
+--rw expiry-time? uint32 | ||||
+--rw graceful-restart | ||||
| +--rw enabled? boolean | ||||
| +--rw local-restart-time? uint32 | ||||
| +--rw local-recovery-time? uint32 | ||||
| +--rw neighbor-restart-time? uint32 | ||||
| +--rw neighbor-recovery-time? uint32 | ||||
| +--rw helper-mode | ||||
| +--rw enabled? boolean | ||||
| +--rw max-helper-restart-time? uint32 | ||||
| +--rw max-helper-recovery-time? uint32 | ||||
| +--rw neighbor-restart-time-remaining? uint32 | ||||
| +--rw neighbor-recovery-time-remaining? uint32 | ||||
+--rw hello-status? enumeration | ||||
+--rw interface? if:interface-ref | ||||
+--rw neighbor-status? enumeration | ||||
+--rw refresh-reduction-capable? boolean | ||||
+--rw restart-count? yang:counter32 | ||||
+--rw restart-time? yang:date-and-time | ||||
rpcs: | rpcs: | |||
+---x clear-session | +---x clear-session | |||
| +---w input | | +---w input | |||
| +---w routing-protocol-instance-name leafref | | +---w routing-protocol-instance-name leafref | |||
| +---w (filter-type) | | +---w (filter-type) | |||
| +--:(match-all) | | +--:(match-all) | |||
| | +---w all empty | | | +---w all empty | |||
| +--:(match-one) | | +--:(match-one) | |||
| +---w session-info | | +---w session-info | |||
| +---w (session-type) | | +---w (session-type) | |||
| +--:(rsvp-session-ip) | | +--:(rsvp-session-ip) | |||
| +---w destination leafref | | +---w destination leafref | |||
| +---w protocol-id uint8 | | +---w protocol-id uint8 | |||
| +---w destination-port inet:ip-address | | +---w destination-port inet:ip-address | |||
+---x clear-neighbor | +---x clear-neighbor | |||
| +---w input | | +---w input | |||
| +---w routing-protocol-instance-name leafref | | +---w routing-protocol-instance-name leafref | |||
| +---w (filter-type) | | +---w (filter-type) | |||
| +--:(match-all) | | +--:(match-all) | |||
| | +---w all empty | | | +---w all empty | |||
| +--:(match-one) | | +--:(match-one) | |||
| +---w neighbor-address leafref | | +---w neighbor-address leafref | |||
+---x clear-authentication | +---x clear-authentication | |||
+---w input | +---w input | |||
+---w routing-protocol-instance-name leafref | +---w routing-protocol-instance-name leafref | |||
+---w (filter-type) | +---w (filter-type) | |||
+--:(match-all) | +--:(match-all) | |||
| +---w all empty | | +---w all empty | |||
+--:(match-one-interface) | +--:(match-one-interface) | |||
+---w interface? if:interface-ref | +---w interface? if:interface-ref | |||
Figure 3: RSVP model tree diagram | Figure 3: RSVP model tree diagram | |||
2.4.2. YANG Module | 2.4.2. YANG Module | |||
The ietf-rsvp module imports from the following modules: | The ietf-rsvp module imports from the following modules: | |||
o ietf-interfaces defined in [RFC8343] | o ietf-interfaces defined in [RFC8343] | |||
o ietf-yang-types and ietf-inet-types defined in [RFC6991] | o ietf-yang-types and ietf-inet-types defined in [RFC6991] | |||
skipping to change at page 12, line 8 ¶ | skipping to change at page 12, line 36 ¶ | |||
o ietf-yang-types and ietf-inet-types defined in [RFC6991] | o ietf-yang-types and ietf-inet-types defined in [RFC6991] | |||
o ietf-routing defined in [RFC8349] | o ietf-routing defined in [RFC8349] | |||
o ietf-key-chain defined in [RFC8177] | o ietf-key-chain defined in [RFC8177] | |||
<CODE BEGINS> file "ietf-rsvp@2020-01-13.yang" | <CODE BEGINS> file "ietf-rsvp@2020-01-13.yang" | |||
module ietf-rsvp { | module ietf-rsvp { | |||
yang-version 1.1; | yang-version 1.1; | |||
namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp"; | namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp"; | |||
/* Replace with IANA when assigned */ | /* Replace with IANA when assigned */ | |||
prefix "rsvp"; | ||||
prefix rsvp; | ||||
import ietf-interfaces { | import ietf-interfaces { | |||
prefix if; | prefix if; | |||
reference "RFC8343: A YANG Data Model for Interface Management"; | reference | |||
"RFC8343: A YANG Data Model for Interface Management"; | ||||
} | } | |||
import ietf-inet-types { | import ietf-inet-types { | |||
prefix inet; | prefix inet; | |||
reference "RFC6991: Common YANG Data Types"; | reference | |||
"RFC6991: Common YANG Data Types"; | ||||
} | } | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix "yang"; | prefix yang; | |||
reference "RFC6991: Common YANG Data Types"; | reference | |||
"RFC6991: Common YANG Data Types"; | ||||
} | } | |||
import ietf-routing { | import ietf-routing { | |||
prefix "rt"; | prefix rt; | |||
reference | reference | |||
"RFC8349: A YANG Data Model for Routing Management | "RFC8349: A YANG Data Model for Routing Management | |||
(NMDA Version)"; | (NMDA Version)"; | |||
} | } | |||
import ietf-key-chain { | import ietf-key-chain { | |||
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> | |||
Editor: Vishnu Pavan Beeram | Editor: Vishnu Pavan Beeram | |||
<mailto:vbeeram@juniper.net> | <mailto:vbeeram@juniper.net> | |||
Editor: Tarek Saad | Editor: Tarek Saad | |||
<mailto:tsaad@juniper.net> | <mailto:tsaad@juniper.net> | |||
skipping to change at page 13, line 13 ¶ | skipping to change at page 13, line 41 ¶ | |||
Editor: Tarek Saad | Editor: Tarek Saad | |||
<mailto:tsaad@juniper.net> | <mailto:tsaad@juniper.net> | |||
Editor: Rakesh Gandhi | Editor: Rakesh Gandhi | |||
<mailto:rgandhi@cisco.com> | <mailto:rgandhi@cisco.com> | |||
Editor: Xufeng Liu | Editor: Xufeng Liu | |||
<mailto: xufeng.liu.ietf@gmail.com> | <mailto: xufeng.liu.ietf@gmail.com> | |||
Editor: Igor Bryskin | Editor: Igor Bryskin | |||
<mailto:Igor.Bryskin@huawei.com> | <mailto:i_bryskin@yahoo.com>"; | |||
Editor: Himanshu Shah | ||||
<mailto:hshah@ciena.com>"; | ||||
description | description | |||
"This module contains the RSVP YANG data model. | "This module contains the 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) 2019 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 | |||
skipping to change at page 13, line 37 ¶ | skipping to change at page 14, line 13 ¶ | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC XXXX; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
// RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
// note. | // note. | |||
// RFC Ed.: update the date below with the date of RFC publication | // RFC Ed.: update the date below with the date of RFC publication | |||
// and remove this note. | // and remove this note. | |||
revision "2020-01-13" { | revision 2020-01-13 { | |||
description | description | |||
"A YANG Data Model for Resource Reservation Protocol"; | "A YANG Data Model for Resource Reservation Protocol"; | |||
reference | reference | |||
"RFCXXXX: A YANG Data Model for Resource Reservation Protocol | "RFCXXXX: A YANG Data Model for Resource Reservation Protocol | |||
(RSVP)"; | (RSVP)"; | |||
} | } | |||
identity rsvp { | identity rsvp { | |||
base "rt:routing-protocol"; | base rt:routing-protocol; | |||
description "RSVP protocol"; | description | |||
"RSVP protocol"; | ||||
} | } | |||
identity rsvp-session-type { | identity rsvp-session-type { | |||
description "Base RSVP session type"; | description | |||
"Base RSVP session type"; | ||||
} | } | |||
identity rsvp-session-ip { | identity rsvp-session-ip { | |||
base rsvp-session-type; | base rsvp-session-type; | |||
description "RSVP IP session type"; | description | |||
"RSVP IP session type"; | ||||
} | } | |||
identity reservation-style { | identity reservation-style { | |||
description "Base identity for reservation style"; | description | |||
"Base identity for reservation style"; | ||||
} | } | |||
identity reservation-wildcard-filter { | identity reservation-wildcard-filter { | |||
base reservation-style; | base reservation-style; | |||
description "Wildcard-Filter (WF) Style"; | description | |||
reference "RFC2205"; | "Wildcard-Filter (WF) Style"; | |||
reference | ||||
"RFC2205"; | ||||
} | } | |||
identity reservation-fixed-filter { | identity reservation-fixed-filter { | |||
base reservation-style; | base reservation-style; | |||
description "Fixed-Filter (FF) Style"; | description | |||
reference "RFC2205"; | "Fixed-Filter (FF) Style"; | |||
reference | ||||
"RFC2205"; | ||||
} | } | |||
identity reservation-shared-explicit { | identity reservation-shared-explicit { | |||
base reservation-style; | base reservation-style; | |||
description "Shared Explicit (SE) Style"; | description | |||
reference "RFC2205"; | "Shared Explicit (SE) Style"; | |||
reference | ||||
"RFC2205"; | ||||
} | } | |||
grouping graceful-restart-config { | grouping graceful-restart-config { | |||
description | description | |||
"Base configuration parameters relating to RSVP | "Base configuration parameters relating to RSVP | |||
Graceful-Restart"; | Graceful-Restart"; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
description | description | |||
"'true' if RSVP Graceful Restart is enabled. | "'true' if RSVP Graceful Restart is enabled. | |||
skipping to change at page 16, line 4 ¶ | skipping to change at page 16, line 37 ¶ | |||
description | description | |||
"'true' if RSVP Authentication is enabled. | "'true' if RSVP Authentication is enabled. | |||
'false' if RSVP Authentication is disabled."; | 'false' if RSVP Authentication is disabled."; | |||
} | } | |||
leaf authentication-key { | leaf authentication-key { | |||
type string; | type string; | |||
description | description | |||
"An authentication key string"; | "An authentication key string"; | |||
reference | reference | |||
"RFC 2747: RSVP Cryptographic Authentication"; | "RFC 2747: RSVP Cryptographic Authentication"; | |||
} | } | |||
leaf crypto-algorithm { | leaf crypto-algorithm { | |||
type identityref { | type identityref { | |||
base key-chain:crypto-algorithm; | base key-chain:crypto-algorithm; | |||
} | } | |||
mandatory true; | mandatory true; | |||
description | description | |||
"Cryptographic algorithm associated with key."; | "Cryptographic algorithm associated with key."; | |||
} | } | |||
} | } | |||
grouping authentication { | grouping authentication { | |||
description | description | |||
"Top level grouping for RSVP authentication parameters"; | "Top level grouping for RSVP authentication parameters"; | |||
container authentication { | container authentication { | |||
description | description | |||
"Top level container for RSVP authentication | "Top level container for RSVP authentication | |||
parameters"; | parameters"; | |||
uses authentication-config; | uses authentication-config; | |||
} | } | |||
} | } | |||
grouping hellos-config { | grouping hellos-config { | |||
description | description | |||
"Configuration parameters relating to RSVP | "Configuration parameters relating to RSVP | |||
hellos"; | hellos"; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
description | description | |||
"'true' if RSVP Hello is enabled. | "'true' if RSVP Hello is enabled. | |||
'false' if RSVP Hello is disabled."; | 'false' if RSVP Hello is disabled."; | |||
} | } | |||
} | } | |||
grouping hellos { | grouping hellos { | |||
description | description | |||
skipping to change at page 16, line 52 ¶ | skipping to change at page 17, line 35 ¶ | |||
container hellos { | container hellos { | |||
description | description | |||
"Top level container for RSVP hello parameters"; | "Top level container for RSVP hello parameters"; | |||
uses hellos-config; | uses hellos-config; | |||
} | } | |||
} | } | |||
grouping signaling-parameters-config { | grouping signaling-parameters-config { | |||
description | description | |||
"Configuration parameters relating to RSVP | "Configuration parameters relating to RSVP | |||
signaling"; | signaling"; | |||
} | } | |||
grouping signaling-parameters { | grouping signaling-parameters { | |||
description | description | |||
"Top level grouping for RSVP signaling parameters"; | "Top level grouping for RSVP signaling parameters"; | |||
uses signaling-parameters-config; | uses signaling-parameters-config; | |||
} | } | |||
grouping session-attributes-state { | grouping session-attributes { | |||
description | description | |||
"Top level grouping for RSVP session properties"; | "Top level grouping for RSVP session properties"; | |||
leaf destination-port { | leaf destination-port { | |||
type inet:port-number; | type inet:port-number; | |||
description "RSVP destination port"; | description | |||
reference "RFC2205"; | "RSVP destination port"; | |||
reference | ||||
"RFC2205"; | ||||
} | } | |||
leaf protocol-id { | leaf protocol-id { | |||
type uint8; | type uint8; | |||
description "The IP protocol ID."; | description | |||
reference "RFC2205, section 3.2"; | "The IP protocol ID."; | |||
reference | ||||
"RFC2205, section 3.2"; | ||||
} | } | |||
leaf source { | leaf source { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "RSVP source address"; | description | |||
reference "RFC2205"; | "RSVP source address"; | |||
reference | ||||
"RFC2205"; | ||||
} | } | |||
leaf destination { | leaf destination { | |||
type inet:ip-address; | type inet:ip-address; | |||
description "RSVP destination address"; | description | |||
reference "RFC2205"; | "RSVP destination address"; | |||
reference | ||||
"RFC2205"; | ||||
} | } | |||
leaf session-name { | leaf session-name { | |||
type string; | type string; | |||
description | description | |||
"The signaled name of this RSVP session."; | "The signaled name of this RSVP session."; | |||
} | } | |||
leaf session-state { | leaf session-status { | |||
type enumeration { | type enumeration { | |||
enum "up" { | enum up { | |||
description | description | |||
"RSVP session is up"; | "RSVP session is up"; | |||
} | } | |||
enum "down" { | enum down { | |||
description | description | |||
"RSVP session is down"; | "RSVP session is down"; | |||
} | } | |||
} | } | |||
description | description | |||
"Enumeration of RSVP session states"; | "Enumeration of RSVP session states"; | |||
} | } | |||
leaf session-type { | leaf session-type { | |||
type identityref { | type identityref { | |||
base rsvp-session-type; | base rsvp-session-type; | |||
} | } | |||
description "RSVP session type"; | description | |||
"RSVP session type"; | ||||
} | } | |||
container psbs { | container psbs { | |||
description "Path State Block container"; | description | |||
"Path State Block container"; | ||||
list psb { | list psb { | |||
description "List of path state blocks"; | description | |||
"List of path state blocks"; | ||||
leaf source-port { | leaf source-port { | |||
type inet:port-number; | type inet:port-number; | |||
description "RSVP source port"; | description | |||
reference "RFC2205"; | "RSVP source port"; | |||
reference | ||||
"RFC2205"; | ||||
} | } | |||
leaf expires-in { | leaf expires-in { | |||
type uint32; | type uint32; | |||
units seconds; | units "seconds"; | |||
description "Time to reservation expiry (in seconds)"; | description | |||
"Time to reservation expiry (in seconds)"; | ||||
} | } | |||
} | } | |||
} | } | |||
container rsbs { | container rsbs { | |||
description "Reservation State Block container"; | description | |||
"Reservation State Block container"; | ||||
list rsb { | list rsb { | |||
description "List of reservation state blocks"; | description | |||
"List of reservation state blocks"; | ||||
leaf source-port { | leaf source-port { | |||
type inet:port-number; | type inet:port-number; | |||
description "RSVP source port"; | description | |||
reference "RFC2205"; | "RSVP source port"; | |||
reference | ||||
"RFC2205"; | ||||
} | } | |||
leaf reservation-style { | leaf reservation-style { | |||
type identityref { | type identityref { | |||
base reservation-style; | base reservation-style; | |||
} | } | |||
description "RSVP reservation style"; | description | |||
"RSVP reservation style"; | ||||
} | } | |||
leaf expires-in { | leaf expires-in { | |||
type uint32; | type uint32; | |||
units seconds; | units "seconds"; | |||
description "Time to reservation expiry (in seconds)"; | description | |||
"Time to reservation expiry (in seconds)"; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping neighbor-attributes { | grouping neighbor-attributes { | |||
description | description | |||
"Top level grouping for RSVP neighbor properties"; | "Top level grouping for RSVP neighbor properties"; | |||
leaf address { | leaf address { | |||
type inet:ip-address; | type inet:ip-address; | |||
description | description | |||
"Address of RSVP neighbor"; | "Address of RSVP neighbor"; | |||
} | } | |||
leaf epoch { | leaf epoch { | |||
type uint32; | type uint32; | |||
description | description | |||
"Neighbor epoch."; | "Neighbor epoch."; | |||
} | } | |||
leaf expiry-time { | leaf expiry-time { | |||
type uint32; | type uint32; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"Neighbor expiry time after which the neighbor state | "Neighbor expiry time after which the neighbor state | |||
is purged if no states associated with it"; | is purged if no states associated with it"; | |||
} | } | |||
container graceful-restart { | container graceful-restart { | |||
description | description | |||
"Graceful restart information."; | "Graceful restart information."; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
description | description | |||
"'true' if graceful restart is enabled for the neighbor."; | "'true' if graceful restart is enabled for the neighbor."; | |||
} | } | |||
leaf local-restart-time { | leaf local-restart-time { | |||
type uint32; | type uint32; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"Local node restart time"; | "Local node restart time"; | |||
} | } | |||
leaf local-recovery-time { | leaf local-recovery-time { | |||
type uint32; | type uint32; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"Local node recover time"; | "Local node recover time"; | |||
} | } | |||
leaf neighbor-restart-time { | leaf neighbor-restart-time { | |||
type uint32; | type uint32; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"Neighbor restart time"; | "Neighbor restart time"; | |||
} | } | |||
leaf neighbor-recovery-time { | leaf neighbor-recovery-time { | |||
type uint32; | type uint32; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"Neighbor recover time"; | "Neighbor recover time"; | |||
} | } | |||
container helper-mode { | container helper-mode { | |||
description | description | |||
"Helper mode information "; | "Helper mode information "; | |||
leaf enabled { | leaf enabled { | |||
type boolean; | type boolean; | |||
description | description | |||
"'true' if helper mode is enabled."; | "'true' if helper mode is enabled."; | |||
} | } | |||
leaf max-helper-restart-time { | leaf max-helper-restart-time { | |||
type uint32; | type uint32; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"The time the router or switch waits after it | "The time the router or switch waits after it | |||
discovers that a neighboring router has gone down | discovers that a neighboring router has gone down | |||
before it declares the neighbor down"; | before it declares the neighbor down"; | |||
} | } | |||
leaf max-helper-recovery-time { | leaf max-helper-recovery-time { | |||
type uint32; | type uint32; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"The amount of time the router retains the state of its | "The amount of time the router retains the state of its | |||
RSVP neighbors while they undergo a graceful restart"; | RSVP neighbors while they undergo a graceful restart"; | |||
} | } | |||
leaf neighbor-restart-time-remaining { | leaf neighbor-restart-time-remaining { | |||
type uint32; | type uint32; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"Number of seconds remaining for neighbor to send | "Number of seconds remaining for neighbor to send | |||
Hello message after restart."; | Hello message after restart."; | |||
} | } | |||
leaf neighbor-recovery-time-remaining { | leaf neighbor-recovery-time-remaining { | |||
type uint32; | type uint32; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"Number of seconds remaining for neighbor to | "Number of seconds remaining for neighbor to | |||
refresh."; | refresh."; | |||
} | } | |||
} // helper-mode | } | |||
} // graceful-restart | // helper-mode | |||
} | ||||
// graceful-restart | ||||
leaf hello-status { | leaf hello-status { | |||
type enumeration { | type enumeration { | |||
enum "enabled" { | enum enabled { | |||
description | description | |||
"Enabled"; | "Enabled"; | |||
} | } | |||
enum "disabled" { | enum disabled { | |||
description | description | |||
"Disabled"; | "Disabled"; | |||
} | } | |||
enum "restarting" { | enum restarting { | |||
description | description | |||
"Restarting"; | "Restarting"; | |||
} | } | |||
} | } | |||
description | description | |||
"Hello status"; | "Hello status"; | |||
} | } | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Interface where RSVP neighbor was detected"; | "Interface where RSVP neighbor was detected"; | |||
} | } | |||
leaf neighbor-status { | ||||
leaf neighbor-state { | ||||
type enumeration { | type enumeration { | |||
enum "up" { | enum up { | |||
description | description | |||
"up"; | "up"; | |||
} | } | |||
enum "down" { | enum down { | |||
description | description | |||
"down"; | "down"; | |||
} | } | |||
enum "hello-disable" { | enum hello-disable { | |||
description | description | |||
"hello-disable"; | "hello-disable"; | |||
} | } | |||
enum "restarting" { | enum restarting { | |||
description | description | |||
"restarting"; | "restarting"; | |||
} | } | |||
} | } | |||
description | description | |||
"Neighbor state"; | "Neighbor state"; | |||
} | } | |||
leaf refresh-reduction-capable { | leaf refresh-reduction-capable { | |||
type boolean; | type boolean; | |||
description | description | |||
"enables all RSVP refresh reduction message | "enables all RSVP refresh reduction message | |||
bundling, RSVP message ID, reliable message delivery | bundling, RSVP message ID, reliable message delivery | |||
and summary refresh"; | and summary refresh"; | |||
reference | reference | |||
"RFC 2961 RSVP Refresh Overhead Reduction | "RFC 2961 RSVP Refresh Overhead Reduction | |||
Extensions"; | Extensions"; | |||
} | } | |||
skipping to change at page 22, line 25 ¶ | skipping to change at page 23, line 12 ¶ | |||
leaf refresh-reduction-capable { | leaf refresh-reduction-capable { | |||
type boolean; | type boolean; | |||
description | description | |||
"enables all RSVP refresh reduction message | "enables all RSVP refresh reduction message | |||
bundling, RSVP message ID, reliable message delivery | bundling, RSVP message ID, reliable message delivery | |||
and summary refresh"; | and summary refresh"; | |||
reference | reference | |||
"RFC 2961 RSVP Refresh Overhead Reduction | "RFC 2961 RSVP Refresh Overhead Reduction | |||
Extensions"; | Extensions"; | |||
} | } | |||
leaf restart-count { | leaf restart-count { | |||
type yang:counter32; | type yang:counter32; | |||
description | description | |||
"Number of times this neighbor restart"; | "Number of times this neighbor restart"; | |||
} | } | |||
leaf restart-time { | leaf restart-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"Last restart time of the neighbor"; | "Last restart time of the neighbor"; | |||
} | } | |||
} | } | |||
grouping packets-state { | grouping packet-statistics { | |||
description | description | |||
"Packet statistics grouping"; | "Packet statistics grouping"; | |||
container packets { | container packets { | |||
description | description | |||
"Packet statistics container"; | "Packet statistics container"; | |||
leaf sent { | leaf sent { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Packet sent count"; | "Packet sent count"; | |||
} | } | |||
skipping to change at page 22, line 50 ¶ | skipping to change at page 23, line 35 ¶ | |||
description | description | |||
"Packet statistics grouping"; | "Packet statistics grouping"; | |||
container packets { | container packets { | |||
description | description | |||
"Packet statistics container"; | "Packet statistics container"; | |||
leaf sent { | leaf sent { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Packet sent count"; | "Packet sent count"; | |||
} | } | |||
leaf received { | leaf received { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Packet received count"; | "Packet received count"; | |||
} | } | |||
} | } | |||
} | } | |||
grouping protocol-state { | grouping message-statistics { | |||
description | description | |||
"RSVP protocol statistics grouping"; | "RSVP protocol statistics grouping"; | |||
container messages { | container messages { | |||
description | description | |||
"RSVP protocol statistics container"; | "RSVP protocol statistics container"; | |||
leaf ack-sent { | leaf ack-sent { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Hello sent count"; | "Hello sent count"; | |||
} | } | |||
skipping to change at page 25, line 9 ¶ | skipping to change at page 25, line 28 ¶ | |||
leaf path-received { | leaf path-received { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Path received count"; | "Path received count"; | |||
} | } | |||
leaf path-err-sent { | leaf path-err-sent { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Path error sent count"; | "Path error sent count"; | |||
} | } | |||
leaf path-err-received { | leaf path-err-received { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Path error received count"; | "Path error received count"; | |||
} | } | |||
leaf path-tear-sent { | leaf path-tear-sent { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Path tear sent count"; | "Path tear sent count"; | |||
} | } | |||
leaf path-tear-received { | leaf path-tear-received { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Path tear received count"; | "Path tear received count"; | |||
} | } | |||
leaf resv-sent { | leaf resv-sent { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Resv sent count"; | "Resv sent count"; | |||
} | } | |||
leaf resv-received { | leaf resv-received { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Resv received count"; | "Resv received count"; | |||
} | ||||
} | ||||
leaf resv-confirm-sent { | leaf resv-confirm-sent { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Confirm sent count"; | "Confirm sent count"; | |||
} | } | |||
leaf resv-confirm-received { | leaf resv-confirm-received { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Confirm received count"; | "Confirm received count"; | |||
} | } | |||
leaf resv-err-sent { | leaf resv-err-sent { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Resv error sent count"; | "Resv error sent count"; | |||
} | } | |||
skipping to change at page 26, line 9 ¶ | skipping to change at page 26, line 21 ¶ | |||
leaf resv-confirm-received { | leaf resv-confirm-received { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Confirm received count"; | "Confirm received count"; | |||
} | } | |||
leaf resv-err-sent { | leaf resv-err-sent { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Resv error sent count"; | "Resv error sent count"; | |||
} | } | |||
leaf resv-err-received { | leaf resv-err-received { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Resv error received count"; | "Resv error received count"; | |||
} | } | |||
leaf resv-tear-sent { | leaf resv-tear-sent { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Resv tear sent count"; | "Resv tear sent count"; | |||
} | } | |||
leaf resv-tear-received { | leaf resv-tear-received { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Resv tear received count"; | "Resv tear received count"; | |||
} | } | |||
leaf summary-refresh-sent { | leaf summary-refresh-sent { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Summary refresh sent count"; | "Summary refresh sent count"; | |||
} | } | |||
leaf summary-refresh-received { | leaf summary-refresh-received { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Summary refresh received count"; | "Summary refresh received count"; | |||
} | } | |||
leaf unknown-messages-received { | leaf unknown-messages-received { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Unknown packet received count"; | "Unknown packet received count"; | |||
} | } | |||
} | } | |||
} | } | |||
grouping errors-statistics { | ||||
grouping errors-state { | ||||
description | description | |||
"Error statistics state grouping"; | "Error statistics grouping"; | |||
container errors { | container errors { | |||
description | description | |||
"Error statistics state container"; | "Error statistics container"; | |||
leaf authenticate { | leaf authenticate { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The total number of packets received with an | "The total number of packets received with an | |||
authentication failure."; | authentication failure."; | |||
} | } | |||
leaf checksum { | leaf checksum { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The total number of packets received with an invalid | "The total number of packets received with an invalid | |||
checksum value."; | checksum value."; | |||
} | } | |||
leaf packet-length { | leaf packet-length { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"The total number of packets received with an invalid | "The total number of packets received with an invalid | |||
packet length."; | packet length."; | |||
} | } | |||
} | } | |||
} | } | |||
grouping statistics-state { | grouping statistics { | |||
description "RSVP statistic attributes."; | description | |||
"RSVP statistic attributes."; | ||||
container statistics { | container statistics { | |||
config false; | config false; | |||
description | description | |||
"statistics state container"; | "RSVP statistics container"; | |||
uses protocol-state; | uses message-statistics; | |||
uses packets-state; | uses packet-statistics; | |||
uses errors-state; | uses errors-statistics; | |||
} | } | |||
} | } | |||
grouping neighbor-derived-state { | ||||
description | ||||
"Derived state at neighbor level."; | ||||
} | ||||
grouping global-attributes { | grouping global-attributes { | |||
description | description | |||
"Top level grouping for RSVP global properties"; | "Top level grouping for RSVP global properties"; | |||
container sessions { | container sessions { | |||
description | description | |||
"RSVP sessions container"; | "RSVP sessions container"; | |||
list session-ip { | list session-ip { | |||
key "destination protocol-id destination-port"; | key "destination protocol-id destination-port"; | |||
config false; | config false; | |||
description | description | |||
"List of RSVP sessions"; | "List of RSVP sessions"; | |||
uses session-attributes; | ||||
uses session-attributes-state; | ||||
} | } | |||
} | } | |||
uses statistics-state; | uses statistics; | |||
} | } | |||
grouping intf-attributes { | grouping intf-attributes { | |||
description | description | |||
"Top level grouping for RSVP interface properties"; | "Top level grouping for RSVP interface properties"; | |||
uses signaling-parameters; | uses signaling-parameters; | |||
uses refresh-reduction; | uses refresh-reduction; | |||
uses hellos; | uses hellos; | |||
uses authentication; | uses authentication; | |||
uses statistics-state; | uses statistics; | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol" { | + "rt:control-plane-protocol" { | |||
when "rt:type = 'rsvp:rsvp'" { | when "rt:type = 'rsvp:rsvp'" { | |||
description | description | |||
"This augment is only valid when routing protocol | "This augment is only valid when routing protocol | |||
instance type is RSVP."; | instance type is RSVP."; | |||
} | } | |||
description | description | |||
"RSVP protocol augmentation"; | "RSVP protocol augmentation"; | |||
container rsvp { | container rsvp { | |||
presence "Enable RSVP feature"; | presence "Enable RSVP feature"; | |||
description "RSVP feature container"; | description | |||
"RSVP feature container"; | ||||
container globals { | container globals { | |||
description "RSVP global properties."; | description | |||
"RSVP global properties."; | ||||
uses global-attributes; | uses global-attributes; | |||
uses graceful-restart; | uses graceful-restart; | |||
} | } | |||
container interfaces { | container interfaces { | |||
description | description | |||
"RSVP interfaces container"; | "RSVP interfaces container"; | |||
uses intf-attributes; | uses intf-attributes; | |||
list interface { | list interface { | |||
key "interface"; | key "interface"; | |||
description | description | |||
"RSVP interfaces."; | "RSVP interfaces."; | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"RSVP interface."; | "RSVP interface."; | |||
} | } | |||
uses intf-attributes; | uses intf-attributes; | |||
skipping to change at page 29, line 14 ¶ | skipping to change at page 29, line 10 ¶ | |||
description | description | |||
"RSVP interfaces."; | "RSVP interfaces."; | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"RSVP interface."; | "RSVP interface."; | |||
} | } | |||
uses intf-attributes; | uses intf-attributes; | |||
} | } | |||
} | } | |||
container neighbors { | container neighbors { | |||
description "RSVP neighbors container"; | description | |||
"RSVP neighbors container"; | ||||
list neighbor { | list neighbor { | |||
key "address"; | key "address"; | |||
description "List of RSVP neighbors"; | description | |||
"List of RSVP neighbors"; | ||||
uses neighbor-attributes; | uses neighbor-attributes; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
grouping session-ref { | grouping session-ref { | |||
description "Session reference information"; | description | |||
"Session reference information"; | ||||
leaf destination { | leaf destination { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols" + | path "/rt:routing/rt:control-plane-protocols" | |||
"/rt:control-plane-protocol/rsvp:rsvp/rsvp:globals" + | + "/rt:control-plane-protocol/rsvp:rsvp/rsvp:globals" | |||
"/rsvp:sessions/rsvp:session-ip/destination"; | + "/rsvp:sessions/rsvp:session-ip/destination"; | |||
} | } | |||
mandatory true; | mandatory true; | |||
description "RSVP session"; | description | |||
"RSVP session"; | ||||
} | } | |||
leaf protocol-id { | leaf protocol-id { | |||
type uint8; | type uint8; | |||
mandatory true; | mandatory true; | |||
description "The RSVP session protocol ID"; | description | |||
"The RSVP session protocol ID"; | ||||
} | } | |||
leaf destination-port { | leaf destination-port { | |||
type inet:ip-address; | type inet:ip-address; | |||
mandatory true; | mandatory true; | |||
description "The RSVP session destination port"; | description | |||
"The RSVP session destination port"; | ||||
} | } | |||
} | } | |||
rpc clear-session { | rpc clear-session { | |||
description "Clears RSVP sessions RPC"; | description | |||
"Clears RSVP sessions RPC"; | ||||
input { | input { | |||
leaf routing-protocol-instance-name { | leaf routing-protocol-instance-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
mandatory "true"; | mandatory true; | |||
description | description | |||
"Name of the RSVP protocol instance whose session | "Name of the RSVP protocol instance whose session | |||
is being cleared. | is being cleared. | |||
If the corresponding RSVP instance doesn't exist, | If the corresponding RSVP instance doesn't exist, | |||
then the operation will fail with an error-tag of | then the operation will fail with an error-tag of | |||
'data-missing' and an error-app-tag of | 'data-missing' and an error-app-tag of | |||
'routing-protocol-instance-not-found'."; | 'routing-protocol-instance-not-found'."; | |||
} | } | |||
choice filter-type { | choice filter-type { | |||
mandatory true; | mandatory true; | |||
description "Filter choice"; | description | |||
"Filter choice"; | ||||
case match-all { | case match-all { | |||
leaf all { | leaf all { | |||
type empty; | type empty; | |||
mandatory true; | mandatory true; | |||
description "Match all RSVP sessions"; | description | |||
"Match all RSVP sessions"; | ||||
} | } | |||
} | } | |||
case match-one { | case match-one { | |||
container session-info { | container session-info { | |||
description | description | |||
"Specifies the specific session to invoke operation on"; | "Specifies the specific session to invoke operation on"; | |||
choice session-type { | choice session-type { | |||
mandatory true; | mandatory true; | |||
description "RSVP session type"; | description | |||
"RSVP session type"; | ||||
case rsvp-session-ip { | case rsvp-session-ip { | |||
uses session-ref; | uses session-ref; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
rpc clear-neighbor { | rpc clear-neighbor { | |||
description | description | |||
"RPC to clear the RSVP Hello session to a neighbor"; | "RPC to clear the RSVP Hello session to a neighbor"; | |||
input { | input { | |||
leaf routing-protocol-instance-name { | leaf routing-protocol-instance-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
mandatory "true"; | mandatory true; | |||
description | description | |||
"Name of the RSVP protocol instance whose session | "Name of the RSVP protocol instance whose session | |||
is being cleared. | is being cleared. | |||
If the corresponding RSVP instance doesn't exist, | If the corresponding RSVP instance doesn't exist, | |||
then the operation will fail with an error-tag of | then the operation will fail with an error-tag of | |||
'data-missing' and an error-app-tag of | 'data-missing' and an error-app-tag of | |||
'routing-protocol-instance-not-found'."; | 'routing-protocol-instance-not-found'."; | |||
} | } | |||
choice filter-type { | choice filter-type { | |||
mandatory true; | mandatory true; | |||
description "Filter choice"; | description | |||
"Filter choice"; | ||||
case match-all { | case match-all { | |||
leaf all { | leaf all { | |||
type empty; | type empty; | |||
mandatory true; | mandatory true; | |||
description "Match all RSVP neighbor sessions"; | description | |||
"Match all RSVP neighbor sessions"; | ||||
} | } | |||
} | } | |||
case match-one { | case match-one { | |||
leaf neighbor-address { | leaf neighbor-address { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols" + | path "/rt:routing/rt:control-plane-protocols" | |||
"/rt:control-plane-protocol/rsvp:rsvp" + | + "/rt:control-plane-protocol/rsvp:rsvp" | |||
"/rsvp:neighbors/rsvp:neighbor/address"; | + "/rsvp:neighbors/rsvp:neighbor/address"; | |||
} | } | |||
mandatory true; | mandatory true; | |||
description "Match specific RSVP neighbor session"; | description | |||
"Match specific RSVP neighbor session"; | ||||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
rpc clear-authentication { | rpc clear-authentication { | |||
description | description | |||
"Clears RSVP Security Association (SA) before the | "Clears RSVP Security Association (SA) before the | |||
lifetime expires."; | lifetime expires."; | |||
input { | input { | |||
leaf routing-protocol-instance-name { | leaf routing-protocol-instance-name { | |||
type leafref { | type leafref { | |||
path "/rt:routing/rt:control-plane-protocols/" | path "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rt:name"; | + "rt:control-plane-protocol/rt:name"; | |||
} | } | |||
mandatory "true"; | mandatory true; | |||
description | description | |||
"Name of the RSVP protocol instance whose session | "Name of the RSVP protocol instance whose session | |||
is being cleared. | is being cleared. | |||
If the corresponding RSVP instance doesn't exist, | If the corresponding RSVP instance doesn't exist, | |||
then the operation will fail with an error-tag of | then the operation will fail with an error-tag of | |||
'data-missing' and an error-app-tag of | 'data-missing' and an error-app-tag of | |||
'routing-protocol-instance-not-found'."; | 'routing-protocol-instance-not-found'."; | |||
} | } | |||
choice filter-type { | choice filter-type { | |||
mandatory true; | mandatory true; | |||
description "Filter choice"; | description | |||
"Filter choice"; | ||||
case match-all { | case match-all { | |||
leaf all { | leaf all { | |||
type empty; | type empty; | |||
mandatory true; | mandatory true; | |||
description "Match all RSVP security associations"; | description | |||
"Match all RSVP security associations"; | ||||
} | } | |||
} | } | |||
case match-one-interface { | case match-one-interface { | |||
leaf interface { | leaf interface { | |||
type if:interface-ref; | type if:interface-ref; | |||
description | description | |||
"Interface where RSVP security association(s) to be | "Interface where RSVP security association(s) to be | |||
detected"; | detected"; | |||
} | } | |||
} | } | |||
skipping to change at page 35, line 5 ¶ | skipping to change at page 35, line 23 ¶ | |||
o ietf-yang-types and ietf-inet-types defined in [RFC6991] | o ietf-yang-types and ietf-inet-types defined in [RFC6991] | |||
o ietf-key-chain defined in [RFC8177] | 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-07-04.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 | |||
"RFC8349: A YANG Data Model for Routing Management | "RFC8349: A YANG Data Model for Routing Management | |||
(NMDA Version)"; | (NMDA Version)"; | |||
} | } | |||
import ietf-yang-types { | import ietf-yang-types { | |||
prefix "yang"; | prefix yang; | |||
reference "RFC6991: Common YANG Data Types"; | reference | |||
"RFC6991: Common YANG Data Types"; | ||||
} | } | |||
import ietf-key-chain { | import ietf-key-chain { | |||
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> | |||
Editor: Vishnu Pavan Beeram | Editor: Vishnu Pavan Beeram | |||
<mailto:vbeeram@juniper.net> | <mailto:vbeeram@juniper.net> | |||
Editor: Tarek Saad | Editor: Tarek Saad | |||
<mailto:tsaad@juniper.net> | <mailto:tsaad@juniper.net> | |||
skipping to change at page 35, line 49 ¶ | skipping to change at page 36, line 15 ¶ | |||
Editor: Vishnu Pavan Beeram | Editor: Vishnu Pavan Beeram | |||
<mailto:vbeeram@juniper.net> | <mailto:vbeeram@juniper.net> | |||
Editor: Tarek Saad | Editor: Tarek Saad | |||
<mailto:tsaad@juniper.net> | <mailto:tsaad@juniper.net> | |||
Editor: Rakesh Gandhi | Editor: Rakesh Gandhi | |||
<mailto:rgandhi@cisco.com> | <mailto:rgandhi@cisco.com> | |||
Editor: Himanshu Shah | ||||
<mailto:hshah@ciena.com> | ||||
Editor: Xufeng Liu | Editor: Xufeng Liu | |||
<mailto:Xufeng_Liu@jabil.com> | <mailto: xufeng.liu.ietf@gmail.com> | |||
Editor: Xia Chen | ||||
<mailto:jescia.chenxia@huawei.com> | ||||
Editor: Raqib Jones | ||||
<mailto:raqib@Brocade.com> | ||||
Editor: Bin Wen | ||||
<mailto:Bin_Wen@cable.comcast.com>"; | ||||
Editor: Igor Bryskin | ||||
<mailto:i_bryskin@yahoo.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) 2019 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 | |||
skipping to change at page 36, line 36 ¶ | skipping to change at page 36, line 39 ¶ | |||
without modification, is permitted pursuant to, and subject | without modification, is permitted pursuant to, and subject | |||
to the license terms contained in, the Simplified BSD License | to the license terms contained in, the Simplified BSD License | |||
set forth in Section 4.c of the IETF Trust's Legal Provisions | set forth in Section 4.c of the IETF Trust's Legal Provisions | |||
Relating to IETF Documents | Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info). | (https://trustee.ietf.org/license-info). | |||
This version of this YANG module is part of RFC XXXX; see | This version of this YANG module is part of RFC XXXX; see | |||
the RFC itself for full legal notices."; | the RFC itself for full legal notices."; | |||
// RFC Ed.: replace XXXX with actual RFC number and remove this | // RFC Ed.: replace XXXX with actual RFC number and remove this | |||
// note. | // note. | |||
// RFC Ed.: update the date below with the date of RFC publication | // RFC Ed.: update the date below with the date of RFC publication | |||
// and remove this note. | // and remove this note. | |||
revision "2019-07-04" { | 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 Resource Reservation Protocol | "RFCXXXX: A YANG Data Model for Resource Reservation Protocol | |||
(RSVP)"; | (RSVP)"; | |||
} | } | |||
/* RSVP features */ | /* RSVP features */ | |||
feature authentication { | feature authentication { | |||
skipping to change at page 38, line 4 ¶ | skipping to change at page 38, line 7 ¶ | |||
description | description | |||
"Indicates support for per interface statistics"; | "Indicates support for per interface statistics"; | |||
} | } | |||
grouping graceful-restart-extended-config { | grouping graceful-restart-extended-config { | |||
description | description | |||
"Configuration parameters relating to RSVP | "Configuration parameters relating to RSVP | |||
Graceful-Restart"; | Graceful-Restart"; | |||
leaf restart-time { | leaf restart-time { | |||
type uint32; | type uint32; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"Graceful restart time (seconds)."; | "Graceful restart time (seconds)."; | |||
reference | reference | |||
"RFC 5495: Description of the Resource | "RFC 5495: Description of the Resource | |||
Reservation Protocol - Traffic-Engineered | Reservation Protocol - Traffic-Engineered | |||
(RSVP-TE) Graceful Restart Procedures"; | (RSVP-TE) Graceful Restart Procedures"; | |||
} | } | |||
leaf recovery-time { | leaf recovery-time { | |||
type uint32; | type uint32; | |||
units seconds; | units "seconds"; | |||
description | description | |||
"RSVP state recovery time"; | "RSVP state recovery time"; | |||
} | } | |||
} | } | |||
grouping authentication-extended-config { | grouping authentication-extended-config { | |||
description | description | |||
"Configuration parameters relating to RSVP | "Configuration parameters relating to RSVP | |||
authentication"; | authentication"; | |||
leaf lifetime { | leaf lifetime { | |||
type uint32 { | type uint32 { | |||
range "30..86400"; | range "30..86400"; | |||
} | } | |||
units seconds; | units "seconds"; | |||
description | description | |||
"Life time for each security association"; | "Life time for each security association"; | |||
reference | reference | |||
"RFC 2747: RSVP Cryptographic | "RFC 2747: RSVP Cryptographic | |||
Authentication"; | Authentication"; | |||
} | } | |||
leaf window-size { | leaf window-size { | |||
type uint32 { | type uint32 { | |||
range "1..64"; | range "1..64"; | |||
} | } | |||
description | description | |||
"Window-size to limit number of out-of-order | "Window-size to limit number of out-of-order | |||
messages."; | messages."; | |||
reference | reference | |||
"RFC 2747: RSVP Cryptographic | "RFC 2747: RSVP Cryptographic | |||
skipping to change at page 39, line 23 ¶ | skipping to change at page 39, line 26 ¶ | |||
reference | reference | |||
"RFC 2747: RSVP Cryptographic | "RFC 2747: RSVP Cryptographic | |||
Authentication"; | Authentication"; | |||
} | } | |||
leaf key-chain { | leaf key-chain { | |||
type key-chain:key-chain-ref; | type key-chain:key-chain-ref; | |||
description | description | |||
"Key chain name to authenticate RSVP | "Key chain name to authenticate RSVP | |||
signaling messages."; | signaling messages."; | |||
reference | reference | |||
"RFC 2747: RSVP Cryptographic | "RFC 2747: RSVP Cryptographic Authentication"; | |||
Authentication"; | ||||
} | } | |||
} | } | |||
grouping hellos-extended-config { | grouping hellos-extended-config { | |||
description | description | |||
"Configuration parameters relating to RSVP | "Configuration parameters relating to RSVP | |||
hellos"; | hellos"; | |||
leaf interface-based { | leaf interface-based { | |||
type empty; | type empty; | |||
description | description | |||
"Enable interface-based Hello adjacency if present."; | "Enable interface-based Hello adjacency if present."; | |||
} | } | |||
leaf hello-interval { | leaf hello-interval { | |||
type uint32; | type uint32; | |||
units milliseconds; | units "milliseconds"; | |||
description | description | |||
"Configure interval between successive Hello | "Configure interval between successive Hello | |||
messages in milliseconds."; | messages in milliseconds."; | |||
reference | reference | |||
"RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels. | "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels. | |||
RFC 5495: Description of the Resource | RFC 5495: Description of the Resource | |||
Reservation Protocol - Traffic-Engineered | Reservation Protocol - Traffic-Engineered | |||
(RSVP-TE) Graceful Restart Procedures"; | (RSVP-TE) Graceful Restart Procedures"; | |||
} | } | |||
leaf hello-misses { | leaf hello-misses { | |||
skipping to change at page 40, line 31 ¶ | skipping to change at page 40, line 32 ¶ | |||
signaling"; | signaling"; | |||
leaf refresh-interval { | leaf refresh-interval { | |||
type uint32; | type uint32; | |||
description | description | |||
"Set interval between successive refreshes"; | "Set interval between successive refreshes"; | |||
} | } | |||
leaf refresh-misses { | leaf refresh-misses { | |||
type uint32; | type uint32; | |||
description | description | |||
"Set max number of consecutive missed | "Set max number of consecutive missed | |||
messages for state expiry"; | messages for state expiry"; | |||
} | } | |||
leaf checksum { | leaf checksum { | |||
type boolean; | type boolean; | |||
description | description | |||
"Enable RSVP message checksum computation"; | "Enable RSVP message checksum computation"; | |||
} | } | |||
leaf patherr-state-removal { | leaf patherr-state-removal { | |||
type empty; | type empty; | |||
description | description | |||
"State-Removal flag in Path Error message | "State-Removal flag in Path Error message | |||
if present."; | if present."; | |||
} | } | |||
} | } | |||
grouping refresh-reduction-extended-config { | grouping refresh-reduction-extended-config { | |||
description | description | |||
"Configuration parameters relating to RSVP | "Configuration parameters relating to RSVP | |||
refresh reduction"; | refresh reduction"; | |||
leaf bundle-message-max-size { | leaf bundle-message-max-size { | |||
type uint32 { | type uint32 { | |||
range "512..65000"; | range "512..65000"; | |||
} | } | |||
description | description | |||
"Configure maximum size (bytes) of a | "Configure maximum size (bytes) of a | |||
single RSVP Bundle message."; | single RSVP Bundle message."; | |||
} | } | |||
leaf reliable-ack-hold-time { | leaf reliable-ack-hold-time { | |||
type uint32; | type uint32; | |||
units milliseconds; | units "milliseconds"; | |||
description | description | |||
"Configure hold time in milliseconds for | "Configure hold time in milliseconds for | |||
sending RSVP ACK message(s)."; | sending RSVP ACK message(s)."; | |||
} | } | |||
leaf reliable-ack-max-size { | leaf reliable-ack-max-size { | |||
type uint32; | type uint32; | |||
description | description | |||
"Configure max size of a single RSVP ACK | "Configure max size of a single RSVP ACK | |||
message."; | message."; | |||
} | } | |||
leaf reliable-retransmit-time { | leaf reliable-retransmit-time { | |||
type uint32; | type uint32; | |||
units milliseconds; | units "milliseconds"; | |||
description | description | |||
"Configure min delay in milliseconds to | "Configure min delay in milliseconds to | |||
wait for an ACK before a retransmit."; | wait for an ACK before a retransmit."; | |||
} | } | |||
leaf reliable-srefresh { | leaf reliable-srefresh { | |||
type empty; | type empty; | |||
description | description | |||
"Configure use of reliable messaging for | "Configure use of reliable messaging for | |||
summary refresh if present."; | summary refresh if present."; | |||
} | } | |||
leaf summary-max-size { | leaf summary-max-size { | |||
type uint32 { | type uint32 { | |||
range "20..65000"; | range "20..65000"; | |||
} | } | |||
description | description | |||
"Configure max size (bytes) of a single | "Configure max size (bytes) of a single | |||
RSVP summary refresh message."; | RSVP summary refresh message."; | |||
} | } | |||
} | } | |||
grouping packets-extended-state { | grouping packets-extended-statistics { | |||
description | description | |||
"Packet statistics."; | "Packet statistics."; | |||
leaf discontinuity-time { | leaf discontinuity-time { | |||
type yang:date-and-time; | type yang:date-and-time; | |||
description | description | |||
"The time on the most recent occasion at which any one | "The time on the most recent occasion at which any one | |||
or more of the statistic counters suffered a | or more of the statistic counters suffered a | |||
discontinuity. If no such discontinuities have occurred | discontinuity. If no such discontinuities have occurred | |||
since the last re-initialization of the local | since the last re-initialization of the local | |||
management subsystem, then this node contains the time | management subsystem, then this node contains the time | |||
the local management subsystem re-initialized itself."; | the local management subsystem re-initialized itself."; | |||
} | } | |||
leaf out-dropped { | leaf out-dropped { | |||
type yang:counter64; | type yang:counter64; | |||
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-errors { | leaf out-errors { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"Out packet errors count"; | "Out packet errors count"; | |||
} | } | |||
leaf in-errors { | leaf in-errors { | |||
type yang:counter64; | type yang:counter64; | |||
description | description | |||
"In packet rx errors count"; | "In packet rx errors count"; | |||
} | } | |||
} | } | |||
grouping protocol-extended-state { | grouping messages-extended-statistics { | |||
description "RSVP protocol statistics."; | description | |||
"RSVP protocol statistics."; | ||||
} | } | |||
grouping errors-extended-state { | grouping errors-extended-statistics { | |||
description | description | |||
"Error statistics."; | "Error statistics."; | |||
} | } | |||
grouping extended-state { | ||||
description "RSVP statistic attributes."; | ||||
uses packets-extended-state; | ||||
uses protocol-extended-state; | ||||
uses errors-extended-state; | ||||
} | ||||
/** | /** | |||
* RSVP extensions augmentations | * RSVP extensions augmentations | |||
*/ | */ | |||
/* RSVP globals graceful restart*/ | /* RSVP globals graceful restart*/ | |||
augment "/rt:routing/rt:control-plane-protocols/" + | ||||
"rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + | augment "/rt:routing/rt:control-plane-protocols/" | |||
"rsvp:graceful-restart" { | + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" | |||
+ "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/" + | ||||
"rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + | augment "/rt:routing/rt:control-plane-protocols/" | |||
"rsvp:statistics/rsvp:packets" { | + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" | |||
+ "rsvp:statistics/rsvp:packets" { | ||||
description | description | |||
"RSVP packet stats extensions"; | "RSVP packet stats extensions"; | |||
uses packets-extended-state; | uses packets-extended-statistics; | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" + | ||||
"rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + | augment "/rt:routing/rt:control-plane-protocols/" | |||
"rsvp:statistics/rsvp:messages" { | + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" | |||
+ "rsvp:statistics/rsvp:messages" { | ||||
description | description | |||
"RSVP protocol message stats extensions"; | "RSVP protocol message stats extensions"; | |||
uses protocol-extended-state; | uses messages-extended-statistics; | |||
} | } | |||
augment "/rt:routing/rt:control-plane-protocols/" + | ||||
"rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" + | augment "/rt:routing/rt:control-plane-protocols/" | |||
"rsvp:statistics/rsvp:errors" { | + "rt:control-plane-protocol/rsvp:rsvp/rsvp:globals/" | |||
+ "rsvp:statistics/rsvp:errors" { | ||||
description | description | |||
"RSVP errors stats extensions"; | "RSVP errors stats extensions"; | |||
uses errors-extended-state; | uses errors-extended-statistics; | |||
} | } | |||
/** | /** | |||
* RSVP all interfaces extensions | * RSVP all interfaces extensions | |||
*/ | */ | |||
/* RSVP interface signaling extensions */ | /* RSVP interface signaling extensions */ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" { | + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" { | |||
description | description | |||
"RSVP signaling all interfaces configuration extensions"; | "RSVP signaling all interfaces configuration extensions"; | |||
uses signaling-parameters-extended-config; | uses signaling-parameters-extended-config; | |||
} | } | |||
/* RSVP refresh reduction extension */ | /* RSVP refresh reduction extension */ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" | + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" | |||
+ "rsvp:refresh-reduction" { | + "rsvp:refresh-reduction" { | |||
description | description | |||
"RSVP refresh-reduction all interface configuration | "RSVP refresh-reduction all interface configuration | |||
extensions"; | extensions"; | |||
uses refresh-reduction-extended-config; | uses refresh-reduction-extended-config; | |||
} | } | |||
/* RSVP hellos extension */ | /* RSVP hellos extension */ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" | + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" | |||
+ "rsvp:hellos" { | + "rsvp:hellos" { | |||
description | description | |||
"RSVP hello all interfaces configuration extensions"; | "RSVP hello all interfaces configuration extensions"; | |||
uses hellos-extended-config; | uses hellos-extended-config; | |||
} | } | |||
/* RSVP authentication extension */ | /* RSVP authentication extension */ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" | + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" | |||
+ "rsvp:authentication" { | + "rsvp:authentication" { | |||
description | description | |||
"RSVP authentication all interfaces configuration extensions"; | "RSVP authentication all interfaces configuration extensions"; | |||
uses authentication-extended-config; | uses authentication-extended-config; | |||
} | } | |||
/** | /** | |||
* RSVP interface extensions | * RSVP interface extensions | |||
*/ | */ | |||
/* RSVP interface signaling extensions */ | /* RSVP interface signaling extensions */ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + | + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" | |||
"rsvp:interface" { | + "rsvp:interface" { | |||
description | description | |||
"RSVP signaling interface configuration extensions"; | "RSVP signaling interface configuration extensions"; | |||
uses signaling-parameters-extended-config; | uses signaling-parameters-extended-config; | |||
} | } | |||
/* RSVP refresh reduction extension */ | /* RSVP refresh reduction extension */ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + | + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" | |||
"rsvp:interface/rsvp:refresh-reduction" { | + "rsvp:interface/rsvp:refresh-reduction" { | |||
description | description | |||
"RSVP refresh-reduction interface configuration extensions"; | "RSVP refresh-reduction interface configuration extensions"; | |||
uses refresh-reduction-extended-config; | uses refresh-reduction-extended-config; | |||
} | } | |||
/* RSVP hellos extension */ | /* RSVP hellos extension */ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + | + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" | |||
"rsvp:interface/rsvp:hellos" { | + "rsvp:interface/rsvp:hellos" { | |||
description | description | |||
"RSVP hello interface configuration extensions"; | "RSVP hello interface configuration extensions"; | |||
uses hellos-extended-config; | uses hellos-extended-config; | |||
} | } | |||
/* RSVP authentication extension */ | /* RSVP authentication extension */ | |||
augment "/rt:routing/rt:control-plane-protocols/" | augment "/rt:routing/rt:control-plane-protocols/" | |||
+ "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" + | + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/" | |||
"rsvp:interface/rsvp:authentication" { | + "rsvp:interface/rsvp:authentication" { | |||
description | description | |||
"RSVP authentication interface configuration extensions"; | "RSVP authentication interface configuration extensions"; | |||
uses authentication-extended-config; | uses authentication-extended-config; | |||
} | } | |||
} | } | |||
<CODE ENDS> | <CODE ENDS> | |||
Figure 5: RSVP extended YANG module | Figure 5: RSVP extended YANG module | |||
3. IANA Considerations | 3. IANA Considerations | |||
skipping to change at page 50, line 10 ¶ | skipping to change at page 50, line 10 ¶ | |||
[RFC8641] Clemm, A. and E. Voit, "Subscription to YANG Notifications | [RFC8641] Clemm, A. and E. Voit, "Subscription to YANG Notifications | |||
for Datastore Updates", RFC 8641, DOI 10.17487/RFC8641, | for Datastore Updates", RFC 8641, DOI 10.17487/RFC8641, | |||
September 2019, <https://www.rfc-editor.org/info/rfc8641>. | September 2019, <https://www.rfc-editor.org/info/rfc8641>. | |||
7.2. Informative References | 7.2. Informative References | |||
[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 Protocol", | and H. Shah, "A YANG Data Model for RSVP-TE Protocol", | |||
draft-ietf-teas-yang-rsvp-te-07 (work in progress), July | draft-ietf-teas-yang-rsvp-te-08 (work in progress), March | |||
2019. | 2020. | |||
Authors' Addresses | Authors' Addresses | |||
Vishnu Pavan Beeram | Vishnu Pavan Beeram | |||
Juniper Networks | Juniper Networks | |||
Email: vbeeram@juniper.net | Email: vbeeram@juniper.net | |||
Tarek Saad | Tarek Saad | |||
Juniper Networks | Juniper Networks | |||
Email: tsaad@juniper.net | 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 | Volta Networks | |||
Email: Xufeng_Liu@jabil.com | Email: xufeng.liu.ietf@gmail.com | |||
Igor Bryskin | Igor Bryskin | |||
Huawei Technologies | Individual | |||
Email: Igor.Bryskin@huawei.com | Email: i_bryskin@yahoo.com | |||
End of changes. 223 change blocks. | ||||
510 lines changed or deleted | 524 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/ |