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