--- 1/draft-ietf-teas-yang-rsvp-00.txt 2015-10-19 08:16:18.148416403 -0700 +++ 2/draft-ietf-teas-yang-rsvp-01.txt 2015-10-19 08:16:18.272419426 -0700 @@ -1,30 +1,30 @@ TEAS Working Group V. Beeram Internet-Draft Juniper Networks Intended status: Standards Track T. Saad -Expires: March 20, 2016 R. Gandhi +Expires: April 18, 2016 R. Gandhi Cisco Systems Inc X. Liu Ericsson H. Shah Ciena X. Chen Huawei Technologies R. Jones Brocade B. Wen Comcast - September 17, 2015 + October 16, 2015 A YANG Data Model for Resource Reservation Protocol (RSVP) - draft-ietf-teas-yang-rsvp-00 + draft-ietf-teas-yang-rsvp-01 Abstract This document defines a YANG data model for the configuration and management of RSVP Protocol. The model defines generic RSVP protocol building blocks that can be augmented and used by other RSVP extension models such as RVSP extensions to Traffic-Engineering (RSVP-TE). The model covers the RSVP protocol configuration, operational state, remote procedural calls, and event notifications data. @@ -37,21 +37,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 January 7, 2016. + This Internet-Draft will expire on April 18, 2016. Copyright Notice Copyright (c) 2015 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 @@ -65,47 +65,47 @@ 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1. Terminology . . . . . . . . . . . . . . . . . . . . . . . 3 1.2. Tree Diagram . . . . . . . . . . . . . . . . . . . . . . 3 1.3. Prefixes in Data Node Names . . . . . . . . . . . . . . . 4 1.4. Open Issues and Next Steps . . . . . . . . . . . . . . . 5 1.4.1. Module Hierarchy . . . . . . . . . . . . . . . . . . 5 1.4.2. Model Data Organization . . . . . . . . . . . . . . . 5 1.4.3. State Data . . . . . . . . . . . . . . . . . . . . . 5 2. Design Considerations . . . . . . . . . . . . . . . . . . . . 6 - 2.1. Base Model . . . . . . . . . . . . . . . . . . . . . . . 6 - 2.2. Feature Set . . . . . . . . . . . . . . . . . . . . . . . 7 + 2.1. Base Model(s) . . . . . . . . . . . . . . . . . . . . . . 6 + 2.2. Extended Model(s) . . . . . . . . . . . . . . . . . . . . 7 2.3. Configuration Inheritance . . . . . . . . . . . . . . . . 7 2.4. Vendor Configuration Models . . . . . . . . . . . . . . . 8 3. Model Organization . . . . . . . . . . . . . . . . . . . . . 8 - 4. RSVP Base YANG Model . . . . . . . . . . . . . . . . . . . . 8 - 4.1. Configuration and State Data . . . . . . . . . . . . . . 10 - 4.1.1. Interface Data . . . . . . . . . . . . . . . . . . . 11 - 4.1.2. Session Data . . . . . . . . . . . . . . . . . . . . 16 - 4.1.3. Neighbor Data . . . . . . . . . . . . . . . . . . . . 16 - 4.2. RPC and Notification Data . . . . . . . . . . . . . . . . 17 - 4.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 17 - 5. RSVP-TE Generic YANG Model . . . . . . . . . . . . . . . . . 39 - 5.1. Configuration and State Data . . . . . . . . . . . . . . 40 - 5.2. RPC and Notification Data . . . . . . . . . . . . . . . . 43 - 5.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 43 - 6. RSVP-TE MPLS Packet Model . . . . . . . . . . . . . . . . . . 50 - 6.1. Configuration and State Data . . . . . . . . . . . . . . 51 - 6.2. RPC and Notification Data . . . . . . . . . . . . . . . . 53 - 6.3. YANG Module . . . . . . . . . . . . . . . . . . . . . . . 53 - 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 62 - 8. Security Considerations . . . . . . . . . . . . . . . . . . . 63 - 9. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 63 - 10. References . . . . . . . . . . . . . . . . . . . . . . . . . 63 - 10.1. Normative References . . . . . . . . . . . . . . . . . . 63 - 10.2. Informative References . . . . . . . . . . . . . . . . . 65 - Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 65 + 3.1. RSVP Base YANG Model . . . . . . . . . . . . . . . . . . 8 + 3.1.1. Configuration and State Data . . . . . . . . . . . . 10 + 3.1.2. RPC and Notification Data . . . . . . . . . . . . . . 15 + 3.1.3. YANG Module . . . . . . . . . . . . . . . . . . . . . 15 + 3.2. RSVP Extended YANG Model . . . . . . . . . . . . . . . . 31 + 3.2.1. Configuration and State Data . . . . . . . . . . . . 31 + 3.2.2. YANG Module . . . . . . . . . . . . . . . . . . . . . 34 + 3.3. RSVP-TE Generic YANG Model . . . . . . . . . . . . . . . 44 + 3.3.1. Configuration and State Data . . . . . . . . . . . . 44 + 3.3.2. RPC and Notification Data . . . . . . . . . . . . . . 47 + 3.3.3. YANG Module . . . . . . . . . . . . . . . . . . . . . 47 + 3.4. RSVP-TE MPLS Packet Model . . . . . . . . . . . . . . . . 55 + 3.4.1. Configuration and State Data . . . . . . . . . . . . 55 + 3.4.2. RPC and Notification Data . . . . . . . . . . . . . . 59 + 3.4.3. YANG Module . . . . . . . . . . . . . . . . . . . . . 59 + 4. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 70 + 5. Security Considerations . . . . . . . . . . . . . . . . . . . 71 + 6. Acknowledgement . . . . . . . . . . . . . . . . . . . . . . . 71 + 7. References . . . . . . . . . . . . . . . . . . . . . . . . . 71 + 7.1. Normative References . . . . . . . . . . . . . . . . . . 71 + 7.2. Informative References . . . . . . . . . . . . . . . . . 73 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 73 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 interface, such as CLI and programmatic @@ -234,71 +234,79 @@ The second option entails defining a new read-only parent container in the model (e.g. neighbors-state) that holds the data. This revision of the draft adopts the first option. Further discussions on this topic are expected to close on the best choice to adopt. 2. Design Considerations -2.1. Base Model +2.1. Base Model(s) - The base model discussed in this section covers base RSVP [RFC2205], - and enhancements that pertain to the base protocol operation. RSVP- - TE [RFC3209] and other traffic-engineering specific enhancements have - been deliberately left out of this model to enable users to configure - just the base RSVP protocol features in scenarios where traffic- - engineering is not enabled/required. The generic and packet specific - RSVP traffic-engineering model is an augmentation to the RSVP base - model and is discussed in this revision of the document the packet - RSVP-TE model is presented in Section 5. + The base RSVP model covers core features with the minimal set of + configuration parameters needed to operate them. Additional core + RSVP parameter configuration(s) as well as extended RSVP feature(s) + are covered in a separate RSVP extended model. + + The RSVP-TE [RFC3209] and other traffic-engineering specific + enhancements are also addressed in separate module(s). The generic + and packet specific RSVP traffic-engineering models are augmentations + to the RSVP base model and are discussed in this revision of the + document in Section 3.3. Currently, the RSVP-TE module is presented as part of this draft, and is mostly packet centric. It is expected that the RSVP-TE YANG model will move to a separate document in the next revision. TE basic +---------+ ^: import module | ietf-te | o: augment +---------+ | o | | v | +--------------+ RSVP-TE module | ietf-rsvp-te |o . . . +--------------+ \ ^ | \ | o +-------------------+ +-----------+ | ietf-rsvp-otn-te | RSVP module | ietf-rsvp | +-------------------+ +-----------+ RSVP-TE with OTN - extensions - (shown for illustration - not in this document) + o extensions + | (shown for illustration + RSVP extended | not in this document) + module +--------------------+ + | ietf-rsvp-extended | + +--------------------+ Figure 1: Relationship of RSVP and RSVP-TE modules with other protocol modules -2.2. Feature Set - - The model in this revision of the document does not aim to be feature - complete. The primary intent is to cover a set of standard generic - features (listed below) that are commonly in use. + The RSVP base model in this revision of the document does not aim to + be feature complete. The primary intent is to cover a set of + standard core features (listed below) that are commonly in use. o Authentication ([RFC2747]) o Refresh Reduction ([RFC2961]) o Hellos ([RFC3209]) o Graceful Restart ([RFC3473], [RFC5063]) +2.2. Extended Model(s) + + The extended RSVP YANG model covers non-basic configuration(s) for + RSVP core feature(s) as well as optional RSVP feature that are not a + must for basic RSVP operation. + 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 implementations. @@ -316,29 +324,26 @@ o VRF centric - all the protocol related configuration for a routing- instance is contained within this routing-instance. On-going discussions within the IETF community have converged on adopting the VRF centric approach. The proposed model in this document adheres to this conclusion. 3. Model Organization - This document defines three YANG data models that cover the RSVP - base, RSVP-TE generic, and RSVP-TE MPLS packet data that cover the - configuration, state, RPCs, and notifications properties. The - relationship between the different modules is depicted in Figure 1. - - data pertaining to the configuration and operation of parameters - applicable globally, per interface, neighbor or session. + This document defines YANG data models for RSVP base, RSVP extended, + RSVP-TE generic, and RSVP-TE packet MPLS configuration, state, + notification and RPCs. The relationship between the different + modules is depicted in Figure 1. -4. RSVP Base YANG Model +3.1. RSVP Base YANG Model This section describes the RSVP base YANG data model. It covers base RSVP protocol data defined by RSVP [RFC2205], and enhancements that pertain to the base protocol operation. The container "rsvp" is the top level container in this data model. The presence of this container is expected to enable RSVP protocol functionality. The approach described in [I-D.openconfig-netmod-opstate] allows for @@ -400,213 +405,107 @@ +--n global-notif +--n interfaces-notif +--n neighbors-notif +--n sessions-notif Figure 2: RSVP highlevel model view The following subsections provide overview of the parts of the model pertaining to configuration and state data. -4.1. Configuration and State Data +3.1.1. Configuration and State Data - ### Global Data +3.1.1.1. Global Data This branch of the data model covers global configuration and states that control RSVP protocol behavior. module: ietf-rsvp +--rw rsvp! +--rw globals | +--rw config + | | +--rw graceful-restart + | | +--rw enabled? boolean | +--ro state - | | +--ro statistics - | | +--ro discontinuity-time? yang:date-and-time - | | +--ro packet - | | | +--ro sent? yang:counter32 - | | | +--ro rcvd? yang:counter32 - | | | +--ro tx-dropped? yang:counter32 - | | | +--ro rx-dropped? yang:counter32 - | | | +--ro tx-error? yang:counter32 - | | | +--ro rx-error? yang:counter32 - | | +--ro protocol - | | | +--ro ack-sent? yang:counter32 - | | | +--ro ack-rcvd? yang:counter32 - | | | +--ro bundle-sent? yang:counter32 - | | | +--ro bundle-rcvd? yang:counter32 - | | | +--ro hello-sent? yang:counter32 - | | | +--ro hello-rcvd? yang:counter32 - | | | +--ro integrity-challenge-sent? yang:counter32 - | | | +--ro integrity-challenge-rcvd? yang:counter32 - | | | +--ro integrity-response-sent? yang:counter32 - | | | +--ro integrity-response-rcvd? yang:counter32 - | | | +--ro notify-sent? yang:counter32 - | | | +--ro notify-rcvd? yang:counter32 - | | | +--ro path-sent? yang:counter32 - | | | +--ro path-rcvd? yang:counter32 - | | | +--ro path-err-sent? yang:counter32 - | | | +--ro path-err-rcvd? yang:counter32 - | | | +--ro path-tear-sent? yang:counter32 - | | | +--ro path-tear-rcvd? yang:counter32 - | | | +--ro resv-sent? yang:counter32 - | | | +--ro resv-rcvd? yang:counter32 - | | | +--ro resv-confirm-sent? yang:counter32 - | | | +--ro resv-confirm-rcvd? yang:counter32 - | | | +--ro resv-err-sent? yang:counter32 - | | | +--ro resv-err-rcvd? yang:counter32 - | | | +--ro resv-tear-sent? yang:counter32 - | | | +--ro resv-tear-rcvd? yang:counter32 - | | | +--ro summary-refresh-sent? yang:counter32 - | | | +--ro summary-refresh-rcvd? yang:counter32 - | | | +--ro unknown-recv? yang:counter32 - | | +--ro error - | | +--ro authentication? yang:counter64 - | | +--ro checksum? yang:counter64 - | | +--ro packet-len? yang:counter64 - | +--rw graceful-restart! {graceful-restart}? - | +--rw config - | | +--rw restart-time? uint32 - | | +--rw recovery-time? uint32 - | +--ro state - | +--ro restart-time? uint32 - | +--ro recovery-time? uint32 + | +--ro graceful-restart + | | +--ro enabled? boolean + | +--ro packets-stats + | | +--ro sent? yang:counter32 + | | +--ro rcvd? yang:counter32 + | +--ro protocol-stats + | | +--ro ack-sent? yang:counter32 + | | +--ro ack-rcvd? yang:counter32 + | | +--ro bundle-sent? yang:counter32 + | | +--ro bundle-rcvd? yang:counter32 + | | +--ro hello-sent? yang:counter32 + | | +--ro hello-rcvd? yang:counter32 + | | +--ro integrity-challenge-sent? yang:counter32 + | | +--ro integrity-challenge-rcvd? yang:counter32 + | | +--ro integrity-response-sent? yang:counter32 + | | +--ro integrity-response-rcvd? yang:counter32 + | | +--ro notify-sent? yang:counter32 + | | +--ro notify-rcvd? yang:counter32 + | | +--ro path-sent? yang:counter32 + | | +--ro path-rcvd? yang:counter32 + | | +--ro path-err-sent? yang:counter32 + | | +--ro path-err-rcvd? yang:counter32 + | | +--ro path-tear-sent? yang:counter32 + | | +--ro path-tear-rcvd? yang:counter32 + | | +--ro resv-sent? yang:counter32 + | | +--ro resv-rcvd? yang:counter32 + | | +--ro resv-confirm-sent? yang:counter32 + | | +--ro resv-confirm-rcvd? yang:counter32 + | | +--ro resv-err-sent? yang:counter32 + | | +--ro resv-err-rcvd? yang:counter32 + | | +--ro resv-tear-sent? yang:counter32 + | | +--ro resv-tear-rcvd? yang:counter32 + | | +--ro summary-refresh-sent? yang:counter32 + | | +--ro summary-refresh-rcvd? yang:counter32 + | | +--ro unknown-recv? yang:counter32 + | +--ro errors-stats + | +--ro authenticate? yang:counter64 + | +--ro checksum? yang:counter64 + | +--ro packet-len? yang:counter64 -4.1.1. Interface Data +3.1.1.2. Interface Data This branch of the data model covers configuration and state elements relevant to one or all RSVP interfaces. Any data configuration applied at the "interfaces" container level are equally applicable to all interfaces - unless overridden by explicit configuration under a specific interface. module: ietf-rsvp +--rw rsvp! +--rw interfaces | +--rw config + | | +--rw refresh-reduction + | | | +--rw enabled? boolean + | | +--rw rsvp-hellos + | | | +--rw enabled? boolean + | | +--rw authentication + | | +--rw enabled? boolean + | | +--rw password? string + | | +--rw algorithm? identityref | +--ro state - | | +--ro statistics - | | +--ro discontinuity-time? yang:date-and-time - | | +--ro packet - | | | +--ro sent? yang:counter32 - | | | +--ro rcvd? yang:counter32 - | | | +--ro tx-dropped? yang:counter32 - | | | +--ro rx-dropped? yang:counter32 - | | | +--ro tx-error? yang:counter32 - | | | +--ro rx-error? yang:counter32 - | | +--ro protocol - | | | +--ro ack-sent? yang:counter32 - | | | +--ro ack-rcvd? yang:counter32 - | | | +--ro bundle-sent? yang:counter32 - | | | +--ro bundle-rcvd? yang:counter32 - | | | +--ro hello-sent? yang:counter32 - | | | +--ro hello-rcvd? yang:counter32 - | | | +--ro integrity-challenge-sent? yang:counter32 - | | | +--ro integrity-challenge-rcvd? yang:counter32 - | | | +--ro integrity-response-sent? yang:counter32 - | | | +--ro integrity-response-rcvd? yang:counter32 - | | | +--ro notify-sent? yang:counter32 - | | | +--ro notify-rcvd? yang:counter32 - | | | +--ro path-sent? yang:counter32 - | | | +--ro path-rcvd? yang:counter32 - | | | +--ro path-err-sent? yang:counter32 - | | | +--ro path-err-rcvd? yang:counter32 - | | | +--ro path-tear-sent? yang:counter32 - | | | +--ro path-tear-rcvd? yang:counter32 - | | | +--ro resv-sent? yang:counter32 - | | | +--ro resv-rcvd? yang:counter32 - | | | +--ro resv-confirm-sent? yang:counter32 - | | | +--ro resv-confirm-rcvd? yang:counter32 - | | | +--ro resv-err-sent? yang:counter32 - | | | +--ro resv-err-rcvd? yang:counter32 - | | | +--ro resv-tear-sent? yang:counter32 - | | | +--ro resv-tear-rcvd? yang:counter32 - | | | +--ro summary-refresh-sent? yang:counter32 - | | | +--ro summary-refresh-rcvd? yang:counter32 - | | | +--ro unknown-recv? yang:counter32 - | | +--ro error - | | +--ro authentication? yang:counter64 - | | +--ro checksum? yang:counter64 - | | +--ro packet-len? yang:counter64 - | +--rw signaling-parameters - | | +--rw config - | | | +--rw refresh-interval? uint32 - | | | +--rw refresh-misses? uint32 - | | | +--rw checksum? uint32 - | | | +--rw patherr-state-removal? empty - | | +--ro state - | | +--ro refresh-interval? uint32 - | | +--ro refresh-misses? uint32 - | | +--ro checksum? uint32 - | | +--ro patherr-state-removal? empty - | +--rw refresh-reduction {refresh-reduction}? - | | +--rw config - | | | +--rw bundle-message-max-size? uint32 - | | | +--rw disable? empty - | | | +--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 - | | +--ro state - | | +--ro bundle-message-max-size? uint32 - | | +--ro disable? empty - | | +--ro reliable-ack-hold-time? uint32 - | | +--ro reliable-ack-max-size? uint32 - | | +--ro reliable-retransmit-time? uint32 - | | +--ro reliable-srefresh? empty - | | +--ro summary-max-size? uint32 - | +--rw rsvp-hellos {hellos}? - | | +--rw config - | | | +--rw interface-based? empty - | | | +--rw hello-interval? uint32 - | | | +--rw hello-misses? uint32 - | | +--ro state - | | +--ro interface-based? empty - | | +--ro hello-interval? uint32 - | | +--ro hello-misses? uint32 - | +--rw authentication {authentication}? - | | +--rw config - | | | +--rw lifetime? uint32 - | | | +--rw window-size? uint32 - | | | +--rw challenge? empty - | | | +--rw retransmits? uint32 - | | | +--rw (authentication-type)? - | | | +--:(string) - | | | | +--rw password? string - | | | | +--rw algorithm? identityref - | | | +--:(key-chain) - | | | +--rw key-chain? string - | | +--ro state - | | +--ro lifetime? uint32 - | | +--ro window-size? uint32 - | | +--ro challenge? empty - | | +--ro retransmits? uint32 - | | +--ro (authentication-type)? - | | +--:(string) + | | +--ro refresh-reduction + | | | +--ro enabled? boolean + | | +--ro rsvp-hellos + | | | +--ro enabled? boolean + | | +--ro authentication + | | | +--ro enabled? boolean | | | +--ro password? string | | | +--ro algorithm? identityref - | | +--:(key-chain) - | | +--ro key-chain? string - | +--rw interface* [interface] - | +--rw interface if:interface-ref - | +--rw config - | +--ro state - | | +--ro statistics - | | +--ro discontinuity-time? yang:date-and-time - | | +--ro packet + | | +--ro packets-stats | | | +--ro sent? yang:counter32 | | | +--ro rcvd? yang:counter32 - | | | +--ro tx-dropped? yang:counter32 - | | | +--ro rx-dropped? yang:counter32 - | | | +--ro tx-error? yang:counter32 - | | | +--ro rx-error? yang:counter32 - | | +--ro protocol + | | +--ro protocol-stats | | | +--ro ack-sent? yang:counter32 | | | +--ro ack-rcvd? yang:counter32 | | | +--ro bundle-sent? yang:counter32 | | | +--ro bundle-rcvd? yang:counter32 | | | +--ro hello-sent? yang:counter32 | | | +--ro hello-rcvd? yang:counter32 | | | +--ro integrity-challenge-sent? yang:counter32 | | | +--ro integrity-challenge-rcvd? yang:counter32 | | | +--ro integrity-response-sent? yang:counter32 | | | +--ro integrity-response-rcvd? yang:counter32 @@ -622,103 +521,99 @@ | | | +--ro resv-rcvd? yang:counter32 | | | +--ro resv-confirm-sent? yang:counter32 | | | +--ro resv-confirm-rcvd? yang:counter32 | | | +--ro resv-err-sent? yang:counter32 | | | +--ro resv-err-rcvd? yang:counter32 | | | +--ro resv-tear-sent? yang:counter32 | | | +--ro resv-tear-rcvd? yang:counter32 | | | +--ro summary-refresh-sent? yang:counter32 | | | +--ro summary-refresh-rcvd? yang:counter32 | | | +--ro unknown-recv? yang:counter32 - | | +--ro error - | | +--ro authentication? yang:counter64 + | | +--ro errors-stats + | | +--ro authenticate? yang:counter64 | | +--ro checksum? yang:counter64 | | +--ro packet-len? yang:counter64 - | +--rw signaling-parameters - | | +--rw config - | | | +--rw refresh-interval? uint32 - | | | +--rw refresh-misses? uint32 - | | | +--rw checksum? uint32 - | | | +--rw patherr-state-removal? empty - | | +--ro state - | | +--ro refresh-interval? uint32 - | | +--ro refresh-misses? uint32 - | | +--ro checksum? uint32 - | | +--ro patherr-state-removal? empty - | +--rw refresh-reduction {refresh-reduction}? - | | +--rw config - | | | +--rw bundle-message-max-size? uint32 - | | | +--rw disable? empty - | | | +--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 - | | +--ro state - | | +--ro bundle-message-max-size? uint32 - | | +--ro disable? empty - | | +--ro reliable-ack-hold-time? uint32 - | | +--ro reliable-ack-max-size? uint32 - | | +--ro reliable-retransmit-time? uint32 - | | +--ro reliable-srefresh? empty - | | +--ro summary-max-size? uint32 - | +--rw rsvp-hellos {hellos}? - | | +--rw config - | | | +--rw interface-based? empty - | | | +--rw hello-interval? uint32 - | | | +--rw hello-misses? uint32 - | | +--ro state - | | +--ro interface-based? empty - | | +--ro hello-interval? uint32 - | | +--ro hello-misses? uint32 - | +--rw authentication {authentication}? + | +--rw interface* [interface] + | +--rw interface if:interface-ref | +--rw config - | | +--rw lifetime? uint32 - | | +--rw window-size? uint32 - | | +--rw challenge? empty - | | +--rw retransmits? uint32 - | | +--rw (authentication-type)? - | | +--:(string) - | | | +--rw password? string - | | | +--rw algorithm? identityref - | | +--:(key-chain) - | | +--rw key-chain? string + | | +--rw refresh-reduction + | | | +--rw enabled? boolean + | | +--rw rsvp-hellos + | | | +--rw enabled? boolean + | | +--rw authentication + | | +--rw enabled? boolean + | | +--rw password? string + | | +--rw algorithm? identityref | +--ro state - | +--ro lifetime? uint32 - | +--ro window-size? uint32 - | +--ro challenge? empty - | +--ro retransmits? uint32 - | +--ro (authentication-type)? - | +--:(string) + | +--ro refresh-reduction + | | +--ro enabled? boolean + | +--ro rsvp-hellos + | | +--ro enabled? boolean + | +--ro authentication + | | +--ro enabled? boolean | | +--ro password? string | | +--ro algorithm? identityref - | +--:(key-chain) - | +--ro key-chain? string + | +--ro packets-stats + | | +--ro sent? yang:counter32 + | | +--ro rcvd? yang:counter32 + | +--ro protocol-stats + | | +--ro ack-sent? yang:counter32 + | | +--ro ack-rcvd? yang:counter32 + | | +--ro bundle-sent? yang:counter32 + | | +--ro bundle-rcvd? yang:counter32 + | | +--ro hello-sent? yang:counter32 + | | +--ro hello-rcvd? yang:counter32 + | | +--ro integrity-challenge-sent? yang:counter32 + | | +--ro integrity-challenge-rcvd? yang:counter32 + | | +--ro integrity-response-sent? yang:counter32 + | | +--ro integrity-response-rcvd? yang:counter32 + | | +--ro notify-sent? yang:counter32 + | | +--ro notify-rcvd? yang:counter32 + | | +--ro path-sent? yang:counter32 + | | +--ro path-rcvd? yang:counter32 + | | +--ro path-err-sent? yang:counter32 + | | +--ro path-err-rcvd? yang:counter32 + | | +--ro path-tear-sent? yang:counter32 + | | +--ro path-tear-rcvd? yang:counter32 + | | +--ro resv-sent? yang:counter32 + | | +--ro resv-rcvd? yang:counter32 + | | +--ro resv-confirm-sent? yang:counter32 + | | +--ro resv-confirm-rcvd? yang:counter32 + | | +--ro resv-err-sent? yang:counter32 + | | +--ro resv-err-rcvd? yang:counter32 + | | +--ro resv-tear-sent? yang:counter32 + | | +--ro resv-tear-rcvd? yang:counter32 + | | +--ro summary-refresh-sent? yang:counter32 + | | +--ro summary-refresh-rcvd? yang:counter32 + | | +--ro unknown-recv? yang:counter32 + | +--ro errors-stats + | +--ro authenticate? yang:counter64 + | +--ro checksum? yang:counter64 + | +--ro packet-len? yang:counter64 -4.1.2. Session Data +3.1.1.3. Session Data This branch of the data model covers configuration of elements relevant to RSVP neighbors. This would be discussed in detail in future revisions. module: ietf-rsvp +--rw rsvp! +--rw sessions - | +--rw session* [src_port dst_port source destination] - | +--rw src_port uint16 + | +--rw session* [dst_port source destination] | +--rw dst_port uint16 | +--rw source inet:ip-address | +--rw destination inet:ip-address | +--rw config | +--ro state -4.1.3. Neighbor Data +3.1.1.4. Neighbor Data This branch of the data model covers configuration of elements relevant to RSVP sessions. This would be discussed in detail in future revisions. module: ietf-rsvp +--rw rsvp! +--rw neighbors +--rw neighbor* [address] +--rw address inet:ip-address @@ -741,38 +636,36 @@ | +--ro nbr-recovery-ttd? uint32 +--ro hello-status? enumeration {hellos}? +--ro interface? if:interface-ref +--ro neighbor-state? enumeration +--ro psb-count? uint32 +--ro rsb-count? uint32 +--ro refresh-reduction-capable? boolean +--ro restart-count? uint32 +--ro restart-time? yang:date-and-time -4.2. RPC and Notification Data +3.1.2. RPC and Notification Data TBD. -4.3. YANG Module +3.1.3. YANG Module + + file "ietf-rsvp@2015-10-16.yang" - file "ietf-rsvp@2015-07-06.yang" module ietf-rsvp { namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp"; - /* Replace with IANA when assigned */ prefix "rsvp"; - /* import ietf-inet-types { prefix inet; } */ import ietf-interfaces { prefix "if"; - } import ietf-inet-types { prefix inet; } import ietf-yang-types { prefix "yang"; } @@ -777,21 +670,21 @@ } organization "IETF TEAS Working Group"; contact "TBA"; description "This module contains the RSVP YANG data model."; - revision 2015-07-06 { + revision 2015-10-16 { description "Latest revision of RSVP yang module."; reference "RFC2205"; } identity hash-algorithm { description "Base identity for message-digest algorithm"; } identity MD5 { @@ -801,423 +694,409 @@ reference "RFC1321"; } identity SHA-1 { base hash-algorithm; description "SHA-1 hash algorithm"; reference "NIST, FIPS PUB 180-1: Secure Hash Standard"; } - /* RSVP features */ - feature authentication { - description - "Indicates support for RSVP authentication"; - } - feature error-statistics { - description - "Indicates support for error statistics"; - } - - feature global-statistics { - description - "Indicates support for global statistics"; - } - - feature graceful-restart { - description - "Indicates support for RSVP graceful restart"; - } - - feature hellos { - description - "Indicates support for RSVP hellos (RFC3209)."; - } - - feature notify { - description - "Indicates support for RSVP notify message (RFC3473)."; - } - - feature refresh-reduction { - description - "Indicates support for RSVP refresh reduction - (RFC2961)."; - } - - feature per-interface-statistics { - description - "Indicates support for per interface statistics"; - } - grouping graceful-restart_config { description - "Configuration parameters relating to RSVP + "Base configuration parameters relating to RSVP Graceful-Restart"; - leaf restart-time { - type uint32; - description - "Graceful restart time (seconds)."; - reference - "RFC 5495: Description of the Resource - Reservation Protocol - Traffic-Engineered - (RSVP-TE) Graceful Restart Procedures"; - - } - leaf recovery-time { - type uint32; + leaf enabled { + type boolean; description - "RSVP state recovery time"; + "'true' if RSVP Graceful Restart is enabled. + 'false' if RSVP Graceful Restart is disabled."; } } grouping graceful-restart { description "Top level grouping for RSVP graceful-restart parameters"; container graceful-restart { - if-feature graceful-restart; - presence "Enable RSVP graceful restart on the node."; description "Top level container for RSVP graceful-restart"; - container config { - description - "Configuration parameters relating to - graceful-restart"; - uses graceful-restart_config; - } - container state { - config false; - description - "State information associated with RSVP - graceful-restart"; uses graceful-restart_config; } } - } - grouping authentication_config { + grouping refresh-reduction_config { description "Configuration parameters relating to RSVP - authentication"; - leaf lifetime { - type uint32 { - range "30..86400"; - } + refresh reduction"; + + leaf enabled { + type boolean; description - "Life time for each security association"; - reference - "RFC 2747: RSVP Cryptographic - Authentication"; + "'true' if RSVP Refresh Reduction is enabled. + 'false' if RSVP Refresh Reduction is disabled."; } - leaf window-size { - type uint32 { - range "1..64"; } + + grouping refresh-reduction { description - "Window-size to limit number of out-of-order - messages."; - reference - "RFC 2747: RSVP Cryptographic - Authentication"; - } - leaf challenge { - type empty; + "Top level grouping for RSVP refresh reduction + parameters"; + container refresh-reduction { description - "Enable challenge messages."; - reference - "RFC 2747: RSVP Cryptographic - Authentication"; + "Top level container for RSVP refresh reduction + parameters"; + uses refresh-reduction_config; } - leaf retransmits { - type uint32 { - range "1..10000"; } + + grouping authentication_config { description - "Number of retransmits when messages are - dropped."; - reference - "RFC 2747: RSVP Cryptographic - Authentication"; - } - choice authentication-type { + "Configuration parameters relating to RSVP + authentication"; + leaf enabled { + type boolean; description - "RSVP authentication choices"; - case string { + "'true' if RSVP Authenticaiton is enabled. + 'false' if RSVP Authenticaiton is disabled."; + } leaf password { type string; description "An authentication key string"; } leaf algorithm { type identityref { base hash-algorithm; } description "Cryptographic hash algorithm"; } } - case key-chain { - description - "Configure RSVP authentication."; - leaf key-chain { - type string { - length "1..32"; - } - description - "Key chain name to authenticate RSVP - signaling messages."; - reference - "RFC 2747: RSVP Cryptographic - Authentication"; - } - } - } - } grouping authentication { description "Top level grouping for RSVP authentication parameters"; container authentication { - if-feature authentication; description "Top level container for RSVP authentication parameters"; - container config { - description - "Configuration parameters relating to - RSVP authentication"; - uses authentication_config; - } - container state { - config false; - description - "State information associated with RSVP - authentication"; uses authentication_config; } } - } grouping rsvp-hellos_config { description "Configuration parameters relating to RSVP hellos"; - leaf interface-based { - type empty; - description "Enable interface-based - Hello adjacency if present."; + leaf enabled { + type boolean; + description + "'true' if RSVP Hello is enabled. + 'false' if RSVP Hello is disabled."; + } + } + grouping rsvp-hellos { + description + "Top level grouping for RSVP hellos parameters"; + container rsvp-hellos { + description + "Top level container for RSVP hello parameters"; + uses rsvp-hellos_config; } - leaf hello-interval { - type uint32 { - range "3000..30000"; } + + grouping signaling-parameters_config { description - "Configure interval between successive Hello - messages in milliseconds."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for - LSP Tunnels. - RFC 5495: Description of the Resource - Reservation Protocol - Traffic-Engineered - (RSVP-TE) Graceful Restart Procedures"; + "Configuration parameters relating to RSVP + signaling"; } - leaf hello-misses { - type uint32 { - range "1..10"; + + grouping signaling-parameters { + description + "Top level grouping for RSVP signaling parameters"; + uses signaling-parameters_config; } + + grouping session-attributes { description - "Configure max number of consecutive missed - Hello messages."; - reference - "RFC 3209: RSVP-TE: Extensions to RSVP for - LSP Tunnels RFC 5495: Description of the - Resource Reservation Protocol - Traffic- - Engineered (RSVP-TE) Graceful Restart - Procedures"; + "Top level grouping for RSVP session properties"; + container config { + description + "Configuration for session properties"; + } + container state { + config false; + description + "State information associated with RSVP + session properties"; } } - grouping rsvp-hellos { + grouping neighbor-attributes { description - "Top level grouping for RSVP hellos parameters"; - container rsvp-hellos { - if-feature hellos; + "Top level grouping for RSVP neighbor properties"; + container neighbor-attributes { description - "Top level container for RSVP hello parameters"; + "Top level container for RSVP neighbor properties"; container config { description - "Configuration parameters relating to - RSVP hellos"; - uses rsvp-hellos_config; + "Configuration for neighbor properties"; } container state { config false; description "State information associated with RSVP - hellos"; - uses rsvp-hellos_config; + neighbor properties"; + uses neighbor-derived_state; } } } - grouping signaling-parameters_config { + grouping statistics-packets_state { description - "Configuration parameters relating to RSVP - signaling"; - leaf refresh-interval { - type uint32; + "Packet statistics grouping"; + container packets-stats { description - "Set interval between successive refreshes"; + "Packet statistics container"; + leaf sent { + type yang:counter32; + description + "Packet sent count"; } - leaf refresh-misses { - type uint32; + + leaf rcvd { + type yang:counter32; description - "Set max number of consecutive missed - messages for state expiry"; + "Packet received count"; } - leaf checksum { - type uint32; + } + } + + grouping statistics-protocol_state { description - "Enable RSVP message checksum computation"; + "RSVP protocol statistics grouping"; + container protocol-stats { + description + "RSVP protocol statistics container"; + leaf ack-sent { + type yang:counter32; + description + "Hello sent count"; } - leaf patherr-state-removal { - type empty; + + leaf ack-rcvd { + type yang:counter32; description - "State-Removal flag in Path Error message - if present."; + "Hello received count"; } + + leaf bundle-sent { + type yang:counter32; + description + "Bundle sent count"; } - grouping signaling-parameters { + leaf bundle-rcvd { + type yang:counter32; description - "Top level grouping for RSVP signaling parameters"; - container signaling-parameters { + "Bundle received count"; + } + + leaf hello-sent { + type yang:counter32; description - "Top level container for RSVP signaling parameters"; - container config { + "Hello sent count"; + } + + leaf hello-rcvd { + type yang:counter32; description - "Configuration parameters relating to - RSVP signaling parameters"; - uses signaling-parameters_config; + "Hello received count"; } - container state { - config false; + + leaf integrity-challenge-sent { + type yang:counter32; description - "State information associated with RSVP - signaling parameters"; - uses signaling-parameters_config; + "Integrity Challenge sent count"; } + + leaf integrity-challenge-rcvd { + type yang:counter32; + description + "Integrity Challenge received count"; } + + leaf integrity-response-sent { + type yang:counter32; + description + "Integrity Response sent count"; } - grouping interface-attributes { + leaf integrity-response-rcvd { + type yang:counter32; description - "Top level grouping for RSVP interface properties"; - container config { + "Integrity Response received count"; + } + + leaf notify-sent { + type yang:counter32; description - "Configuration parameters relating to - RSVP interface parameters"; + "Notify sent count"; } - container state { - config false; + + leaf notify-rcvd { + type yang:counter32; description - "State information associated with RSVP - interface parameters"; - uses statistics_state { - if-feature per-interface-statistics; + "Notify received count"; } + + leaf path-sent { + type yang:counter32; + description + "Path sent count"; + } + + leaf path-rcvd { + type yang:counter32; + description + "Path received count"; } + + leaf path-err-sent { + type yang:counter32; + description + "Path error sent count"; } - grouping refresh-reduction_config { + leaf path-err-rcvd { + type yang:counter32; description - "Configuration parameters relating to RSVP - refresh reduction"; - leaf bundle-message-max-size { - type uint32 { - range "512..65000"; + "Path error received count"; } + + leaf path-tear-sent { + type yang:counter32; description - "Configure maximum size (bytes) of a - single RSVP Bundle message."; + "Path tear sent count"; } - leaf disable { - type empty; + + leaf path-tear-rcvd { + type yang:counter32; description - "Disable refresh reduction if present."; + "Path tear received count"; } - leaf reliable-ack-hold-time { - type uint32 { - range "100..5000"; + + leaf resv-sent { + type yang:counter32; + description + "Resv sent count"; } + + leaf resv-rcvd { + type yang:counter32; description - "Configure hold time in milliseconds for - sending RSVP ACK message(s)."; + "Resv received count"; } - leaf reliable-ack-max-size { - type uint32 { - range "20..65000"; + + leaf resv-confirm-sent { + type yang:counter32; + description + "Confirm sent count"; } + + leaf resv-confirm-rcvd { + type yang:counter32; description - "Configure max size of a single RSVP ACK - message."; + "Confirm received count"; } - leaf reliable-retransmit-time { - type uint32 { - range "100..10000"; + + leaf resv-err-sent { + type yang:counter32; + description + "Resv error sent count"; } + + leaf resv-err-rcvd { + type yang:counter32; description - "Configure min delay in milliseconds to - wait for an ACK before a retransmit."; + "Resv error received count"; } - leaf reliable-srefresh { - type empty; + + leaf resv-tear-sent { + type yang:counter32; description - "Configure use of reliable messaging for - summary refresh if present."; + "Resv tear sent count"; } - leaf summary-max-size { - type uint32 { - range "20..65000"; + + leaf resv-tear-rcvd { + type yang:counter32; + description + "Resv tear received count"; } + + leaf summary-refresh-sent { + type yang:counter32; description - "Configure max size (bytes) of a single - RSVP summary refresh message."; + "Summary refresh sent count"; } + + leaf summary-refresh-rcvd { + type yang:counter32; + description + "Summary refresh received count"; } - grouping refresh-reduction { + leaf unknown-recv { + type yang:counter32; description - "Top level grouping for RSVP refresh reduction - parameters"; - container refresh-reduction { - if-feature refresh-reduction; + "Unknown packet received count"; + } + } + } + + grouping statistics-errors_state { description - "Top level container for RSVP refresh reduction - parameters"; - container config { + "Error statistics state grouping"; + container errors-stats { description - "Configuration parameters relating to - RSVP refresh reduction"; - uses refresh-reduction_config; + "Error statistics state container"; + leaf authenticate { + type yang:counter64; + description + "The total number of packets received with an + authentication failure."; } - container state { - config false; + + leaf checksum { + type yang:counter64; description - "State information associated with RSVP - refresh reduction"; - uses refresh-reduction_config; + "The total number of packets received with an invalid + checksum value."; } + + leaf packet-len { + type yang:counter64; + description + "The total number of packets received with an invalid + packet length."; } } + } // statistics_state + + grouping statistics_state { + description "RSVP statistic attributes."; + uses statistics-packets_state; + uses statistics-protocol_state; + uses statistics-errors_state; + } grouping neighbor-derived_state { description "Derived state at neighbor level."; leaf epoch { type uint32; description "Neighbor epoch."; } @@ -1306,21 +1185,20 @@ type uint32; units seconds; description "Number of seconds remaining for neighbor to refresh."; } } // helper-mode } // graceful-restart leaf hello-status { - if-feature hellos; type enumeration { enum "enabled" { description "Enabled"; } enum "disabled" { description "Disabled"; } enum "restarting" { @@ -1369,469 +1248,781 @@ } leaf rsb-count { type uint32; description "Number of RSB state currently referencing the neighbor."; } leaf refresh-reduction-capable { - if-feature refresh-reduction; type boolean; description "Whether neighbor is refresh reduction capable."; } leaf restart-count { type uint32; description "Number of times this neighbor restart"; } leaf restart-time { type yang:date-and-time; description "Last restart time of the neighbor"; } } // neighbor-derived_state - grouping statistics_state { - description "RSVP statistic attributes."; - container statistics { + grouping global-attributes { description - "RSVP statistics"; - - leaf discontinuity-time { - type yang:date-and-time; + "Top level grouping for RSVP global properties"; + container config { description - "The time on the most recent occasion at which any one - or more of the statistic counters suffered a - discontinuity. If no such discontinuities have occurred - since the last re-initialization of the local - management subsystem, then this node contains the time - the local management subsystem re-initialized itself."; + "Configuration globals properties"; + uses graceful-restart; + } + container state { + config false; + description + "State information associated with RSVP + global properties"; + uses graceful-restart; + uses statistics_state; + } } - container packet { + grouping intf-attributes { description - "Packet statistics."; - leaf sent { - type yang:counter32; + "Top level grouping for RSVP interface properties"; + container config { description - "Packet sent count"; + "Configuration parameters relating to + RSVP interface parameters"; + uses signaling-parameters; + uses refresh-reduction; + uses rsvp-hellos; + uses authentication; } - - leaf rcvd { - type yang:counter32; + container state { + config false; description - "Packet received count"; + "State information associated with RSVP + interface parameters"; + uses signaling-parameters; + uses refresh-reduction; + uses rsvp-hellos; + uses authentication; + uses statistics_state; + } } - leaf tx-dropped { - type yang:counter32; - description - "Packet tx dropped count"; + container rsvp { + presence "Enable RSVP feature"; + description "RSVP feature container"; + container globals { + description "RSVP global properties."; + uses global-attributes; } - leaf rx-dropped { - type yang:counter32; + container interfaces { description - "Packet rx dropped count"; - } - leaf tx-error { - type yang:counter32; + "RSVP interfaces container"; + uses intf-attributes; + + list interface { + key "interface"; description - "Packet tx error count"; + "RSVP interfaces."; + leaf interface { + type if:interface-ref; + description + "RSVP interface."; + } + uses intf-attributes; + } } - leaf rx-error { - type yang:counter32; + container sessions { description - "Packet rx error count"; + "RSVP sessions container"; + list session { + key "dst_port source destination"; + description + "List of RSVP sessions"; + leaf dst_port { + type uint16; + description "RSVP destination port"; + reference "RFC2205"; + } + leaf source { + type inet:ip-address; + description "RSVP source address"; + reference "RFC2205"; + } + leaf destination { + type inet:ip-address; + description "RSVP destination address"; + reference "RFC2205"; + } + uses session-attributes; } } - container protocol { + container neighbors { description - "RSVP protocol statistics."; - leaf ack-sent { - if-feature refresh-reduction; - type yang:counter32; + "RSVP neighbors container"; + list neighbor { + key "address"; description - "Hello sent count"; + "List of RSVP neighbors"; + leaf address { + type inet:ip-address; + description + "Neighbor address"; + } + uses neighbor-attributes; + } + } + } } - leaf ack-rcvd { - if-feature refresh-reduction; - type yang:counter32; - description - "Hello received count"; + + +3.2. RSVP Extended YANG Model + + The RSVP extended YANG model covers optional configuration(s) for + RSVP core feature(s). It also covers non-core RSVP feature(s) that + are negotiated with "if-feature" checks. + +3.2.1. Configuration and State Data + + Figure 3 shows the YANG tree representation for configuration and + state data that is augmenting the RSVP basic module: + + module: ietf-rsvp-extended + augment /rsvp:rsvp/rsvp:globals/rsvp:config/ + rsvp:graceful-restart: + +--rw restart-time? uint32 + +--rw recovery-time? uint32 + augment /rsvp:rsvp/rsvp:globals/rsvp:state/ + rsvp:graceful-restart: + +--ro restart-time? uint32 + +--ro recovery-time? uint32 + augment /rsvp:rsvp/rsvp:globals/rsvp:state/rsvp:packets-stats: + +--ro discontinuity-time? yang:date-and-time + +--ro tx-dropped? yang:counter32 + +--ro rx-dropped? yang:counter32 + +--ro tx-error? yang:counter32 + +--ro rx-error? yang:counter32 + augment /rsvp:rsvp/rsvp:globals/rsvp:state/rsvp:protocol-stats: + augment /rsvp:rsvp/rsvp:globals/rsvp:state/rsvp:errors-stats: + augment /rsvp:rsvp/rsvp:interfaces/rsvp:config: + +--rw refresh-interval? uint32 + +--rw refresh-misses? uint32 + +--rw checksum? uint32 + +--rw patherr-state-removal? empty + augment /rsvp:rsvp/rsvp:interfaces/rsvp:state: + + +--ro refresh-interval? uint32 + +--ro refresh-misses? uint32 + +--ro checksum? uint32 + +--ro patherr-state-removal? empty + augment /rsvp:rsvp/rsvp:interfaces/rsvp:config/ + 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 /rsvp:rsvp/rsvp:interfaces/rsvp:state/rsvp:refresh-reduction: + +--ro bundle-message-max-size? uint32 + +--ro reliable-ack-hold-time? uint32 + +--ro reliable-ack-max-size? uint32 + +--ro reliable-retransmit-time? uint32 + +--ro reliable-srefresh? empty + +--ro summary-max-size? uint32 + augment /rsvp:rsvp/rsvp:interfaces/rsvp:config/rsvp:rsvp-hellos: + +--rw interface-based? empty + +--rw hello-interval? uint32 + +--rw hello-misses? uint32 + augment /rsvp:rsvp/rsvp:interfaces/rsvp:state/rsvp:rsvp-hellos: + +--ro interface-based? empty + +--ro hello-interval? uint32 + +--ro hello-misses? uint32 + augment /rsvp:rsvp/rsvp:interfaces/rsvp:config/rsvp:authentication: + +--rw lifetime? uint32 + +--rw window-size? uint32 + +--rw challenge? empty + +--rw retransmits? uint32 + +--rw key-chain? string + augment /rsvp:rsvp/rsvp:interfaces/rsvp:state/rsvp:authentication: + +--ro lifetime? uint32 + +--ro window-size? uint32 + +--ro challenge? empty + +--ro retransmits? uint32 + +--ro key-chain? string + augment /rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:config: + +--rw refresh-interval? uint32 + +--rw refresh-misses? uint32 + +--rw checksum? uint32 + +--rw patherr-state-removal? empty + augment /rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:state: + +--ro refresh-interval? uint32 + +--ro refresh-misses? uint32 + +--ro checksum? uint32 + +--ro patherr-state-removal? empty + augment /rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:config/ + 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 /rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:state/ + rsvp:refresh-reduction: + +--ro bundle-message-max-size? uint32 + +--ro reliable-ack-hold-time? uint32 + +--ro reliable-ack-max-size? uint32 + +--ro reliable-retransmit-time? uint32 + +--ro reliable-srefresh? empty + +--ro summary-max-size? uint32 + augment /rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:config/ + rsvp:rsvp-hellos: + +--rw interface-based? empty + +--rw hello-interval? uint32 + +--rw hello-misses? uint32 + augment /rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:state/ + rsvp:rsvp-hellos: + +--ro interface-based? empty + +--ro hello-interval? uint32 + +--ro hello-misses? uint32 + augment /rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:config/ + rsvp:authentication: + +--rw lifetime? uint32 + +--rw window-size? uint32 + +--rw challenge? empty + +--rw retransmits? uint32 + +--rw key-chain? string + augment /rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:state/ + rsvp:authentication: + +--ro lifetime? uint32 + +--ro window-size? uint32 + +--ro challenge? empty + +--ro retransmits? uint32 + +--ro key-chain? string + + Figure 3: RSVP extended YANG Tree representation + +3.2.2. YANG Module + + Figure 4 shows the RSVP extended YANG module: + + file "ietf-rsvp-extended@2015-10-16.yang" + + module ietf-rsvp-extended { + + namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-extended"; + + prefix "rsvp-ext"; + + import ietf-rsvp { + prefix "rsvp"; } - leaf bundle-sent { - if-feature refresh-reduction; - type yang:counter32; - description - "Bundle sent count"; + import ietf-yang-types { + prefix "yang"; } - leaf bundle-rcvd { - if-feature refresh-reduction; - type yang:counter32; + organization + "IETF TEAS Working Group"; + + contact "TBA"; + description - "Bundle received count"; + "This module contains the RSVP YANG data model."; + + revision 2015-10-16 { + description "Latest revision of RSVP extensions yang module."; + reference "RFC2205"; } - leaf hello-sent { - if-feature hellos; - type yang:counter32; + /* RSVP features */ + feature authentication { description - "Hello sent count"; + "Indicates support for RSVP authentication"; } - leaf hello-rcvd { - if-feature hellos; - type yang:counter32; + feature error-statistics { description - "Hello received count"; + "Indicates support for error statistics"; } - leaf integrity-challenge-sent { - if-feature authentication; - type yang:counter32; + feature global-statistics { description - "Integrity Challenge sent count"; + "Indicates support for global statistics"; } - - leaf integrity-challenge-rcvd { - if-feature authentication; - type yang:counter32; + feature graceful-restart { description - "Integrity Challenge received count"; + "Indicates support for RSVP graceful restart"; } - leaf integrity-response-sent { - if-feature authentication; - type yang:counter32; + feature hellos { description - "Integrity Response sent count"; + "Indicates support for RSVP hellos (RFC3209)."; } - leaf integrity-response-rcvd { - if-feature authentication; - type yang:counter32; + feature notify { description - "Integrity Response received count"; + "Indicates support for RSVP notify message (RFC3473)."; } - leaf notify-sent { - if-feature refresh-reduction; - type yang:counter32; + feature refresh-reduction { description - "Notify sent count"; + "Indicates support for RSVP refresh reduction + (RFC2961)."; } - leaf notify-rcvd { - if-feature refresh-reduction; - type yang:counter32; + feature refresh-reduction-extended { description - "Notify received count"; + "Indicates support for RSVP refresh reduction + (RFC2961)."; } - leaf path-sent { - type yang:counter32; + feature per-interface-statistics { description - "Path sent count"; + "Indicates support for per interface statistics"; } - leaf path-rcvd { - type yang:counter32; + grouping graceful-restart-extended_config { description - "Path received count"; + "Configuration parameters relating to RSVP + Graceful-Restart"; + leaf restart-time { + type uint32; + units seconds; + description + "Graceful restart time (seconds)."; + reference + "RFC 5495: Description of the Resource + Reservation Protocol - Traffic-Engineered + (RSVP-TE) Graceful Restart Procedures"; } - - leaf path-err-sent { - type yang:counter32; + leaf recovery-time { + type uint32; description - "Path error sent count"; + "RSVP state recovery time"; + } } - leaf path-err-rcvd { - type yang:counter32; + grouping authentication-extended_config { description - "Path error received count"; + "Configuration parameters relating to RSVP + authentication"; + leaf lifetime { + type uint32 { + range "30..86400"; } - - leaf path-tear-sent { - type yang:counter32; description - "Path tear sent count"; + "Life time for each security association"; + reference + "RFC 2747: RSVP Cryptographic + Authentication"; + } + leaf window-size { + type uint32 { + range "1..64"; } - - leaf path-tear-rcvd { - type yang:counter32; description - "Path tear received count"; + "Window-size to limit number of out-of-order + messages."; + reference + "RFC 2747: RSVP Cryptographic + Authentication"; } - - leaf resv-sent { - type yang:counter32; + leaf challenge { + type empty; description - "Resv sent count"; + "Enable challenge messages."; + reference + "RFC 2747: RSVP Cryptographic + Authentication"; + } + leaf retransmits { + type uint32 { + range "1..10000"; } + description + "Number of retransmits when messages are + dropped."; + reference + "RFC 2747: RSVP Cryptographic + Authentication"; - leaf resv-rcvd { - type yang:counter32; + } + leaf key-chain { + type string { + length "1..32"; + } description - "Resv received count"; + "Key chain name to authenticate RSVP + signaling messages."; + reference + "RFC 2747: RSVP Cryptographic + Authentication"; + } } - leaf resv-confirm-sent { - type yang:counter32; + grouping rsvp-hellos-extended_config { description - "Confirm sent count"; + "Configuration parameters relating to RSVP + hellos"; + leaf interface-based { + type empty; + description "Enable interface-based + Hello adjacency if present."; } - - leaf resv-confirm-rcvd { - type yang:counter32; + leaf hello-interval { + type uint32; + units milliseconds; description - "Confirm received count"; + "Configure interval between successive Hello + messages in milliseconds."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for + LSP Tunnels. + RFC 5495: Description of the Resource + Reservation Protocol - Traffic-Engineered + (RSVP-TE) Graceful Restart Procedures"; + } + leaf hello-misses { + type uint32 { + range "1..10"; + } + description + "Configure max number of consecutive missed + Hello messages."; + reference + "RFC 3209: RSVP-TE: Extensions to RSVP for + LSP Tunnels RFC 5495: Description of the + Resource Reservation Protocol - Traffic- + Engineered (RSVP-TE) Graceful Restart + Procedures"; + } } - leaf resv-err-sent { - type yang:counter32; + grouping signaling-parameters-extended_config { description - "Resv error sent count"; + "Configuration parameters relating to RSVP + signaling"; + leaf refresh-interval { + type uint32; + description + "Set interval between successive refreshes"; + } + leaf refresh-misses { + type uint32; + description + "Set max number of consecutive missed + messages for state expiry"; + } + leaf checksum { + type uint32; + description + "Enable RSVP message checksum computation"; + } + leaf patherr-state-removal { + type empty; + description + "State-Removal flag in Path Error message + if present."; + } } - leaf resv-err-rcvd { - type yang:counter32; + grouping refresh-reduction-extended_config { description - "Resv error received count"; + "Configuration parameters relating to RSVP + refresh reduction"; + + leaf bundle-message-max-size { + type uint32 { + range "512..65000"; + } + description + "Configure maximum size (bytes) of a + single RSVP Bundle message."; + } + leaf reliable-ack-hold-time { + type uint32; + units milliseconds; + description + "Configure hold time in milliseconds for + sending RSVP ACK message(s)."; + } + leaf reliable-ack-max-size { + type uint32; + description + "Configure max size of a single RSVP ACK + message."; + } + leaf reliable-retransmit-time { + type uint32; + units milliseconds; + description + "Configure min delay in milliseconds to + wait for an ACK before a retransmit."; + } + leaf reliable-srefresh { + type empty; + description + "Configure use of reliable messaging for + summary refresh if present."; + } + leaf summary-max-size { + type uint32 { + range "20..65000"; + } + description + "Configure max size (bytes) of a single + RSVP summary refresh message."; + } } - leaf resv-tear-sent { + grouping statistics-packets-extended_state { + description + "Packet statistics."; + leaf discontinuity-time { + type yang:date-and-time; + description + "The time on the most recent occasion at which any one + or more of the statistic counters suffered a + discontinuity. If no such discontinuities have occurred + since the last re-initialization of the local + management subsystem, then this node contains the time + the local management subsystem re-initialized itself."; + } + leaf tx-dropped { type yang:counter32; description - "Resv tear sent count"; + "Packet tx dropped count"; } - leaf resv-tear-rcvd { + leaf rx-dropped { type yang:counter32; description - "Resv tear received count"; + "Packet rx dropped count"; } - leaf summary-refresh-sent { - if-feature refresh-reduction; + leaf tx-error { type yang:counter32; description - "Summary refresh sent count"; + "Packet tx error count"; } - leaf summary-refresh-rcvd { - if-feature refresh-reduction; + leaf rx-error { type yang:counter32; description - "Summary refresh received count"; + "Packet rx error count"; + } } - leaf unknown-recv { - type yang:counter32; + grouping statistics-protocol-extended_state { description - "Unknown packet received count"; + "RSVP protocol statistics."; } - } // rsvp - container error { + grouping statistics-errors-extended_state { description "Error statistics."; + } - leaf authentication { - type yang:counter64; - description - "The total number of packets received with an - authentication failure."; + grouping statistics-extended_state { + description "RSVP statistic attributes."; + uses statistics-packets-extended_state; + uses statistics-protocol-extended_state; + uses statistics-errors-extended_state; } - leaf checksum { - type yang:counter64; + /** + * RSVP extensions augmentations + */ + + /* RSVP globals graceful restart*/ + augment "/rsvp:rsvp/rsvp:globals/rsvp:config/"+ + "rsvp:graceful-restart" { description - "The total number of packets received with an invalid - checksum value."; + "RSVP globals configuration extensions"; + uses graceful-restart-extended_config; } - - leaf packet-len { - type yang:counter64; + augment "/rsvp:rsvp/rsvp:globals/rsvp:state/"+ + "rsvp:graceful-restart" { description - "The total number of packets received with an invalid - packet length."; + "RSVP globals state extensions"; + uses graceful-restart-extended_config; } - } // error - } // statistics - } // statistics_state - grouping global-attributes { - description - "Top level grouping for RSVP global properties"; - container config { + /* RSVP statistics augmentation */ + augment "/rsvp:rsvp/rsvp:globals/rsvp:state/"+ + "rsvp:packets-stats" { description - "Configuration globals properties"; + "RSVP packet stats extensions"; + uses statistics-packets-extended_state; } - container state { - config false; + augment "/rsvp:rsvp/rsvp:globals/rsvp:state/"+ + "rsvp:protocol-stats" { description - "State information associated with RSVP - global properties"; - uses statistics_state { - if-feature global-statistics; - } + "RSVP protocol message stats extensions"; + uses statistics-protocol-extended_state; } + augment "/rsvp:rsvp/rsvp:globals/rsvp:state/"+ + "rsvp:errors-stats" { + description + "RSVP errors stats extensions"; + uses statistics-errors-extended_state; } - grouping session-attributes { + /** + * RSVP all interfaces extensions + */ + + /* RSVP interface signaling extensions */ + augment "/rsvp:rsvp/rsvp:interfaces/rsvp:config" { description - "Top level grouping for RSVP session properties"; - container config { + "RSVP signaling all interfaces configuration extensions"; + uses signaling-parameters-extended_config; + } + augment "/rsvp:rsvp/rsvp:interfaces/rsvp:state" { description - "Configuration for session properties"; + "RSVP signaling all interfaces state extensions"; + uses signaling-parameters-extended_config; } - container state { - config false; + /* RSVP refresh reduction extension */ + augment "/rsvp:rsvp/rsvp:interfaces/rsvp:config/" + + "rsvp:refresh-reduction" { description - "State information associated with RSVP - session properties"; + "RSVP refresh-reduction all interface configuration + extensions"; + uses refresh-reduction-extended_config; } + augment "/rsvp:rsvp/rsvp:interfaces/rsvp:state/" + + "rsvp:refresh-reduction" { + description + "RSVP refresh-reduction all interfaces state extensions"; + uses refresh-reduction-extended_config; } - grouping neighbor-attributes { - description - "Top level grouping for RSVP neighbor properties"; - container neighbor-attributes { - description - "Top level container for RSVP neighbor properties"; - container config { + /* RSVP hellos extension */ + augment "/rsvp:rsvp/rsvp:interfaces/rsvp:config/rsvp:rsvp-hellos" { description - "Configuration for neighbor properties"; + "RSVP hello all interfaces configuration extensions"; + uses rsvp-hellos-extended_config; } - container state { - config false; + augment "/rsvp:rsvp/rsvp:interfaces/rsvp:state/rsvp:rsvp-hellos" { description - "State information associated with RSVP - neighbor properties"; - uses neighbor-derived_state; - } - } + "RSVP hello all interfaces state extensions"; + uses rsvp-hellos-extended_config; } - container rsvp { - presence "Enable RSVP feature"; - description "RSVP feature container"; - container globals { - description "RSVP global properties."; - uses global-attributes; - uses graceful-restart; + /* RSVP authentication extension */ + augment "/rsvp:rsvp/rsvp:interfaces/rsvp:config/" + + "rsvp:authentication" { + description + "RSVP authentication all interfaces configuration extensions"; + uses authentication-extended_config; } - - container interfaces { + augment "/rsvp:rsvp/rsvp:interfaces/rsvp:state/" + + "rsvp:authentication" { description - "RSVP interfaces container"; - uses interface-attributes; - uses signaling-parameters; - uses refresh-reduction; - uses rsvp-hellos; - uses authentication; + "RSVP authentication all interfaces state extensions"; + uses authentication-extended_config; + } - list interface { - key "interface"; - description - "RSVP interfaces."; - leaf interface { - type if:interface-ref; + /** + * RSVP interface extensions + */ + + /* RSVP interface signaling extensions */ + augment "/rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:config" { description - "RSVP interface."; - } - uses interface-attributes; - uses signaling-parameters; - uses refresh-reduction; - uses rsvp-hellos; - uses authentication; + "RSVP signaling interface configuration extensions"; + uses signaling-parameters-extended_config; } + augment "/rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:state" { + description + "RSVP signaling interface state extensions"; + uses signaling-parameters-extended_config; } - container sessions { - description - "RSVP sessions container"; - list session { - key "src_port dst_port source destination"; + /* RSVP refresh reduction extension */ + augment "/rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:config/" + + "rsvp:refresh-reduction" { description - "List of RSVP sessions"; - leaf src_port { - type uint16; - description "RSVP source port"; - reference "RFC2205"; - } - leaf dst_port { - type uint16; - description "RSVP destination port"; - reference "RFC2205"; - } - leaf source { - type inet:ip-address; - description "RSVP source address"; - reference "RFC2205"; - } - leaf destination { - type inet:ip-address; - description "RSVP destination address"; - reference "RFC2205"; - } - uses session-attributes; + "RSVP refresh-reduction interface configuration extensions"; + uses refresh-reduction-extended_config; } + augment "/rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:state/" + + "rsvp:refresh-reduction" { + description + "RSVP refresh-reduction interface state extensions"; + uses refresh-reduction-extended_config; } - container neighbors { - description - "RSVP neighbors container"; - list neighbor { - key "address"; - description - "List of RSVP neighbors"; - leaf address { - type inet:ip-address; + /* RSVP hellos extension */ + augment "/rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:config/" + + "rsvp:rsvp-hellos" { description - "Neighbor address"; + "RSVP hello interface configuration extensions"; + uses rsvp-hellos-extended_config; } - uses neighbor-attributes; + augment "/rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:state/" + + "rsvp:rsvp-hellos" { + description + "RSVP hello interface state extensions"; + uses rsvp-hellos-extended_config; } + + /* RSVP authentication extension */ + augment "/rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:config/" + + "rsvp:authentication" { + description + "RSVP authentication interface configuration extensions"; + uses authentication-extended_config; } + augment "/rsvp:rsvp/rsvp:interfaces/rsvp:interface/rsvp:state/" + + "rsvp:authentication" { + description + "RSVP authentication interface state extensions"; + uses authentication-extended_config; } } -5. RSVP-TE Generic YANG Model + Figure 4: RSVP extended YANG module + +3.3. RSVP-TE Generic YANG Model This section contains the augmentation of the RSVP base YANG model for signalling Traffic-Engineering (RSVP-TE) Label Switched Paths (LSPs). New module is introduced that augment the RSVP-TE generic module to cover data items that are technology agnostic. This model imports and augments the base RSVP YANG model (presented - in Section 4.3). It also imports and augments the TE YANG model - defined in [I-D.saad-teas-yang-te] to enable configuration of RSVP-TE + in Section 3.1.3). It also imports and augments the TE YANG model + defined in [I-D.ietf-teas-yang-te] to enable configuration of RSVP-TE attributes on TE tunnels. The following subsections provide overview of the parts of the RSVP- TE generic model pertaining to configuration and state data. -5.1. Configuration and State Data +3.3.1. Configuration and State Data There are three types of configuration and state data nodes in this module: o those augmenting or extending the base RSVP module o those augmenting or extending the base TE generic module o those that are specific to the RSVP-TE module @@ -1847,139 +2038,134 @@ augment /ietf-te:te/ietf-te:tunnels/ietf-te:tunnel: +--rw config | +--rw lsp-source? inet:ip-address | +--rw lsp-signaled-name? string | +--rw lsp-priority-setup? uint8 | +--rw lsp-priority-hold? uint8 | +--rw local-recording-desired? empty | +--rw se-style-desired? empty | +--rw path-reevaluation-request? empty | +--rw soft-preemption-desired? empty - | +--rw end-to-end-routing? empty - | +--rw boundary-rerouting? empty - | +--rw segment-based-rerouting? empty + | +--rw lsp-rerouting? enumeration | +--rw lsp-integrety-required? empty - | +--rw contiguous-lsp? empty + | +--rw lsp-contiguous? empty | +--rw lsp-stitching-desired? empty - | +--rw preplanned-lsp? empty - | +--rw oob-mapping? empty + | +--rw lsp-preplanned? empty + | +--rw lsp-oob-mapping? empty +--ro state +--ro lsp-source? inet:ip-address +--ro lsp-signaled-name? string +--ro lsp-priority-setup? uint8 +--ro lsp-priority-hold? uint8 +--ro local-recording-desired? empty +--ro se-style-desired? empty +--ro path-reevaluation-request? empty +--ro soft-preemption-desired? empty - +--ro end-to-end-routing? empty - +--ro boundary-rerouting? empty - +--ro segment-based-rerouting? empty + +--ro lsp-rerouting? enumeration +--ro lsp-integrety-required? empty - +--ro contiguous-lsp? empty + +--ro lsp-contiguous? empty +--ro lsp-stitching-desired? empty - +--ro preplanned-lsp? empty - +--ro oob-mapping? empty + +--ro lsp-preplanned? empty + +--ro lsp-oob-mapping? empty augment /ietf-te:te/ietf-te:interfaces/ietf-te:interface: augment /ietf-te:te/ietf-te:lsps-state/ietf-te:lsp: +--ro lsp-source? inet:ip-address +--ro lsp-signaled-name? string +--ro lsp-priority-setup? uint8 +--ro lsp-priority-hold? uint8 +--ro local-recording-desired? empty +--ro se-style-desired? empty +--ro path-reevaluation-request? empty +--ro soft-preemption-desired? empty - +--ro end-to-end-routing? empty - +--ro boundary-rerouting? empty - +--ro segment-based-rerouting? empty + +--ro lsp-rerouting? enumeration +--ro lsp-integrety-required? empty - +--ro contiguous-lsp? empty + +--ro lsp-contiguous? empty +--ro lsp-stitching-desired? empty - +--ro preplanned-lsp? empty - +--ro oob-mapping? empty - +--ro incoming-explicit-route - | +--ro explicit-route-subobjects* [subobject-index] - | +--ro subobject-index uint32 - | +--ro (type)? - | +--:(ipv4-address) - | | +--ro v4-address? inet:ipv4-address - | | +--ro v4-prefix-length? uint8 - | | +--ro v4-loose? boolean - | +--:(ipv6-address) - | | +--ro v6-address? inet:ipv6-address - | | +--ro v6-prefix-length? uint8 - | | +--ro v6-loose? boolean - | +--:(as-number) - | | +--ro as-number? uint16 - | +--:(unnumbered-link) - | | +--ro router-id? inet:ip-address - | | +--ro interface-id? uint32 - | +--:(label) - | +--ro value? uint32 - +--ro outgoing-explicit-route - | +--ro explicit-route-subobjects* [subobject-index] + +--ro lsp-preplanned? empty + +--ro lsp-oob-mapping? empty + +--ro explicit-route-object + | +--ro incoming-explicit-route-subobjects* [subobject-index] + | | +--ro subobject-index uint32 + | | +--ro (type)? + | | +--:(ipv4-address) + | | | +--ro v4-address? inet:ipv4-address + | | | +--ro v4-prefix-length? uint8 + | | | +--ro v4-loose? boolean + | | +--:(ipv6-address) + | | | +--ro v6-address? inet:ipv6-address + | | | +--ro v6-prefix-length? uint8 + | | | +--ro v6-loose? boolean + | | +--:(as-number) + | | | +--ro as-number? uint16 + | | +--:(unnumbered-link) + | | | +--ro router-id? inet:ip-address + | | | +--ro interface-id? uint32 + | | +--:(label) + | | +--ro value? uint32 + | +--ro outgoing-explicit-route-subobjects* [subobject-index] | +--ro subobject-index uint32 | +--ro (type)? | +--:(ipv4-address) | | +--ro v4-address? inet:ipv4-address | | +--ro v4-prefix-length? uint8 | | +--ro v4-loose? boolean | +--:(ipv6-address) | | +--ro v6-address? inet:ipv6-address | | +--ro v6-prefix-length? uint8 | | +--ro v6-loose? boolean | +--:(as-number) | | +--ro as-number? uint16 | +--:(unnumbered-link) | | +--ro router-id? inet:ip-address | | +--ro interface-id? uint32 | +--:(label) | +--ro value? uint32 - +--ro path-record-route - | +--ro record-route-subobjects* [subobject-index] + +--ro record-route-object + +--ro path-record-route-subobjects* [subobject-index] | +--ro subobject-index uint32 | +--ro (type)? | +--:(ipv4-address) | | +--ro v4-address? inet:ipv4-address | | +--ro v4-prefix-length? uint8 | | +--ro v4-flags? uint8 | +--:(ipv6-address) | | +--ro v6-address? inet:ipv6-address | | +--ro v6-prefix-length? uint8 | | +--ro v6-flags? uint8 | +--:(label) | +--ro value? uint32 | +--ro flags? uint8 - +--ro resv-record-route - +--ro record-route-subobjects* [subobject-index] + +--ro resv-record-route-subobjects* [subobject-index] +--ro subobject-index uint32 +--ro (type)? +--:(ipv4-address) | +--ro v4-address? inet:ipv4-address | +--ro v4-prefix-length? uint8 | +--ro v4-flags? uint8 +--:(ipv6-address) | +--ro v6-address? inet:ipv6-address | +--ro v6-prefix-length? uint8 | +--ro v6-flags? uint8 +--:(label) +--ro value? uint32 +--ro flags? uint8 -5.2. RPC and Notification Data + Figure 5: RSVP-TE YANG Tree representation + +3.3.2. RPC and Notification Data TBD. -5.3. YANG Module +3.3.3. YANG Module + + file "ietf-rsvp-te@2015-10-16.yang" - file "ietf-rsvp-te@2015-07-06.yang" module ietf-rsvp-te { namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te"; prefix "rsvp-te"; import ietf-rsvp { prefix rsvp; } @@ -1997,141 +2183,137 @@ } organization "IETF TEAS Working Group"; contact "TBA"; description "This module contains the RSVP YANG generic data model."; - revision 2015-07-06 { + revision 2015-10-16 { description "Latest revision to RSVP-TE generic YANG module"; reference "RFC3209"; } /** * RSVP-TE LSPs groupings. */ grouping lsp-record-route-information_state { description "recorded route information grouping"; - container path-record-route { + container record-route-object { + description "RSVP recorded route object information"; + list path-record-route-subobjects { when "../origin-type != 'ingress'" { description "Applicable on non-ingress LSPs only"; } - description "RSVP Path recorded route information"; - list record-route-subobjects { key "subobject-index"; description ""; leaf subobject-index { type uint32; description "RRO subobject index"; } uses ietf-te-types:record-route-subobject; } - } - container resv-record-route { + list resv-record-route-subobjects { when "../origin-type != 'egress'" { description "Applicable on non-egress LSPs only"; } - description "RSVP Resv recorded route information"; - list record-route-subobjects { key "subobject-index"; description ""; leaf subobject-index { type uint32; description "RRO subobject index"; } uses ietf-te-types:record-route-subobject; } } } grouping lsp-explicit-route-information_state { description "RSVP-TE LSP explicit-route information"; - container incoming-explicit-route { + container explicit-route-object { + description "Explicit route object information"; + list incoming-explicit-route-subobjects { when "../origin-type != 'ingress'" { description "Applicable on non-ingress LSPs only"; } - description "Incoming explicit route information"; - list explicit-route-subobjects { key "subobject-index"; description ""; leaf subobject-index { type uint32; description "ERO subobject index"; } uses ietf-te-types:explicit-route-subobject; - - } } - container outgoing-explicit-route { + list outgoing-explicit-route-subobjects { when "../origin-type != 'egress'" { description "Applicable on non-egress LSPs only"; } - description "Outgoing explicit route information"; - list explicit-route-subobjects { key "subobject-index"; description ""; leaf subobject-index { type uint32; description "ERO subobject index"; } uses ietf-te-types:explicit-route-subobject; } } } grouping lsp-attributes-flags_config { description "Configuration parameters relating to RSVP-TE LSP attribute flags"; - leaf end-to-end-routing { - type empty; + leaf lsp-rerouting { + type enumeration { + enum end-to-end-routing { description "End-to-end routing desired"; reference "RFC4920, RFC5420"; } - leaf boundary-rerouting { - type empty; + enum boundary-rerouting { description "Boundary rerouting desired"; reference "RFC4920, RFC5420"; } - leaf segment-based-rerouting { - type empty; + enum segment-based-rerouting { description "Segment-based rerouting desired"; reference "RFC4920, RFC5420"; } + } + description "LSP rerouting types"; + + } leaf lsp-integrety-required { type empty; description "LSP integrity desired"; reference "RFC4875"; } - leaf contiguous-lsp { + leaf lsp-contiguous { type empty; description "Contiguous LSP"; reference "RFC5151"; } leaf lsp-stitching-desired { type empty; - description "Stiticed LSP"; + description "Stitched LSP"; reference "RFC5150"; } - leaf preplanned-lsp { + leaf lsp-preplanned { type empty; description "Preplanned LSP"; reference "RFC6001"; } - leaf oob-mapping { + leaf lsp-oob-mapping { type empty; description "Mapping is done out-of-band"; reference "RFC6511"; } } grouping lsp-session-attributes-obj-flags_config { description "Configuration parameters relating to RSVP-TE LSP @@ -2271,21 +2454,21 @@ container state { config false; description "State information associated with RSVP-TE bandwidth"; } } } /*** End of RSVP-TE generic groupings ***/ - /* RSVP-TE global properties */ + /* RSVP-TE global propeerties */ augment "/rsvp:rsvp/rsvp:globals" { description "RSVP-TE augmentation to RSVP globals"; } /* Linkage to the base RSVP all links */ augment "/rsvp:rsvp/rsvp:interfaces" { description "RSVP-TE generic data augmentation pertaining to interfaces"; /* To be added */ @@ -2331,33 +2513,34 @@ augment "/ietf-te:te/ietf-te:lsps-state/ietf-te:lsp" { description "RSVP-TE generic data augmentation pertaining to specific TE LSP"; uses lsp-properties_config; uses lsp-explicit-route-information_state; uses lsp-record-route-information_state; } } + -6. RSVP-TE MPLS Packet Model +3.4. RSVP-TE MPLS Packet Model This section describes the MPLS packet RSVP-TE YANG module that augments the RSVP-TE generic module to signal packet MPLS LSPs. RSVP-TE YANG modules for other dataplane technologies (e.g. OTN or WDM) will be defined in separate modules and in other drafts. The following subsections describe the configuration and state data . pertaining to RSVP-TE packet MPLS YANG data model. -6.1. Configuration and State Data +3.4.1. Configuration and State Data The following are possible types of configuration and state data nodes in this module: o those augmenting or extending the generic RSVP-TE module o those augmenting or extending the base TE generic module o those that are specific to the RSVP-TE packet module @@ -2371,28 +2554,58 @@ | +--rw rsvp-frr-local-revert-delay? uint32 +--ro state +--ro rsvp-frr-local-revert! +--ro rsvp-frr-local-revert-delay? uint32 augment /rsvp:rsvp/rsvp:interfaces: augment /rsvp:rsvp/rsvp:interfaces/rsvp:interface: augment /rsvp:rsvp/rsvp:sessions: augment /rsvp:rsvp/rsvp:neighbors: augment /ietf-te:te/ietf-te:tunnels/ietf-te:tunnel: +--rw config + | +--rw static-bandwidth? uint32 + | +--rw auto-bandwidth + | | +--rw enabled? boolean + | | +--rw min-bw? uint32 + | | +--rw max-bw? uint32 + | | +--rw adjust-interval? uint32 + | | +--rw adjust-threshold? uint32 + | | +--rw overflow + | | | +--rw enabled? boolean + | | | +--rw overflow-threshold? uint32 + | | | +--rw trigger-event-count? uint16 + | | +--rw underflow + | | +--rw enabled? boolean + | | +--rw underflow-threshold? uint32 + | | +--rw trigger-event-count? uint16 | +--rw local-protection-desired? empty | +--rw bandwidth-protection-desired? empty | +--rw node-protection-desired? empty | +--rw non-php-desired? empty | +--rw entropy-label-cap? empty | +--rw oam-mep-entities-desired? empty | +--rw oam-mip-entities-desired? empty +--ro state + +--ro static-bandwidth? uint32 + +--ro auto-bandwidth + | +--ro enabled? boolean + | +--ro min-bw? uint32 + | +--ro max-bw? uint32 + | +--ro adjust-interval? uint32 + | +--ro adjust-threshold? uint32 + | +--ro overflow + | | +--ro enabled? boolean + | | +--ro overflow-threshold? uint32 + | | +--ro trigger-event-count? uint16 + | +--ro underflow + | +--ro enabled? boolean + | +--ro underflow-threshold? uint32 + | +--ro trigger-event-count? uint16 +--ro local-protection-desired? empty +--ro bandwidth-protection-desired? empty +--ro node-protection-desired? empty +--ro non-php-desired? empty +--ro entropy-label-cap? empty +--ro oam-mep-entities-desired? empty +--ro oam-mip-entities-desired? empty augment /ietf-te:te/ietf-te:interfaces/ietf-te:interface: +--rw config | +--rw (bandwidth-value)? @@ -2433,28 +2646,27 @@ | | | +--ro bandwidth-psc-constraints | | | +--ro maximum-reservable? uint32 | | | +--ro bc-value* uint32 | | +--:(bc-model-mar) | | +--ro bc-model-mar | | +--ro bandwidth-psc-constraints | | +--ro maximum-reservable? uint32 | | +--ro bc-value* uint32 | +--ro interface-softpreemption-state | | +--ro soft-preempted-bandwidth? uint32 - | | +--ro lsps* [source destination tunnel-id lsp-id - extended-tunnel-id] - | | +--ro source leafref - | | +--ro destination leafref - | | +--ro tunnel-id leafref - | | +--ro lsp-id leafref - | | +--ro extended-tunnel-id leafref - | | +--ro type? leafref + | | +--ro lsps* [source destination tunnel-id lsp-id extended-tunnel-id] + | | +--ro source -> /ietf-te:te/lsps-state/lsp/source + | | +--ro destination -> /ietf-te:te/lsps-state/lsp/destination + | | +--ro tunnel-id -> /ietf-te:te/lsps-state/lsp/tunnel-id + | | +--ro lsp-id -> /ietf-te:te/lsps-state/lsp/lsp-id + | | +--ro extended-tunnel-id -> /ietf-te:te/lsps-state/lsp/extended-tunnel-id + | | +--ro type? -> /ietf-te:te/lsps-state/lsp/type | +--ro over-subscribed-bandwidth? uint32 +--rw rsvp-te-frr-backups {ietf-te-types:frr-te}? +--rw config | +--rw backup-bandwidth? uint32 | +--rw backup-bandwidth-classtype? uint32 | +--rw (type)? | +--:(static-tunnel) | | +--rw static-backups* [tunnel-name] | | +--rw tunnel-name string | +--:(auto-tunnel) @@ -2464,42 +2676,83 @@ +--ro backup-bandwidth? uint32 +--ro backup-bandwidth-classtype? uint32 +--ro (type)? +--:(static-tunnel) | +--ro static-backups* [tunnel-name] | +--ro tunnel-name string +--:(auto-tunnel) +--ro auto-backup-protection? identityref +--ro auto-backup-path-computation? identityref augment /ietf-te:te/ietf-te:lsps-state/ietf-te:lsp: - +--ro local-protection-desired? empty - +--ro bandwidth-protection-desired? empty - +--ro node-protection-desired? empty - +--ro non-php-desired? empty - +--ro entropy-label-cap? empty - +--ro oam-mep-entities-desired? empty - +--ro oam-mip-entities-desired? empty + +--ro config + | +--ro static-bandwidth? uint32 + | +--ro auto-bandwidth + | | +--ro enabled? boolean + | | +--ro min-bw? uint32 + | | +--ro max-bw? uint32 + | | +--ro adjust-interval? uint32 + | | +--ro adjust-threshold? uint32 + | | +--ro overflow + | | | +--ro enabled? boolean + | | | +--ro overflow-threshold? uint32 + | | | +--ro trigger-event-count? uint16 + | | +--ro underflow + | | +--ro enabled? boolean + | | +--ro underflow-threshold? uint32 + | | +--ro trigger-event-count? uint16 + | +--ro local-protection-desired? empty + | +--ro bandwidth-protection-desired? empty + | +--ro node-protection-desired? empty + | +--ro non-php-desired? empty + | +--ro entropy-label-cap? empty + | +--ro oam-mep-entities-desired? empty + | +--ro oam-mip-entities-desired? empty + +--ro state + | +--ro static-bandwidth? uint32 + | +--ro auto-bandwidth + | | +--ro enabled? boolean + | | +--ro min-bw? uint32 + | | +--ro max-bw? uint32 + | | +--ro adjust-interval? uint32 + | | +--ro adjust-threshold? uint32 + | | +--ro overflow + | | | +--ro enabled? boolean + | | | +--ro overflow-threshold? uint32 + | | | +--ro trigger-event-count? uint16 + | | +--ro underflow + | | +--ro enabled? boolean + | | +--ro underflow-threshold? uint32 + | | +--ro trigger-event-count? uint16 + | +--ro local-protection-desired? empty + | +--ro bandwidth-protection-desired? empty + | +--ro node-protection-desired? empty + | +--ro non-php-desired? empty + | +--ro entropy-label-cap? empty + | +--ro oam-mep-entities-desired? empty + | +--ro oam-mip-entities-desired? empty +--ro backup-info +--ro backup-tunnel-name? string +--ro backup-frr-on? uint8 +--ro backup-protected-lsp-num? uint32 -6.2. RPC and Notification Data +3.4.2. RPC and Notification Data TBD. -6.3. YANG Module +3.4.3. YANG Module + + file "ietf-rsvp-te-psc@2015-10-16.yang" - file "ietf-rsvp-te-psc@2015-07-06.yang" module ietf-rsvp-te-psc { namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-te-psc"; + prefix "rsvp-te-psc"; import ietf-rsvp { prefix rsvp; } import ietf-te { prefix ietf-te; } @@ -2503,30 +2756,29 @@ prefix ietf-te; } import ietf-te-psc-types { prefix ietf-te-psc-types; } import ietf-te-types { prefix ietf-te-types; } - organization "IETF TEAS Working Group"; contact "TBA"; description "Latest update to RSVP-TE packet YANG data model."; - revision 2015-07-06 { + revision 2015-10-16 { description "Update to RSVP-TE packet YANG initial revision."; reference "RFC3209, RFC6511, RFC6790, RFC7260, RFC4859, RFC4090"; } /* RSVP-TE LSPs packet groupings */ grouping lsp-attributes-flags-psc_config { description "Configuration parameters relating to RSVP-TE LSP packet attribute flags"; leaf non-php-desired { @@ -2573,36 +2825,156 @@ } leaf node-protection-desired { type empty; description "Request FRR node protection on LSRs if present."; reference "RFC4090"; } } + grouping lsp-overflow_config { + description "configuration for mpls lsp bandwidth + overflow adjustment"; + + leaf enabled { + type boolean; + default false; + description "enables mpls lsp bandwidth overflow + adjustment on the lsp"; + } + + leaf overflow-threshold { + type uint32; + description "bandwidth percentage change to trigger + an overflow event"; + + } + + leaf trigger-event-count { + type uint16; + description "number of consecutive overflow sample + events needed to trigger an overflow adjustment"; + } + } + + grouping lsp-underflow_config { + description + "configuration for mpls lsp bandwidth + underflow adjustment"; + + leaf enabled { + type boolean; + default false; + description "enables bandwidth underflow + adjustment on the lsp"; + } + + leaf underflow-threshold { + type uint32; + description "bandwidth percentage change to trigger + and underflow event"; + } + + leaf trigger-event-count { + type uint16; + description "number of consecutive underflow sample + events needed to trigger an underflow adjustment"; + } + } + + grouping lsp-auto-bandwidth_config { + description + "Auto-Bandwidth grouping"; + container auto-bandwidth { + description "configure auto-bandwidth operation in + which devices automatically adjust bandwidth to meet + requirements"; + + leaf enabled { + type boolean; + default false; + description "enables mpls auto-bandwidth on the + lsp"; + } + + leaf min-bw { + type uint32; + description "set the minimum bandwidth in Mbps for an + auto-bandwidth LSP"; + } + + leaf max-bw { + type uint32; + description "set the maximum bandwidth in Mbps for an + auto-bandwidth LSP"; + + } + + leaf adjust-interval { + type uint32; + description "time in seconds between adjustments to + LSP bandwidth"; + } + + leaf adjust-threshold { + type uint32; + description "percentage difference between the LSP's + specified bandwidth and its current bandwidth + allocation -- if the difference is greater than the + specified percentage, auto-bandwidth adjustment is + triggered"; + } + + container overflow { + description "configuration of MPLS overflow bandwidth + adjustement for the LSP"; + uses lsp-overflow_config; + } + + container underflow { + description "configuration of MPLS underflow bandwidth + adjustement for the LSP"; + uses lsp-underflow_config; + } + } + } + + grouping lsp-bandwidth_config { + description + "LSP bandwidth grouping"; + leaf static-bandwidth { + type uint32; + description + "Static bandwidth, e.g., using + offline calculation"; + } + uses lsp-auto-bandwidth_config; + } + grouping lsp-properties-psc { description "Top level grouping for LSP properties."; container config { description "Configuration parameters relating to LSP properties"; + uses lsp-bandwidth_config; uses lsp-session-attributes-obj-flags-psc_config; uses lsp-attributes-flags-psc_config; - } container state { config false; description "State information associated with LSP properties"; + uses lsp-bandwidth_config; uses lsp-session-attributes-obj-flags-psc_config; uses lsp-attributes-flags-psc_config; } } /* End of RSVP-TE LSPs packet groupings */ /* RSVP-TE packet interface groupings */ grouping rsvp-te-interface_state { description "The RSVP-TE interface state grouping"; @@ -2901,145 +3274,160 @@ augment "/ietf-te:te/ietf-te:interfaces/ietf-te:interface" { description "RSVP reservable bandwidth configuration properties"; uses rsvp-te-interface-attributes-psc; uses rsvp-te-frr-backups; } augment "/ietf-te:te/ietf-te:lsps-state/ietf-te:lsp" { description "RSVP-TE LSP state properties"; - uses lsp-session-attributes-obj-flags-psc_config; - uses lsp-attributes-flags-psc_config; + uses lsp-properties-psc; uses lps-backup-info_state; } } + -7. IANA Considerations +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. URI: urn:ietf:params:xml:ns:yang:ietf-rsvp XML: N/A, the requested URI is an XML namespace. URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-te XML: N/A, the requested URI is an XML namespace. This document registers a YANG module in the YANG Module Names registry [RFC6020]. name: ietf-rsvp namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp prefix: ietf-rsvp reference: RFC3209 name: ietf-rsvp-te namespace: urn:ietf:params:xml:ns:yang:ietf-rsvp- te prefix: ietf-rsvp-te reference: RFC3209 -8. Security Considerations +5. Security Considerations The YANG module defined in this memo is designed to be accessed via the NETCONF protocol [RFC6241]. The lowest NETCONF layer is the secure transport layer and the mandatory-to-implement secure transport is SSH [RFC6242]. The NETCONF access control model [RFC6536] provides means to restrict access for particular NETCONF users to a pre-configured subset of all available NETCONF protocol operations and content. There are a number of data nodes defined in the YANG module which are writable/creatable/deletable (i.e., config true, which is the default). These data nodes may be considered sensitive or vulnerable in some network environments. Write operations (e.g., ) to these data nodes without proper protection can have a negative effect on network operations. -9. Acknowledgement +6. Acknowledgement The authors would like to thank Lou Berger for reviewing and providing valuable feedback on this document. -10. References +7. References -10.1. Normative References +7.1. Normative References [I-D.ietf-netmod-routing-cfg] Lhotka, L. and A. Lindem, "A YANG Data Model for Routing - Management", draft-ietf-netmod-routing-cfg-19 (work in - progress), May 2015. + Management", draft-ietf-netmod-routing-cfg-20 (work in + progress), October 2015. - [I-D.saad-teas-yang-te] + [I-D.ietf-teas-yang-te] Saad, T., Gandhi, R., Liu, X., Beeram, V., Shah, H., Chen, - X., and R. Jones, "A YANG Data Model for Traffic - Engineering Tunnels and Interfaces", draft-saad-teas-yang- - te-01 (work in progress), March 2015. + X., Jones, R., and B. Wen, "A YANG Data Model for Traffic + Engineering Tunnels and Interfaces", draft-ietf-teas-yang- + te-00 (work in progress), September 2015. [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate - Requirement Levels", BCP 14, RFC 2119, March 1997. + Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/ + RFC2119, March 1997, + . - [RFC2205] Braden, B., Zhang, L., Berson, S., Herzog, S., and S. + [RFC2205] Braden, R., Ed., Zhang, L., Berson, S., Herzog, S., and S. Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 - Functional Specification", RFC 2205, September 1997. + Functional Specification", RFC 2205, DOI 10.17487/RFC2205, + September 1997, . [RFC2747] Baker, F., Lindell, B., and M. Talwar, "RSVP Cryptographic - Authentication", RFC 2747, January 2000. + Authentication", RFC 2747, DOI 10.17487/RFC2747, January + 2000, . [RFC2961] Berger, L., Gan, D., Swallow, G., Pan, P., Tommasi, F., and S. Molendini, "RSVP Refresh Overhead Reduction - Extensions", RFC 2961, April 2001. + 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, December 2001. + Tunnels", RFC 3209, DOI 10.17487/RFC3209, December 2001, + . - [RFC3473] Berger, L., "Generalized Multi-Protocol Label Switching - (GMPLS) Signaling Resource ReserVation Protocol-Traffic - Engineering (RSVP-TE) Extensions", RFC 3473, January 2003. + [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, + . [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, - January 2004. + DOI 10.17487/RFC3688, January 2004, + . - [RFC5063] Satyanarayana, A. and R. Rahman, "Extensions to GMPLS - Resource Reservation Protocol (RSVP) Graceful Restart", - RFC 5063, October 2007. + [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., "YANG - A Data Modeling Language for the - Network Configuration Protocol (NETCONF)", RFC 6020, - October 2010. + [RFC6020] Bjorklund, M., Ed., "YANG - A Data Modeling Language for + the Network Configuration Protocol (NETCONF)", RFC 6020, + DOI 10.17487/RFC6020, October 2010, + . - [RFC6241] Enns, R., Bjorklund, M., Schoenwaelder, J., and A. - Bierman, "Network Configuration Protocol (NETCONF)", RFC - 6241, June 2011. + [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, June 2011. + 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, March - 2012. + Protocol (NETCONF) Access Control Model", RFC 6536, DOI + 10.17487/RFC6536, March 2012, + . - [RFC6991] Schoenwaelder, J., "Common YANG Data Types", RFC 6991, - July 2013. + [RFC6991] Schoenwaelder, J., Ed., "Common YANG Data Types", RFC + 6991, DOI 10.17487/RFC6991, July 2013, + . -10.2. Informative References +7.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-00 (work in - progress), March 2015. + draft-openconfig-mpls-consolidated-model-01 (work in + progress), July 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-00 (work in progress), March 2015. + netmod-opstate-01 (work in progress), July 2015. Authors' Addresses Vishnu Pavan Beeram Juniper Networks Email: vbeeram@juniper.net Tarek Saad Cisco Systems Inc