<?xml version="1.0" encoding="UTF-8"?>
  <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
  <!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.5.8 -->

<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
]>

<?rfc toc="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-teas-yang-rsvp-18" category="std">

  <front>
    <title abbrev="RSVP YANG Data Model">A YANG Data Model for Resource Reservation Protocol (RSVP)</title>

    <author initials="V.P." surname="Beeram" fullname="Vishnu Pavan Beeram">
      <organization>Juniper Networks</organization>
      <address>
        <email>vbeeram@juniper.net</email>
      </address>
    </author>
    <author initials="T." surname="Saad" fullname="Tarek Saad">
      <organization>Juniper Networks</organization>
      <address>
        <email>tsaad@juniper.net</email>
      </address>
    </author>
    <author initials="R." surname="Gandhi" fullname="Rakesh Gandhi">
      <organization>Cisco Systems, Inc.</organization>
      <address>
        <email>rgandhi@cisco.com</email>
      </address>
    </author>
    <author initials="X." surname="Liu" fullname="Xufeng Liu">
      <organization>Volta Networks</organization>
      <address>
        <email>xufeng.liu.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="I." surname="Bryskin" fullname="Igor Bryskin">
      <organization>Individual</organization>
      <address>
        <email>i_bryskin@yahoo.com</email>
      </address>
    </author>

    <date year="2022" month="July" day="11"/>

    
    <workgroup>TEAS Working Group</workgroup>
    <keyword>Internet-Draft</keyword>

    <abstract>


<t>This document defines a YANG data model for the configuration and management of
the RSVP protocol. The YANG data model covers the building blocks that may be
augmented by other RSVP extension data models such as RSVP Traffic-Engineering
(RSVP-TE). It is divided into two modules that cover the basic and extended
RSVP features.</t>



    </abstract>


  </front>

  <middle>


<section anchor="introduction" title="Introduction">

<t>YANG <xref target="RFC6020"/> and <xref target="RFC7950"/> is a data modeling language that was
introduced to define the contents of a conceptual data store that allows
networked devices to be managed using NETCONF <xref target="RFC6241"/>. YANG has proved
relevant beyond its initial confines, as bindings to other interfaces (e.g.
RESTCONF <xref target="RFC8040"/>) and encoding other than XML (e.g. JSON) are being defined.
Furthermore, YANG data models can be used as the basis of implementation for
other interfaces, such as CLI and programmatic APIs.</t>

<t>This document defines a YANG data model for the configuration and management of
the RSVP protocol <xref target="RFC2205"/>. The data model is divided into two modules:
a base and extended RSVP YANG modules. The RSVP base YANG ‘ietf-rsvp’ module covers the
data that is core to the function of the RSVP protocol and MUST be supported by
vendors that support RSVP protocol <xref target="RFC2205"/>.  The RSVP extended ‘ietf-rsvp-extended’
module covers the data that is optional, or provides ability to tune
RSVP protocol base functionality. The support for RSVP extended module
features by vendors is considered optional.</t>

<t>The RSVP YANG model provides the building blocks needed to allow augmentation
by other models that extend the RSVP protocol– such as using RSVP extensions to
signal Label Switched Paths (LSPs) as defined in <xref target="RFC3209"/>.</t>

<t>The YANG module(s) defined in this document are compatible with the Network
Management Datastore Architecture (NMDA) <xref target="RFC7950"/>.</t>

</section>
<section anchor="requirements-language" title="Requirements Language">

<t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”,
“SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this
document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/>
when, and only when, they appear in all capitals, as shown here.</t>

<t>The terminology for describing YANG data models is found in <xref target="RFC7950"/>.</t>

<section anchor="prefixes-in-data-node-names" title="Prefixes in Data Node Names">

<t>In this document, names of data nodes and other data model objects are prefixed
using the standard prefix associated with the corresponding YANG imported
modules, as shown in <xref target="tab1"/>.</t>

<texttable title="Prefixes and corresponding YANG modules" anchor="tab1">
      <ttcol align='left'>Prefix</ttcol>
      <ttcol align='left'>YANG module</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>if</c>
      <c>ietf-interfaces</c>
      <c><xref target="RFC8343"/></c>
      <c>rt</c>
      <c>ietf-routing</c>
      <c><xref target="RFC8349"/></c>
      <c>rt-types</c>
      <c>ietf-routing-types</c>
      <c><xref target="RFC8294"/></c>
      <c>inet</c>
      <c>ietf-inet-types</c>
      <c><xref target="RFC6991"/></c>
      <c>yang</c>
      <c>ietf-yang-types</c>
      <c><xref target="RFC6991"/></c>
      <c>key-chain</c>
      <c>ietf-key-chain</c>
      <c><xref target="RFC8177"/></c>
</texttable>

</section>
<section anchor="model-tree-diagram" title="Model Tree Diagram">

<t>A full tree diagram of the module(s) defined in this document is given in
subsequent sections  as per the syntax defined in <xref target="RFC8340"/>.</t>

</section>
</section>
<section anchor="model-overview" title="Model Overview">

<t>The RSVP YANG module augments the “control-plane-protocol” entry from the
‘ietf-routing’ module defined in <xref target="RFC8349"/>. It also defines the identity
“rsvp” of base type “rt:routing-protocol” to identify the RSVP routing protocol.</t>

<t>The ‘ietf-rsvp’ model defines a single instance of the RSVP protocol.  The top
‘rsvp’ container encompases data for one such RSVP protocol instance.  Multiple
instances can be defined as multiple control-plane protocols instances as
described in <xref target="RFC8349"/>.</t>

<t>The YANG data model defined has the common building blocks for the operation of
the base RSVP protocol for the session type defined in <xref target="RFC2205"/>. The
augmentation of this model by other models (e.g. to support RSVP Traffic
Engineering (TE) extensions for signaling Label Switched Paths (LSPs)) are
outside the scope of this document and are discussed in separate document(s).</t>

<section anchor="modules-relationship" title="Module(s) Relationship">

<t>This RSVP YANG data model defined in this document is divided into two modules: a base and extended
modules. The RSVP data covered in ‘ietf-rsvp’ module are categorized as core to
the function of the protocol and MUST be supported by vendors claiming the support for RSVP
protocol <xref target="RFC2205"/>.</t>

<t>The RSVP extended features that are covered in ‘ietf-rsvp-extended’ module are
categorized as either optional or providing ability to better tune the basic
functionality of the RSVP protocol. The support for RSVP extended features by
all vendors is considered optional.</t>

<t>The relationship between the base and RSVP extended YANG modules and the IETF
routing YANG model is shown in <xref target="figctrl"/>.</t>

<figure title="Relationship of RSVP and RSVP extended modules with other
protocol modules" anchor="figctrl"><artwork><![CDATA[
                +--------------+
       Routing  | ietf-routing |
                +--------------+
                      ^
                      |
                 +-----------+ 
  RSVP module    | ietf-rsvp |
                 +-----------+
                      ^
                      |                    ^: augment relationship
  RSVP extended       |
    module       +--------------------+
                 | ietf-rsvp-extended |
                 +--------------------+
]]></artwork></figure>

</section>
<section anchor="CoreFeatures" title="Core Features">

<t>The RSVP data covered in the ‘ietf-rsvp’ YANG module provides the common building
blocks that are required to configure, operate and manage the RSVP protocol
and MUST be supported by vendors that claim the support for base RSVP protocol
defined in <xref target="RFC2205"/>.</t>

<t>In addition, the following standard RSVP core features are modeled under the
‘ietf-rsvp’ module:</t>

<t><list style="symbols">
  <t>Basic operational statistics, including protocol messages, packets and errors.</t>
  <t>Basic RSVP authentication feature as defined in <xref target="RFC2747"/>) using string
based authentication key.</t>
  <t>Basic RSVP Refresh Reduction feature as defined in (<xref target="RFC2961"/>).</t>
  <t>Basic RSVP Hellos feature as defined in (<xref target="RFC3209"/>)</t>
  <t>Basic RSVP Graceful Restart feature as defined in <xref target="RFC3473"/>, <xref target="RFC5063"/>, and
<xref target="RFC5495"/>.</t>
</list></t>

</section>
<section anchor="OptionalFeatures" title="Optional Features">

<t>Optional features are beyond the basic configuration, and operation of the
RSVP protocol. The decision whether to support these RSVP features on a
particular device is left to the vendor that supports the RSVP core features.</t>

<t>The following optional features that are covered in the ‘ietf-rsvp-extended’
YANG module:</t>

<t><list style="symbols">
  <t>Advanced operational statistics, including protocol messages, packets and errors.</t>
  <t>Advanced RSVP authentication features as defined in <xref target="RFC2747"/>) using various
authentication key types including those defined in <xref target="RFC8177"/>.</t>
  <t>Advanced RSVP Refresh Reduction features defined in (<xref target="RFC2961"/>).</t>
  <t>Advanced RSVP Hellos features as defined in <xref target="RFC3209"/>, and <xref target="rfc4558"/>.</t>
  <t>Advanced RSVP Graceful Restart features as defined in <xref target="RFC3473"/>, <xref target="RFC5063"/>, and
<xref target="RFC5495"/>.</t>
</list></t>

</section>
<section anchor="data-model-structure" title="Data Model Structure">

<t>The RSVP YANG data model defines the ‘rsvp’ top-level container that contains
the configuration and operational state for the RSVP protocol.
The presence of this container enables the RSVP protocol functionality.</t>

<t>The ‘rsvp’ top-level container also includes data that has router level scope
(i.e. applicable to all objects modeled under rsvp). It also contains
configuration and state data about the following types of RSVP objects:</t>

<t><list style="symbols">
  <t>interfaces</t>
  <t>neighbors</t>
  <t>sessions</t>
</list></t>

<t>The derived state data is contained in “read-only” nodes directly under the
intended object as shown in <xref target="fig-highlevel"/>.</t>

<figure title="RSVP high-level tree model view" anchor="fig-highlevel"><artwork><![CDATA[
module: ietf-rsvp
   +--rw rsvp!
      +--rw <<router-level scope data>>
         .
         .
      +--rw interfaces
            .
            +-- ro <<derived state associated with interfaces>>
         .
         .
      +--rw neighbors
            .
            +-- ro <<derived state associated with the LSP Tunnel>>
         .
         .
      +--rw sessions
            .
            +-- ro <<derived state associated with the LSP Tunnel>>
         .
   rpcs:
      +--x clear-session
      +--x clear-neighbor
      +--x clear-authentication

]]></artwork></figure>

<t>The following</t>

<t>‘router-level’:</t>

<t><list style='empty'>
  <t>The router-level scope configuration and state data are applicable to all
modeled objects under the top-level ‘rsvp’ container, and MAY affect the RSVP
protocol behavior.</t>
</list></t>

<t>‘interfaces’:</t>

<t><list style='empty'>
  <t>The ‘interfaces’ container includes a list of RSVP enabled interfaces. It
also includes RSVP configuration and state data that is applicable to all
interfaces.  An entry in the interfaces list MAY carry its own configuration
or state data. Any data or state under the “interfaces” container level is
equally applicable to all interfaces unless it is explicitly overridden by
configuration or state under a specific interface.</t>
</list></t>

<t>‘neighbors’ :</t>

<t><list style='empty'>
  <t>The ‘neighbors’ container includes a list of RSVP neighbors. An entry in the
RSVP neighbor list MAY carry its own configuration and state relevant to the
specific RSVP neighbor. The RSVP neighbors can be dynamically discovered using
RSVP signaling, or can be explicitly configured.</t>
</list></t>

<t>‘sessions’:</t>

<t><list style='empty'>
  <t>The ‘sessions’ container includes a list RSVP sessions. An entry in the RSVP
session list MAY carry its own configuration and state relevant to a specific
RSVP session. RSVP sessions are usually derived state that are created as
result of signaling. This model defines attributes related to IP RSVP
sessions as defined in <xref target="RFC2205"/>.</t>
</list></t>

<t>The defined YANG data model supports configuration inheritance for neighbors, and
interfaces.  Data nodes defined under 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).</t>

</section>
<section anchor="model-notifications" title="Model Notifications">

<t>Modeling notifications data is key in any defined YANG data model. <xref target="RFC8639"/> and
<xref target="RFC8641"/> define a subscription and push mechanism for YANG datastores. This
mechanism currently allows the user to:</t>

<t><list style="symbols">
  <t>Subscribe notifications on a per client basis</t>
  <t>Specify subtree filters <xref target="RFC6241"/> or XPath filters <xref target="RFC8639"/> so that only interested
contents will be sent.</t>
  <t>Specify either periodic or on-demand notifications.</t>
</list></t>

</section>
</section>
<section anchor="rsvp-base-yang-model" title="RSVP Base YANG Model">

<t>The RSVP base module includes the core features and building blocks for modeling the RSVP
protocol as described in <xref target="CoreFeatures"/>.</t>

<section anchor="tree-diagram" title="Tree Diagram">

<t><xref target="fig-rsvp-tree"/> shows the YANG tree representation for configuration, state
data and RPCs that are covered in ‘ietf-rsvp’ YANG module:</t>

<figure title="RSVP model tree diagram" anchor="fig-rsvp-tree"><artwork><![CDATA[
module: ietf-rsvp

  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol:
    +--rw rsvp!
       +--rw interfaces
       |  +--rw refresh-reduction
       |  |  +--rw enabled?   boolean
       |  +--rw hellos
       |  |  +--rw enabled?   boolean
       |  +--rw authentication
       |  |  +--rw enabled?              boolean
       |  |  +--rw authentication-key?   string
       |  |  +--rw crypto-algorithm      identityref
       |  +--ro statistics
       |  |  +--ro messages
       |  |  |  +--ro ack-sent?                       yang:counter64
       |  |  |  +--ro ack-received?                   yang:counter64
       |  |  |  +--ro bundle-sent?                    yang:counter64
       |  |  |  +--ro bundle-received?                yang:counter64
       |  |  |  +--ro hello-sent?                     yang:counter64
       |  |  |  +--ro hello-received?                 yang:counter64
       |  |  |  +--ro integrity-challenge-sent?       yang:counter64
       |  |  |  +--ro integrity-challenge-received?   yang:counter64
       |  |  |  +--ro integrity-response-sent?        yang:counter64
       |  |  |  +--ro integrity-response-received?    yang:counter64
       |  |  |  +--ro notify-sent?                    yang:counter64
       |  |  |  +--ro notify-received?                yang:counter64
       |  |  |  +--ro path-sent?                      yang:counter64
       |  |  |  +--ro path-received?                  yang:counter64
       |  |  |  +--ro path-err-sent?                  yang:counter64
       |  |  |  +--ro path-err-received?              yang:counter64
       |  |  |  +--ro path-tear-sent?                 yang:counter64
       |  |  |  +--ro path-tear-received?             yang:counter64
       |  |  |  +--ro resv-sent?                      yang:counter64
       |  |  |  +--ro resv-received?                  yang:counter64
       |  |  |  +--ro resv-confirm-sent?              yang:counter64
       |  |  |  +--ro resv-confirm-received?          yang:counter64
       |  |  |  +--ro resv-err-sent?                  yang:counter64
       |  |  |  +--ro resv-err-received?              yang:counter64
       |  |  |  +--ro resv-tear-sent?                 yang:counter64
       |  |  |  +--ro resv-tear-received?             yang:counter64
       |  |  |  +--ro srefresh-sent?                  yang:counter64
       |  |  |  +--ro srefresh-received?              yang:counter64
       |  |  |  +--ro unknown-messages-received?      yang:counter64
       |  |  +--ro packets
       |  |  |  +--ro sent?       yang:counter64
       |  |  |  +--ro received?   yang:counter64
       |  |  +--ro errors
       |  |     +--ro authenticate?    yang:counter64
       |  |     +--ro checksum?        yang:counter64
       |  |     +--ro packet-length?   yang:counter64
       |  +--rw interface* [name]
       |     +--rw name                 if:interface-ref
       |     +--rw refresh-reduction
       |     |  +--rw enabled?   boolean
       |     +--rw hellos
       |     |  +--rw enabled?   boolean
       |     +--rw authentication
       |     |  +--rw enabled?              boolean
       |     |  +--rw authentication-key?   string
       |     |  +--rw crypto-algorithm      identityref
       |     +--ro statistics
       |        +--ro messages
       |        |  +--ro ack-sent?
       |        |  |       yang:counter64
       |        |  +--ro ack-received?
       |        |  |       yang:counter64
       |        |  +--ro bundle-sent?
       |        |  |       yang:counter64
       |        |  +--ro bundle-received?
       |        |  |       yang:counter64
       |        |  +--ro hello-sent?
       |        |  |       yang:counter64
       |        |  +--ro hello-received?
       |        |  |       yang:counter64
       |        |  +--ro integrity-challenge-sent?
       |        |  |       yang:counter64
       |        |  +--ro integrity-challenge-received?
       |        |  |       yang:counter64
       |        |  +--ro integrity-response-sent?
       |        |  |       yang:counter64
       |        |  +--ro integrity-response-received?
       |        |  |       yang:counter64
       |        |  +--ro notify-sent?
       |        |  |       yang:counter64
       |        |  +--ro notify-received?
       |        |  |       yang:counter64
       |        |  +--ro path-sent?
       |        |  |       yang:counter64
       |        |  +--ro path-received?
       |        |  |       yang:counter64
       |        |  +--ro path-err-sent?
       |        |  |       yang:counter64
       |        |  +--ro path-err-received?
       |        |  |       yang:counter64
       |        |  +--ro path-tear-sent?
       |        |  |       yang:counter64
       |        |  +--ro path-tear-received?
       |        |  |       yang:counter64
       |        |  +--ro resv-sent?
       |        |  |       yang:counter64
       |        |  +--ro resv-received?
       |        |  |       yang:counter64
       |        |  +--ro resv-confirm-sent?
       |        |  |       yang:counter64
       |        |  +--ro resv-confirm-received?
       |        |  |       yang:counter64
       |        |  +--ro resv-err-sent?
       |        |  |       yang:counter64
       |        |  +--ro resv-err-received?
       |        |  |       yang:counter64
       |        |  +--ro resv-tear-sent?
       |        |  |       yang:counter64
       |        |  +--ro resv-tear-received?
       |        |  |       yang:counter64
       |        |  +--ro srefresh-sent?
       |        |  |       yang:counter64
       |        |  +--ro srefresh-received?
       |        |  |       yang:counter64
       |        |  +--ro unknown-messages-received?
       |        |          yang:counter64
       |        +--ro packets
       |        |  +--ro sent?       yang:counter64
       |        |  +--ro received?   yang:counter64
       |        +--ro errors
       |           +--ro authenticate?    yang:counter64
       |           +--ro checksum?        yang:counter64
       |           +--ro packet-length?   yang:counter64
       +--rw sessions
       |  +--ro session-ip*
       |          [destination protocol-id destination-port]
       |     +--ro destination-port    uint16
       |     +--ro protocol-id         uint8
       |     +--ro source?             inet:ip-address
       |     +--ro destination         inet:ip-address
       |     +--ro session-name?       string
       |     +--ro session-status?     enumeration
       |     +--ro session-type        identityref
       |     +--ro psbs
       |     |  +--ro psb* []
       |     |     +--ro source-port?   inet:port-number
       |     |     +--ro expires-in?    uint32
       |     +--ro rsbs
       |        +--ro rsb* []
       |           +--ro source-port?         inet:port-number
       |           +--ro reservation-style    identityref
       |           +--ro expires-in?          uint32
       +--rw neighbors
       |  +--rw neighbor* [address]
       |     +--rw address                      inet:ip-address
       |     +--rw epoch?                       uint32
       |     +--rw expiry-time?                 uint32
       |     +--rw graceful-restart
       |     |  +--ro neighbor-restart-time?    uint32
       |     |  +--ro neighbor-recovery-time?   uint32
       |     |  +--rw helper-mode
       |     |     +--ro neighbor-restart-time-remaining?    uint32
       |     |     +--ro neighbor-recovery-time-remaining?   uint32
       |     +--ro hello-status?                enumeration
       |     +--rw interface?                   if:interface-ref
       |     +--ro neighbor-status?             enumeration
       |     +--rw refresh-reduction-capable?   boolean
       |     +--ro restart-count?               yang:counter32
       |     +--ro restart-time?                yang:date-and-time
       +--rw graceful-restart
          +--rw enabled?               boolean
          +--rw local-restart-time?    uint32
          +--rw local-recovery-time?   uint32
          +--rw helper-mode
             +--rw enabled?                    boolean
             +--rw max-helper-restart-time?    uint32
             +--rw max-helper-recovery-time?   uint32

  rpcs:
    +---x clear-session
    |  +---w input
    |     +---w routing-protocol-instance-name    leafref
    |     +---w (filter-type)
    |        +--:(match-all)
    |        |  +---w all                         empty
    |        +--:(match-one)
    |           +---w session-info
    |              +---w (session-type)
    |                 +--:(rsvp-session-ip)
    |                    +---w destination         leafref
    |                    +---w protocol-id         uint8
    |                    +---w destination-port    inet:ip-address
    +---x clear-neighbor
    |  +---w input
    |     +---w routing-protocol-instance-name    leafref
    |     +---w (filter-type)
    |        +--:(match-all)
    |        |  +---w all                         empty
    |        +--:(match-one)
    |           +---w neighbor-address            leafref
    +---x clear-authentication
       +---w input
          +---w routing-protocol-instance-name    leafref
          +---w (filter-type)
             +--:(match-all)
             |  +---w all                         empty
             +--:(match-one-interface)
                +---w interface?                  if:interface-ref
]]></artwork></figure>

</section>
<section anchor="rsvp-yang-mod" title="YANG Module">

<t>The ietf-rsvp module imports from the following modules:</t>

<t><list style="symbols">
  <t>ietf-interfaces defined in <xref target="RFC8343"/></t>
  <t>ietf-yang-types and ietf-inet-types defined in <xref target="RFC6991"/></t>
  <t>ietf-routing defined in <xref target="RFC8349"/></t>
  <t>ietf-key-chain defined in <xref target="RFC8177"/></t>
  <t>ietf-netconf-acm defined in <xref target="RFC8341"/></t>
</list></t>

<t>This module also references the following documents:
<xref target="RFC2205"/>, <xref target="RFC5495"/>, <xref target="RFC3473"/>, <xref target="RFC5063"/>, <xref target="RFC2747"/>, <xref target="RFC3209"/>, and <xref target="RFC2961"/>.</t>

<figure><artwork><![CDATA[
<CODE BEGINS> file "ietf-rsvp@2021-12-02.yang"
module ietf-rsvp {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp";

  /* Replace with IANA when assigned */

  prefix rsvp;

  import ietf-interfaces {
    prefix if;
    reference
      "RFC8343: A YANG Data Model for Interface Management";
  }
  import ietf-inet-types {
    prefix inet;
    reference
      "RFC6991: Common YANG Data Types";
  }
  import ietf-yang-types {
    prefix yang;
    reference
      "RFC6991: Common YANG Data Types";
  }
  import ietf-routing {
    prefix rt;
    reference
      "RFC8349: A YANG Data Model for Routing Management
       (NMDA Version)";
  }
  import ietf-key-chain {
    prefix key-chain;
    reference
      "RFC8177: YANG Data Model for Key Chains";
  }
  import ietf-netconf-acm {
    prefix nacm;
    reference
      "RFC8341: Network Configuration Access Control Model";
  }
  organization
    "IETF Traffic Engineering Architecture and Signaling (TEAS)
     Working Group";
  contact
    "WG Web:   <http://tools.ietf.org/wg/teas/>
     WG List:  <mailto:teas@ietf.org>

     Editor:   Vishnu Pavan Beeram
               <mailto:vbeeram@juniper.net>

     Editor:   Tarek Saad
               <mailto:tsaad@juniper.net>

     Editor:   Rakesh Gandhi
               <mailto:rgandhi@cisco.com>

     Editor:   Xufeng Liu
               <mailto: xufeng.liu.ietf@gmail.com>

     Editor:   Igor Bryskin
               <mailto:i_bryskin@yahoo.com>";
  description
    "This module contains the RSVP YANG data model.
     The model fully conforms to the Network Management Datastore
     Architecture (NMDA).

     Copyright (c) 2019 IETF Trust and the persons
     identified as authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Simplified BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).
     This version of this YANG module is part of RFC XXXX; see
     the RFC itself for full legal notices.";

  // RFC Ed.: replace XXXX with actual RFC number and remove this
  // note.
  // RFC Ed.: update the date below with the date of RFC publication
  // and remove this note.

  revision 2021-12-02 {
    description
      "Initial version.";
    reference
      "RFCXXXX: A YANG Data Model for Resource Reservation Protocol
       (RSVP)";
  }

  identity rsvp {
    base rt:routing-protocol;
    description
      "RSVP protocol";
  }

  identity rsvp-session-type {
    description
      "Base RSVP session type";
  }

  identity rsvp-session-ip {
    base rsvp-session-type;
    description
      "RSVP IP session type";
  }

  identity reservation-style {
    description
      "Base identity for reservation style.";
  }

  identity reservation-wildcard-filter {
    base reservation-style;
    description
      "Wildcard-Filter (WF) Style.";
    reference
      "RFC2205";
  }

  identity reservation-fixed-filter {
    base reservation-style;
    description
      "Fixed-Filter (FF) Style.";
    reference
      "RFC2205";
  }

  identity reservation-shared-explicit {
    base reservation-style;
    description
      "Shared Explicit (SE) Style.";
    reference
      "RFC2205";
  }

  grouping graceful-restart {
    description
      "RSVP graceful restart local parameters grouping.";
    container graceful-restart {
      description
        "Graceful restart local information.";
      leaf enabled {
        type boolean;
        default "false";
        description
          "'true' if RSVP Graceful Restart is enabled.
           'false' if RSVP Graceful Restart is disabled.";
        reference "RFC5495";
      }
      leaf local-restart-time {
        type uint32;
        units "seconds";
        default "120";
        description
          "Time it takes the local node to restart its RSVP-TE
           component (to the point where it can exchange RSVP
           Hello with its neighbors). A value of 0xffffffff
           indicates that the restart of the neighbor's control plane
           may occur over an indeterminate interval and that the
           operation of its data plane is unaffected by control plane
           failures.";
        reference "RFC3473";
      }
      leaf local-recovery-time {
        type uint32;
        units "seconds";
        default "120";
        description
          "The period of time, in seconds, that the local
           node requires to re-synchronize RSVP and MPLS
           forwarding state with its neighbor. A value of zero (0)
           indicates that MPLS forwarding state was not preserved
           across a particular reboot.";
        reference "RFC3473";
      }
      container helper-mode {
        description
          "Helper mode information. In this mode, the node
           resynchronizes its stored states with a neighbor whose
           control plane has restarted. The helper mode term is
           borrowed from RFC3623 and adopted by several vendors
           vendors in their implementation of RSVP graceful
           restart.";
        leaf enabled {
          type boolean;
          default "true";
          description
            "'true' if helper mode is enabled.";
        }
        leaf max-helper-restart-time {
          type uint32;
          units "seconds";
          default "20";
          description
            "The maximum time the router or switch waits after it
             discovers that the neighboring router has gone down
             before it declares the neighbor down.";
          reference "RFC5063";
        }
        leaf max-helper-recovery-time {
          type uint32;
          units "seconds";
          default "180";
          description
            "The maximum amount of time the router retains the state
             of its RSVP neighbors while they undergo a graceful
             restart.";
          reference "RFC5063";
        }
      }
    }
  }
  grouping neighbor-graceful-restart {
    description
      "RSVP graceful restart neighbor parameters grouping.";
    container graceful-restart {
      description
        "Graceful restart information.";
      leaf neighbor-restart-time {
        type uint32;
        units "seconds";
        default "120";
        config false;
        description
          "Time it takes the neighbor node to restart its RSVP-TE
           component (to the point where it can exchange RSVP
           Hello with its neighbors). A value of 0xffffffff
           indicates that the restart of the neighbor's control plane
           may occur over an indeterminate interval and that the
           operation of its data plane is unaffected by control plane
           failures.";
        reference "RFC3473";
      }
      leaf neighbor-recovery-time {
        type uint32;
        units "seconds";
        default "120";
        config false;
        description
          "The period of time, in milliseconds, that the neighbor
           node requires to re-synchronize RSVP and MPLS
           forwarding state with its neighbor. A value of zero (0)
           indicates that MPLS forwarding state was not preserved
           across a particular reboot.";
        reference "RFC3473";
      }
      container helper-mode {
        description
          "Helper mode information.";
        leaf neighbor-restart-time-remaining {
          type uint32;
          units "seconds";
          config false;
          description
            "Number of seconds remaining for neighbor to send Hello
             message after restart.";
          reference "RFC5063";
        }
        leaf neighbor-recovery-time-remaining {
          type uint32;
          units "seconds";
          config false;
          description
            "Number of seconds remaining for neighbor to refresh.";
          reference "RFC5063";
        }
      }
      // helper-mode
    }
  }

  grouping refresh-reduction {
    description
      "Top level grouping for RSVP refresh reduction parameters.";
    container refresh-reduction {
      description
        "Top level container for RSVP refresh reduction parameters.";
      leaf enabled {
        type boolean;
        default "true";
        description
          "'true' if RSVP Refresh Reduction is enabled.
           'false' if RSVP Refresh Reduction is disabled.";
      }
      reference
        "RFC2961 RSVP Refresh Overhead Reduction Extensions";
    }
  }

  grouping authentication {
    description
      "Top level grouping for RSVP authentication parameters.";
    container authentication {
      description
        "Top level container for RSVP authentication parameters.";
      leaf enabled {
        type boolean;
        default "false";
        description
          "'true' if RSVP Authentication is enabled.
           'false' if RSVP Authentication is disabled.";
      }
      leaf authentication-key {
        type string;
        default "";
        description
          "An authentication key string.";
        reference
          "RFC2747: RSVP Cryptographic Authentication";
      }
      leaf crypto-algorithm {
        type identityref {
          base key-chain:crypto-algorithm;
        }
        mandatory true;
        description
          "Cryptographic algorithm associated with key.";
      }
    }
  }

  grouping hellos {
    description
      "Top level grouping for RSVP hellos parameters.";
    container hellos {
      description
        "Top level container for RSVP hello parameters.";
      leaf enabled {
        type boolean;
        default "true";
        description
          "'true' if RSVP Hello is enabled.
           'false' if RSVP Hello is disabled.";
      reference
        "RFC3209: RSVP-TE: Extensions to RSVP for LSP Tunnels.
         RFC5495: Description of the Resource Reservation Protocol -
         Traffic-Engineered (RSVP-TE) Graceful Restart Procedures.";
      }
    }
  }

  grouping session-attributes {
    description
      "Top level grouping for RSVP session properties.";
    leaf destination-port {
      type uint16;
      description
        "RSVP destination port.";
      reference
        "RFC2205";
    }
    leaf protocol-id {
      type uint8;
      description
        "The IP protocol ID.";
      reference
        "RFC2205, section 3.2";
    }
    leaf source {
      type inet:ip-address;
      description
        "RSVP source address.";
      reference
        "RFC2205";
    }
    leaf destination {
      type inet:ip-address;
      description
        "RSVP destination address.";
      reference
        "RFC2205";
    }
    leaf session-name {
      type string;
      default "";
      description
        "The signaled name of this RSVP session.";
    }
    leaf session-status {
      type enumeration {
        enum up {
          description
            "RSVP session is up.";
        }
        enum down {
          description
            "RSVP session is down.";
        }
      }
      default "down";
      description
        "Enumeration of RSVP session states.";
    }
    leaf session-type {
      type identityref {
        base rsvp-session-type;
      }
      mandatory "true";
      description
        "RSVP session type.";
    }
    container psbs {
      description
        "Path State Block (PSB) container.";
      list psb {
        description
          "List of Path State Blocks.";
        leaf source-port {
          type inet:port-number;
          description
            "RSVP source port.";
          reference
            "RFC2205";
        }
        leaf expires-in {
          type uint32;
          units "seconds";
          default "180";
          description
            "Time to expiry (in seconds).";
        }
      }
    }
    container rsbs {
      description
        "Reservation State Block (RSB) container.";
      list rsb {
        description
          "List of Reservation State Blocks.";
        leaf source-port {
          type inet:port-number;
          description
            "RSVP source port.";
          reference
            "RFC2205";
        }
        leaf reservation-style {
          type identityref {
            base reservation-style;
          }
          mandatory "true";
          description
            "RSVP reservation style.";
        }
        leaf expires-in {
          type uint32;
          units "seconds";
          default "180";
          description
            "Time to expiry (in seconds).";
        }
      }
    }
  }

  grouping neighbor-attributes {
    description
      "Top level grouping for RSVP neighbor properties.";
    leaf address {
      type inet:ip-address;
      description
        "Address of the RSVP neighbor.";
    }
    leaf epoch {
      type uint32;
      default "0";
      description
        "Neighbor epoch.";
      reference "RFC5063";
    }
    leaf expiry-time {
      type uint32;
      units "seconds";
      default "180";
      description
        "Neighbor expiry time after which the neighbor state is
         purged if no states associated with it.";
    }
    uses neighbor-graceful-restart {
      description
        "Allows configuration applicable to all
         neighbors";
    }
    leaf hello-status {
      type enumeration {
        enum enabled {
          description
            "RSVP Hellos enabled.";
        }
        enum disabled {
          description
            "RSVP Hellos disabled.";
        }
        enum restarting {
          description
            "RSVP restarting.";
        }
      }
      config false;
      description
        "RSVP Hello status.";
    }
    leaf interface {
      type if:interface-ref;
      description
        "Interface where RSVP neighbor was detected.";
    }
    leaf neighbor-status {
      type enumeration {
        enum up {
          description
            "Neighbor state up.";
        }
        enum down {
          description
            "Neighbor state down.";
        }
        enum hello-disable {
          description
            "RSVP Hellos disabled.";
        }
        enum restarting {
          description
            "RSVP neighbor restarting.";
        }
      }
      config false;
      description
        "RSVP neighbor state.";
    }
    leaf refresh-reduction-capable {
      type boolean;
      default "true";
      description
        "Enables all RSVP refresh reduction message bundling, RSVP
         message ID, reliable message delivery and Srefresh
         messages.";
      reference
        "RFC2961 RSVP Refresh Overhead Reduction Extensions";
    }
    leaf restart-count {
      type yang:counter32;
      config false;
      description
        "Number of times this RSVP neighbor has restarted.";
    }
    leaf restart-time {
      type yang:date-and-time;
      config false;
      description
        "Last restart time of the RSVP neighbor.";
      reference "RFC3473";
    }
  }

  grouping packet-statistics {
    description
      "Packet statistics grouping.";
    container packets {
      description
        "Packet statistics container.";
      leaf sent {
        type yang:counter64;
        description
          "RSVP packet sent count.";
      }
      leaf received {
        type yang:counter64;
        description
          "RSVP packet received count.";
      }
    }
  }

  grouping message-statistics {
    description
      "RSVP protocol statistics grouping.";
    container messages {
      description
        "RSVP protocol statistics container.";
      leaf ack-sent {
        type yang:counter64;
        description
          "RSVP Hello sent count.";
      }
      leaf ack-received {
        type yang:counter64;
        description
          "RSVP Hello received count.";
      }
      leaf bundle-sent {
        type yang:counter64;
        description
          "RSVP Bundle message sent count.";
      }
      leaf bundle-received {
        type yang:counter64;
        description
          "RSVP Bundle message received count.";
      }
      leaf hello-sent {
        type yang:counter64;
        description
          "RSVP Hello message sent count.";
      }
      leaf hello-received {
        type yang:counter64;
        description
          "RSVP Hello message received count.";
      }
      leaf integrity-challenge-sent {
        type yang:counter64;
        description
          "RSVP Integrity Challenge message sent count.";
      }
      leaf integrity-challenge-received {
        type yang:counter64;
        description
          "RSVP Integrity Challenge message received count.";
      }
      leaf integrity-response-sent {
        type yang:counter64;
        description
          "RSVP Integrity Response message sent count.";
      }
      leaf integrity-response-received {
        type yang:counter64;
        description
          "RSVP Integrity Response message received count.";
      }
      leaf notify-sent {
        type yang:counter64;
        description
          "RSVP Notify message sent count.";
      }
      leaf notify-received {
        type yang:counter64;
        description
          "RSVP Notify message received count.";
      }
      leaf path-sent {
        type yang:counter64;
        description
          "RSVP Path message sent count.";
      }
      leaf path-received {
        type yang:counter64;
        description
          "RSVP Path message received count.";
      }
      leaf path-err-sent {
        type yang:counter64;
        description
          "RSVP Path error message sent count.";
      }
      leaf path-err-received {
        type yang:counter64;
        description
          "RSVP Path error message received count.";
      }
      leaf path-tear-sent {
        type yang:counter64;
        description
          "RSVP Path tear message sent count.";
      }
      leaf path-tear-received {
        type yang:counter64;
        description
          "RSVP Path tear message received count.";
      }
      leaf resv-sent {
        type yang:counter64;
        description
          "RSVP Resv message sent count.";
      }
      leaf resv-received {
        type yang:counter64;
        description
          "RSVP Resv message received count.";
      }
      leaf resv-confirm-sent {
        type yang:counter64;
        description
          "RSVP Confirm message sent count.";
      }
      leaf resv-confirm-received {
        type yang:counter64;
        description
          "RSVP Confirm message received count.";
      }
      leaf resv-err-sent {
        type yang:counter64;
        description
          "RSVP Resv error message sent count.";
      }
      leaf resv-err-received {
        type yang:counter64;
        description
          "RSVP Resv error message received count.";
      }
      leaf resv-tear-sent {
        type yang:counter64;
        description
          "RSVP Resv tear message sent count.";
      }
      leaf resv-tear-received {
        type yang:counter64;
        description
          "RSVP Resv tear message received count.";
      }
      leaf srefresh-sent {
        type yang:counter64;
        description
          "RSVP Srefresh message sent count.";
      }
      leaf srefresh-received {
        type yang:counter64;
        description
          "RSVP Srefresh message received count.";
      }
      leaf unknown-messages-received {
        type yang:counter64;
        description
          "Unknown messages received count.";
      }
    }
  }

  grouping errors-statistics {
    description
      "Error statistics grouping.";
    container errors {
      description
        "Error statistics container.";
      leaf authenticate {
        type yang:counter64;
        description
          "The total number of RSVP packets received with an
           authentication failure.";
      }
      leaf checksum {
        type yang:counter64;
        description
          "The total number of RSVP packets received with an invalid
           checksum value.";
      }
      leaf packet-length {
        type yang:counter64;
        description
          "The total number of packets received with an invalid
           packet length.";
      }
    }
  }

  grouping statistics {
    description
      "RSVP statistic attributes.";
    container statistics {
      config false;
      description
        "RSVP statistics container.";
      uses message-statistics;
      uses packet-statistics;
      uses errors-statistics;
    }
  }

  grouping intf-attributes {
    description
      "Top level grouping for RSVP interface properties.";
    uses refresh-reduction;
    uses hellos;
    uses authentication;
    uses statistics;
  }

  augment "/rt:routing/rt:control-plane-protocols/"
        + "rt:control-plane-protocol" {
    when "rt:type = 'rsvp:rsvp'" {
      description
        "This augment is only valid when routing protocol instance
         type is RSVP.";
    }
    description
      "RSVP protocol augmentation.";
    container rsvp {
      presence "Enable RSVP feature";
      description
        "RSVP feature container";
      container interfaces {
        description
          "RSVP interfaces container.";
        uses intf-attributes;
        list interface {
          key "name";
          description
            "RSVP interfaces.";
          leaf name {
            type if:interface-ref;
            description
              "RSVP interface.";
          }
          uses intf-attributes;
        }
      }
      container sessions {
        description
          "RSVP sessions container.";
        list session-ip {
          key "destination protocol-id destination-port";
          config false;
          description
            "List of RSVP sessions.";
          uses session-attributes;
        }
      }
      container neighbors {
        description
          "RSVP neighbors container";
        list neighbor {
          key "address";
          description
            "List of RSVP neighbors";
          uses neighbor-attributes;
        }
      }
      uses graceful-restart;
    }
  }

  grouping session-ref {
    description
      "Session reference information";
    leaf destination {
      type leafref {
        path "/rt:routing/rt:control-plane-protocols"
           + "/rt:control-plane-protocol/rsvp:rsvp"
           + "/rsvp:sessions/rsvp:session-ip/destination";
      }
      mandatory true;
      description
        "The RSVP session destination.";
    }
    leaf protocol-id {
      type uint8;
      mandatory true;
      description
        "The RSVP session protocol ID.";
    }
    leaf destination-port {
      type inet:ip-address;
      mandatory true;
      description
        "The RSVP session destination port.";
    }
  }

  rpc clear-session {
    nacm:default-deny-all;
    description
      "Clears RSVP sessions RPC";
    input {
      leaf routing-protocol-instance-name {
        type leafref {
          path "/rt:routing/rt:control-plane-protocols/"
             + "rt:control-plane-protocol/rt:name";
        }
        mandatory true;
        description
          "Name of the RSVP protocol instance whose session
           is being cleared.

           If the corresponding RSVP instance doesn't exist,
           then the operation will fail with an error-tag of
           'data-missing' and an error-app-tag of
           'routing-protocol-instance-not-found'.";
      }
      choice filter-type {
        mandatory true;
        description
          "Filter choice";
        case match-all {
          leaf all {
            type empty;
            mandatory true;
            description
              "Match all RSVP sessions.";
          }
        }
        case match-one {
          container session-info {
            description
              "Specifies the specific session to invoke the operation
               on.";
            choice session-type {
              mandatory true;
              description
                "The RSVP session type.";
              case rsvp-session-ip {
                uses session-ref;
              }
            }
          }
        }
      }
    }
  }

  rpc clear-neighbor {
    nacm:default-deny-all;
    description
      "RPC to clear the RSVP Hello session to a neighbor.";
    input {
      leaf routing-protocol-instance-name {
        type leafref {
          path "/rt:routing/rt:control-plane-protocols/"
             + "rt:control-plane-protocol/rt:name";
        }
        mandatory true;
        description
          "Name of the RSVP protocol instance whose session
           is being cleared.

           If the corresponding RSVP instance doesn't exist,
           then the operation will fail with an error-tag of
           'data-missing' and an error-app-tag of
           'routing-protocol-instance-not-found'.";
      }
      choice filter-type {
        mandatory true;
        description
          "The Filter choice.";
        case match-all {
          leaf all {
            type empty;
            mandatory true;
            description
              "Match all RSVP neighbor sessions.";
          }
        }
        case match-one {
          leaf neighbor-address {
            type leafref {
              path "/rt:routing/rt:control-plane-protocols"
                 + "/rt:control-plane-protocol/rsvp:rsvp"
                 + "/rsvp:neighbors/rsvp:neighbor/address";
            }
            mandatory true;
            description
              "Match the specific RSVP neighbor session.";
          }
        }
      }
    }
  }

  rpc clear-authentication {
    nacm:default-deny-all;
    description
      "Clears the RSVP Security Association (SA) before the
       lifetime expires.";
    input {
      leaf routing-protocol-instance-name {
        type leafref {
          path "/rt:routing/rt:control-plane-protocols/"
             + "rt:control-plane-protocol/rt:name";
        }
        mandatory true;
        description
          "Name of the RSVP protocol instance whose session
           is being cleared.

           If the corresponding RSVP instance doesn't exist,
           then the operation will fail with an error-tag of
           'data-missing' and an error-app-tag of
           'routing-protocol-instance-not-found'.";
      }
      choice filter-type {
        mandatory true;
        description
          "Filter choice";
        case match-all {
          leaf all {
            type empty;
            mandatory true;
            description
              "Match all RSVP security associations.";
          }
        }
        case match-one-interface {
          leaf interface {
            type if:interface-ref;
            description
              "Interface where RSVP security association(s) to be
               detected.";
          }
        }
      }
    }
  }
}
<CODE ENDS>
]]></artwork></figure>

</section>
</section>
<section anchor="rsvp-extended-yang-model" title="RSVP Extended YANG Model">

<t>The RSVP extended module augments the RSVP base module with optional feature data
as described in <xref target="OptionalFeatures"/>.</t>

<section anchor="tree-diagram-1" title="Tree Diagram">

<t><xref target="fig-rsvp-extended"/> shows the YANG tree representation for configuration and
state data that are covered in ‘ietf-rsvp-extended’ YANG module:</t>

<figure title="RSVP extended module tree diagram" anchor="fig-rsvp-extended"><artwork><![CDATA[
module: ietf-rsvp-extended

  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/rsvp:rsvp
            /rsvp:graceful-restart:
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces:
    +--rw refresh-interval?        uint32
    +--rw refresh-misses?          uint32
    +--rw checksum-enable?         empty
    +--rw patherr-state-removal?   empty
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces
            /rsvp:statistics/rsvp:packets:
    +--ro discontinuity-time?   yang:date-and-time
    +--ro out-dropped?          yang:counter64
    +--ro in-dropped?           yang:counter64
    +--ro out-errors?           yang:counter64
    +--ro in-errors?            yang:counter64
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces
            /rsvp:refresh-reduction:
    +--rw bundle-message-max-size?    uint32
    +--rw ack-hold-time?              uint32
    +--rw ack-max-size?               uint32
    +--rw ack-retransmit-time?        uint32
    +--rw srefresh-ack-desired?       empty
    +--rw srefresh-max-size?          uint32
    +--rw srefresh-relative-period?   uint8
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces
            /rsvp:hellos:
    +--rw interface-based?   empty
    +--rw hello-interval?    uint32
    +--rw hello-misses?      uint32
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces
            /rsvp:authentication:
    +--rw lifetime?      uint32
    +--rw window-size?   uint32
    +--rw challenge?     empty
    +--rw retransmits?   uint32
    +--rw key-chain?     key-chain:key-chain-ref
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces
            /rsvp:interface:
    +--rw refresh-interval?        uint32
    +--rw refresh-misses?          uint32
    +--rw checksum-enable?         empty
    +--rw patherr-state-removal?   empty
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces
            /rsvp:interface/rsvp:statistics/rsvp:packets:
    +--ro discontinuity-time?   yang:date-and-time
    +--ro out-dropped?          yang:counter64
    +--ro in-dropped?           yang:counter64
    +--ro out-errors?           yang:counter64
    +--ro in-errors?            yang:counter64
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces
            /rsvp:interface/rsvp:refresh-reduction:
    +--rw bundle-message-max-size?    uint32
    +--rw ack-hold-time?              uint32
    +--rw ack-max-size?               uint32
    +--rw ack-retransmit-time?        uint32
    +--rw srefresh-ack-desired?       empty
    +--rw srefresh-max-size?          uint32
    +--rw srefresh-relative-period?   uint8
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces
            /rsvp:interface/rsvp:hellos:
    +--rw interface-based?   empty
    +--rw hello-interval?    uint32
    +--rw hello-misses?      uint32
  augment /rt:routing/rt:control-plane-protocols
            /rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces
            /rsvp:interface/rsvp:authentication:
    +--rw lifetime?      uint32
    +--rw window-size?   uint32
    +--rw challenge?     empty
    +--rw retransmits?   uint32
    +--rw key-chain?     key-chain:key-chain-ref
]]></artwork></figure>

</section>
<section anchor="yang-module" title="YANG Module">

<t>The ‘ietf-rsvp-extended’ module imports from the following modules:</t>

<t><list style="symbols">
  <t>ietf-rsvp defined in this document</t>
  <t>ietf-routing defined in <xref target="RFC8349"/></t>
  <t>ietf-yang-types and ietf-inet-types defined in <xref target="RFC6991"/></t>
  <t>ietf-key-chain defined in <xref target="RFC8177"/></t>
</list></t>

<t><xref target="fig-rsvp-extended-mod"/> shows the RSVP extended YANG module:</t>

<t>This module also references the following documents:
<xref target="RFC3473"/>, <xref target="RFC2747"/>, <xref target="RFC3209"/>, <xref target="RFC2205"/>, <xref target="RFC2961"/>, and <xref target="RFC5495"/>.</t>

<figure title="RSVP extended YANG module" anchor="fig-rsvp-extended-mod"><artwork><![CDATA[
<CODE BEGINS> file "ietf-rsvp-extended@2021-12-02.yang"
module ietf-rsvp-extended {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-rsvp-extended";
  prefix rsvp-extended;

  import ietf-rsvp {
    prefix rsvp;
    reference
      "RFCXXXX: A YANG Data Model for Resource Reservation Protocol
       (RSVP)";
  }
  import ietf-routing {
    prefix rt;
    reference
      "RFC8349: A YANG Data Model for Routing Management
       (NMDA Version)";
  }
  import ietf-yang-types {
    prefix yang;
    reference
      "RFC6991: Common YANG Data Types";
  }
  import ietf-key-chain {
    prefix key-chain;
    reference
      "RFC8177: YANG Data Model for Key Chains";
  }

  organization
    "IETF Traffic Engineering Architecture and Signaling (TEAS)
     Working Group";
  contact
    "WG Web:   <http://tools.ietf.org/wg/teas/>
     WG List:  <mailto:teas@ietf.org>

     Editor:   Vishnu Pavan Beeram
               <mailto:vbeeram@juniper.net>

     Editor:   Tarek Saad
               <mailto:tsaad@juniper.net>

     Editor:   Rakesh Gandhi
               <mailto:rgandhi@cisco.com>

     Editor:   Xufeng Liu
               <mailto: xufeng.liu.ietf@gmail.com>

     Editor:   Igor Bryskin
               <mailto:i_bryskin@yahoo.com>";
  description
    "This module contains the Extended RSVP YANG data model.
     The model fully conforms to the Network Management Datastore
     Architecture (NMDA).

     Copyright (c) 2019 IETF Trust and the persons
     identified as authors of the code.  All rights reserved.

     Redistribution and use in source and binary forms, with or
     without modification, is permitted pursuant to, and subject
     to the license terms contained in, the Simplified BSD License
     set forth in Section 4.c of the IETF Trust's Legal Provisions
     Relating to IETF Documents
     (https://trustee.ietf.org/license-info).
     This version of this YANG module is part of RFC XXXX; see
     the RFC itself for full legal notices.";

  // RFC Ed.: replace XXXX with actual RFC number and remove this
  // note.
  // RFC Ed.: update the date below with the date of RFC publication
  // and remove this note.

  revision 2021-12-02 {
    description
      "Initial version.";
    reference
      "RFCXXXX: A YANG Data Model for Resource Reservation Protocol
       (RSVP)";
  }

  grouping graceful-restart-extended {
    description
      "Configuration parameters relating to RSVP Graceful-Restart.";
  }

  grouping authentication-extended {
    description
      "Configuration parameters relating to RSVP authentication.";
    leaf lifetime {
      type uint32 {
        range "30..86400";
      }
      units "seconds";
      default "30";
      description
        "Life time for each security association.";
      reference
        "RFC2747: RSVP Cryptographic Authentication";
    }
    leaf window-size {
      type uint32 {
        range "1..64";
      }
      default "2";
      description
        "Window-size to limit number of out-of-order messages.";
      reference
        "RFC2747: RSVP Cryptographic Authentication";
    }
    leaf challenge {
      type empty;
      description
        "Enable challenge messages.";
      reference
        "RFC2747: RSVP Cryptographic Authentication";
    }
    leaf retransmits {
      type uint32 {
        range "1..10000";
      }
      default "1";
      description
        "Number of retransmits when messages are dropped.";
      reference
        "RFC2747: RSVP Cryptographic Authentication";
    }
    leaf key-chain {
      type key-chain:key-chain-ref;
      description
        "Key chain name to authenticate RSVP
         signaling messages.";
      reference
        "RFC2747: RSVP Cryptographic Authentication";
    }
  }

  grouping hellos-extended {
    description
      "Configuration parameters relating to RSVP hellos";
    leaf interface-based {
      type empty;
      description
        "Enable interface-based Hello adjacency if present.";
    }
    leaf hello-interval {
      type uint32;
      units "milliseconds";
      default "9000";
      description
        "Configure interval between successive Hello messages in
         milliseconds.";
      reference
        "RFC3209: RSVP-TE: Extensions to RSVP for LSP Tunnels.
         RFC5495: Description of the Resource Reservation Protocol -
         Traffic-Engineered (RSVP-TE) Graceful Restart Procedures.";
    }
    leaf hello-misses {
      type uint32 {
        range "1..10";
      }
      default "3";
      description
        "Configure max number of consecutive missed Hello messages.";
      reference
        "RFC3209: RSVP-TE: Extensions to RSVP for LSP Tunnels.
         RFC5495: Description of the Resource Reservation Protocol -
         Traffic- Engineered (RSVP-TE) Graceful Restart Procedures.";
    }
  }

  grouping signaling-parameters-extended {
    description
      "Configuration parameters relating to RSVP signaling";
    leaf refresh-interval {
      type uint32;
      units "seconds";
      default "30";
      description
        "Set interval between successive refreshes";
      reference "RFC2205";
    }
    leaf refresh-misses {
      type uint32;
      default "9";
      description
        "Set max number of consecutive missed messages for state
         expiry";
      reference "RFC2205";
    }
    leaf checksum-enable {
      type empty;
      description
        "Enable RSVP message checksum computation";
      reference "RFC2205";
    }
    leaf patherr-state-removal {
      type empty;
      description
        "State-Removal flag in Path Error message if present.";
      reference "RFC3473";
    }
  }

  grouping refresh-reduction-extended {
    description
      "Configuration parameters relating to RSVP refresh reduction.";
    leaf bundle-message-max-size {
      type uint32 {
        range "512..65000";
      }
      default "1500";
      description
        "Configure maximum size (bytes) of a single RSVP Bundle
         message.";
      reference "RFC2961";
    }
    leaf ack-hold-time {
      type uint32;
      units "milliseconds";
      default "9000";
      description
        "Configure hold time in milliseconds for sending RSVP ACK
         message(s).";
      reference "RFC2961";
    }
    leaf ack-max-size {
      type uint32;
      default "1500";
      description
        "Configure max size of a single RSVP ACK message.";
      reference "RFC2961";
    }
    leaf ack-retransmit-time {
      type uint32;
      units "milliseconds";
      default "500";
      description
        "Configure min delay in milliseconds to wait for an
         acknowledgment before being retransmitted.";
      reference "RFC2961";
    }
    leaf srefresh-ack-desired {
      type empty;
      description
        "Enables the sending of MESSAGE_ID with ACK_Desired
         set with Srefresh messages.";
      reference "RFC2961";
    }
    leaf srefresh-max-size {
      type uint32 {
        range "20..65000";
      }
      default "1500";
      description
        "Configure max size (bytes) of a single RSVP Srefresh
         message.";
      reference "RFC2961";
    }
    leaf srefresh-relative-period {
      type uint8 {
        range "10..100";
      }
      description
        "Configures the period of Srefreshes relative to standard
         refresh message period in percentage.";
    }
  }

  grouping packets-extended-statistics {
    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 out-dropped {
      type yang:counter64;
      description
        "Out RSVP packet drop count.";
    }
    leaf in-dropped {
      type yang:counter64;
      description
        "In RSVP packet drop count.";
    }
    leaf out-errors {
      type yang:counter64;
      description
        "Out RSVP packet errors count.";
    }
    leaf in-errors {
      type yang:counter64;
      description
        "In RSVP packet rx errors count.";
    }
  }

  /**
   * RSVP extensions augmentations
   */
  /* RSVP graceful restart*/

  augment "/rt:routing/rt:control-plane-protocols/"
        + "rt:control-plane-protocol/rsvp:rsvp/"
        + "rsvp:graceful-restart" {
    description
      "RSVP graceful restart configuration extensions";
    uses graceful-restart-extended;
  }


  /**
   * RSVP all interfaces extensions
   */

  /* RSVP interface signaling extensions */
  augment "/rt:routing/rt:control-plane-protocols/"
        + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces" {
    description
      "RSVP signaling all interfaces configuration extensions";
    uses signaling-parameters-extended;
  }

  /* Packet statistics extension */
  augment "/rt:routing/rt:control-plane-protocols/"
        + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/"
        + "rsvp:statistics/rsvp:packets" {
    description
      "RSVP packets all interfaces configuration extensions";
    uses packets-extended-statistics;
  }

  /* RSVP refresh reduction extension */
  augment "/rt:routing/rt:control-plane-protocols/"
        + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/"
        + "rsvp:refresh-reduction" {
    description
      "RSVP refresh-reduction all interface configuration
       extensions";
    uses refresh-reduction-extended;
  }

  /* RSVP hellos extension */
  augment "/rt:routing/rt:control-plane-protocols/"
        + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/"
        + "rsvp:hellos" {
    description
      "RSVP hello all interfaces configuration extensions";
    uses hellos-extended;
  }

  /* RSVP authentication extension */
  augment "/rt:routing/rt:control-plane-protocols/"
        + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/"
        + "rsvp:authentication" {
    description
      "RSVP authentication all interfaces configuration extensions";
    uses authentication-extended;
  }

  /**
   * RSVP per interface extensions
   */
  /* RSVP interface signaling extensions */

  augment "/rt:routing/rt:control-plane-protocols/"
        + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/"
        + "rsvp:interface" {
    description
      "RSVP signaling interface configuration extensions";
    uses signaling-parameters-extended;
  }

  /* Packet statistics extension */
  augment "/rt:routing/rt:control-plane-protocols/"
        + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/"
        + "rsvp:interface/rsvp:statistics/rsvp:packets" {
    description
      "RSVP packet stats extensions";
    uses packets-extended-statistics;
  }

  /* RSVP refresh reduction extension */
  augment "/rt:routing/rt:control-plane-protocols/"
        + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/"
        + "rsvp:interface/rsvp:refresh-reduction" {
    description
      "RSVP refresh-reduction interface configuration extensions";
    uses refresh-reduction-extended;
  }

  /* RSVP hellos extension */
  augment "/rt:routing/rt:control-plane-protocols/"
        + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/"
        + "rsvp:interface/rsvp:hellos" {
    description
      "RSVP hello interface configuration extensions";
    uses hellos-extended;
  }

  /* RSVP authentication extension */
  augment "/rt:routing/rt:control-plane-protocols/"
        + "rt:control-plane-protocol/rsvp:rsvp/rsvp:interfaces/"
        + "rsvp:interface/rsvp:authentication" {
    description
      "RSVP authentication interface configuration extensions";
    uses authentication-extended;
  }
}
<CODE ENDS>
]]></artwork></figure>

</section>
</section>
<section anchor="iana-considerations" title="IANA Considerations">

<t>This document registers the following URIs in the IETF XML registry
<xref target="RFC3688"/>.  Following the format in <xref target="RFC3688"/>, the following registration
is requested to be made.</t>

<figure><artwork><![CDATA[
   URI: urn:ietf:params:xml:ns:yang:ietf-rsvp
   Registrant Contact:  The IESG.
   XML: N/A, the requested URI is an XML namespace.

   URI: urn:ietf:params:xml:ns:yang:ietf-rsvp-extended
   Registrant Contact:  The IESG.
   XML: N/A, the requested URI is an XML namespace.
]]></artwork></figure>

<t>This document registers two YANG modules in the YANG Module Names
registry <xref target="RFC6020"/>.</t>

<figure><artwork><![CDATA[
   name:       ietf-rsvp
   namespace:  urn:ietf:params:xml:ns:yang:ietf-rsvp
   prefix:     rsvp
   reference:  RFCXXXX

   name:       ietf-rsvp-extended
   namespace:  urn:ietf:params:xml:ns:yang:ietf-rsvp-extended
   prefix:     rsvp-extended
   reference:  RFCXXXX
]]></artwork></figure>

</section>
<section anchor="security-considerations" title="Security Considerations">

<t>The YANG module specified in this document defines a schema for data that is
designed to be accessed via network management protocols such as NETCONF
<xref target="RFC6241"/> or RESTCONF <xref target="RFC8040"/>. The lowest NETCONF layer is the secure
transport layer, and the mandatory-to-implement secure transport is Secure
Shell (SSH) <xref target="RFC6242"/>.  The lowest RESTCONF layer is HTTPS, and the
mandatory-to-implement secure transport is TLS <xref target="RFC8446"/>.</t>

<t>The Network Configuration Access Control Model (NACM) <xref target="RFC8341"/> provides the
means to restrict access for particular NETCONF or RESTCONF users to a
preconfigured subset of all available NETCONF or RESTCONF protocol operations
and content.</t>

<t>There are a number of data nodes defined in the YANG module(s) defined in this
document that 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., &lt;edit-config&gt;) to these data
nodes without proper protection can have a negative effect on network
operations. These are the subtrees and data nodes and their sensitivity/vulnerability:</t>

<t>/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/rsvp:rsvp/
    /rsvp:globals
    /rsvp:interfaces
    /rsvp:sessions</t>

<t><list style='empty'>
  <t>All of which are considered sensitive and if access to either of these is
compromised, it can result in temporary network outages or be employed to
mount DoS attacks.</t>
</list></t>

<t>Some of the readable data nodes in this YANG module may be considered sensitive
or vulnerable in some network environments. It is thus important to control
read access (e.g., via get, get-config, or notification) to these data nodes.
These are the subtrees and data nodes and their sensitivity/vulnerability:</t>

<t>/rt:routing/rt:control-plane-protocols/rt:control-plane-protocol/rsvp:rsvp/
    /rsvp:globals
    /rsvp:interfaces
    /rsvp:sessions</t>

<t><list style='empty'>
  <t>Additional information from these state data nodes can be inferred with respect
to the network topology, and device location and subsequently be used to mount
other attacks in the network.</t>
</list></t>

<t>For RSVP authentication, the configuration supported is via the specification of
key-chains <xref target="RFC8177"/> or the direct specification of key and authentication
algorithm, and hence security considerations of <xref target="RFC8177"/> are inherited.  This
includes the considerations with respect to the local storage and handling of
authentication keys.</t>

<t>Some of the RPC operations defined in this YANG module may be considered
sensitive or vulnerable in some network environments.  It is thus
important to control access to these operations.  The RSVP YANG
module support the “clear-session” and “clear-neighbor” RPCs.  If
access to either of these is compromised, they can result in
temporary network outages be employed to mount DoS attacks.</t>

<t>The security considerations spelled out in the YANG 1.1 specification
<xref target="RFC7950"/> apply for this document as well.</t>

</section>
<section anchor="acknowledgement" title="Acknowledgement">

<t>The authors would like to thank Tom Petch for reviewing and providing useful
feedback about the document. The authors would also like to thank Lou Berger
for reviewing and providing valuable feedback on this document.</t>

</section>
<section anchor="appendix-a" title="Appendix A">

<t>A simple network setup is shown in {fig-example title}.  R1 runs the RSVP routing
protocol on both interfaces ‘ge0/0/0/1’, and ‘ge0/0/0/2’.</t>

<figure title="Example of network configuration." anchor="fig-example"><artwork><![CDATA[
State on R1:

Sessions:
=========
Destination         Protocol-ID Dest-port 
198.51.100.1        10          10 

Neighbors:
==========
Neighbor Address    Interface
192.0.2.6           ge0/0/0/1

                               192.0.2.5/30
                              ge0/0/0/1
                              +---
                             /
                        +-----+
                        | R1  |
                        +-----+
                             \
                              +---
                              ge0/0/0/2
                               192.0.2.13/30

]]></artwork></figure>

<t>The instance data tree could then be as follows:</t>

<figure title="Example RSVP JSON encoded data instance tree." anchor="fig-instance-tree"><artwork><![CDATA[
{
  "ietf-routing:routing": {
    "control-plane-protocols": {
      "control-plane-protocol": [
        {
          "type": "rt:routing-protocol",
          "name": "rsvp:rsvp",
          "ietf-rsvp:rsvp": {
            "interfaces": {
              "refresh-reduction": {
                "enabled": true,
                "ietf-rsvp-extended:bundle-message-max-size": 2000,
                "ietf-rsvp-extended:reliable-ack-hold-time": 180,
                "ietf-rsvp-extended:reliable-ack-max-size": 2000,
                "ietf-rsvp-extended:reliable-retransmit-time": 180,
                "ietf-rsvp-extended:reliable-srefresh": [
                  null
                ],
                "ietf-rsvp-extended:summary-max-size": 2000
              },
              "hellos": {
                "enabled": true,
                "ietf-rsvp-extended:interface-based": [
                  null
                ],
                "ietf-rsvp-extended:hello-interval": 27000,
                "ietf-rsvp-extended:hello-misses": 3
              },
              "statistics": {
                "messages": {
                  "ack-sent": "777",
                  "ack-received": "4840",
                  "bundle-sent": "2195",
                  "bundle-received": "293",
                  "hello-sent": "2516",
                  "hello-received": "3535",
                  "integrity-challenge-sent": "2737",
                  "integrity-challenge-received": "2330",
                  "integrity-response-sent": "895",
                  "integrity-response-received": "1029",
                  "path-sent": "1197",
                  "path-received": "3568",
                  "path-err-sent": "4658",
                  "path-err-received": "695",
                  "path-tear-sent": "3706",
                  "path-tear-received": "2604",
                  "resv-sent": "3353",
                  "resv-received": "3129",
                  "resv-err-sent": "1787",
                  "resv-err-received": "3205",
                  "resv-tear-sent": "4465",
                  "resv-tear-received": "3056",
                  "summary-refresh-sent": "655",
                  "summary-refresh-received": "3856"
                },
                "packets": {
                  "sent": "2147",
                  "received": "4374",
                  "ietf-rsvp-extended:discontinuity-time":
                  "2015-10-24T17:11:27+02:00",
                  "ietf-rsvp-extended:out-dropped": "2696",
                  "ietf-rsvp-extended:in-dropped": "941",
                  "ietf-rsvp-extended:out-errors": "19",
                  "ietf-rsvp-extended:in-errors": "2732"
                },
                "errors": {
                  "authenticate": "2540",
                  "checksum": "2566",
                  "packet-length": "267"
                }
              },
              "interface": [
                {
                  "interface": "ge0/0/0/1",
                  "statistics": {
                    "messages": {
                      "ack-sent": "2747",
                      "ack-received": "4934",
                      "bundle-sent": "1618",
                      "bundle-received": "3668",
                      "hello-sent": "4288",
                      "hello-received": "1194",
                      "integrity-challenge-sent": "4850",
                      "integrity-challenge-received": "3979",
                      "integrity-response-sent": "479",
                      "integrity-response-received": "1773",
                      "path-sent": "2230",
                      "path-received": "1793",
                      "path-err-sent": "465",
                      "path-err-received": "1859",
                      "path-tear-sent": "923",
                      "path-tear-received": "3924",
                      "resv-sent": "3203",
                      "resv-received": "2507",
                      "resv-err-sent": "1259",
                      "resv-err-received": "2445",
                      "resv-tear-sent": "3045",
                      "resv-tear-received": "4676",
                      "summary-refresh-sent": "365",
                      "summary-refresh-received": "2129"
                    },
                    "packets": {
                      "sent": "847",
                      "received": "3114",
                      "ietf-rsvp-extended:discontinuity-time":
                      "2015-10-24T17:11:27+02:00",
                      "ietf-rsvp-extended:out-dropped": "1841",
                      "ietf-rsvp-extended:in-dropped": "4832",
                      "ietf-rsvp-extended:out-errors": "1334",
                      "ietf-rsvp-extended:in-errors": "3900"
                    },
                    "errors": {
                      "authenticate": "3494",
                      "checksum": "4374",
                      "packet-length": "2456"
                    }
                  }
                },
                {
                  "interface": "ge0/0/0/2",
                  "statistics": {
                    "messages": {
                      "ack-sent": "1276",
                      "ack-received": "2427",
                      "bundle-sent": "4053",
                      "bundle-received": "3509",
                      "hello-sent": "3261",
                      "hello-received": "2863",
                      "integrity-challenge-sent": "4744",
                      "integrity-challenge-received": "3554",
                      "integrity-response-sent": "3155",
                      "integrity-response-received": "169",
                      "path-sent": "3853",
                      "path-received": "409",
                      "path-err-sent": "4227",
                      "path-err-received": "2830",
                      "path-tear-sent": "1742",
                      "path-tear-received": "3344",
                      "resv-sent": "3154",
                      "resv-received": "3492",
                      "resv-err-sent": "3112",
                      "resv-err-received": "3974",
                      "resv-tear-sent": "3657",
                      "resv-tear-received": "533",
                      "summary-refresh-sent": "4036",
                      "summary-refresh-received": "2123"
                    },
                    "packets": {
                      "sent": "473",
                      "received": "314",
                      "ietf-rsvp-extended:discontinuity-time":
                      "2015-10-24T17:11:27+02:00",
                      "ietf-rsvp-extended:out-dropped": "2042",
                      "ietf-rsvp-extended:in-dropped": "90",
                      "ietf-rsvp-extended:out-errors": "1210",
                      "ietf-rsvp-extended:in-errors": "1361"
                    },
                    "errors": {
                      "authenticate": "543",
                      "checksum": "2241",
                      "packet-length": "480"
                    }
                  }
                }
              ],
              "ietf-rsvp-extended:refresh-interval": 30,
              "ietf-rsvp-extended:refresh-misses": 5,
              "ietf-rsvp-extended:checksum_enabled": true,
              "ietf-rsvp-extended:patherr-state-removal": [
                null
              ]
            },
            "sessions": {
              "session-ip": [
                {
                  "destination-port": 10,
                  "protocol-id": 10,
                  "destination": "198.51.100.1",
                  "psbs": {
                    "psb": [
                      {
                        "source-port": 10,
                        "expires-in": 100
                      }
                    ]
                  },
                  "rsbs": {
                    "rsb": [
                      {
                        "source-port": 10,
                        "reservation-style":
                        "rsvp:reservation-wildcard-filter",
                        "expires-in": 100
                      }
                    ]
                  }
                }
              ]
            },
            "neighbors": {
              "neighbor": [
                {
                  "address": "192.0.2.6",
                  "epoch": 130,
                  "expiry-time": 260,
                  "graceful-restart": {
                    "enabled": true,
                    "local-restart-time": 271,
                    "local-recovery-time": 138,
                    "neighbor-restart-time": 341,
                    "neighbor-recovery-time": 342
                  },
                  "hello-status": "enabled",
                  "interface": "ge0/0/0/1",
                  "restart-count": 2,
                  "restart-time": "2015-10-24T17:11:27+02:00"
                }
              ]
            },
            "graceful-restart": {
              "enabled": true,
              "local-restart-time": 60,
              "local-recovery-time": 180,
              "neighbor-restart-time": 80,
              "neighbor-recovery-time": 200,
              "helper-mode": {
                "enabled": true
              }
            }
          }
        }
      ]
    }
  }
}
]]></artwork></figure>

</section>
<section anchor="contributors" title="Contributors">

<figure><artwork><![CDATA[

   Himanshu Shah
   Ciena

   Email: hshah@ciena.com


   Xia Chen
   Huawei Technologies

   Email: jescia.chenxia@huawei.com


   Raqib Jones
   Brocade

   Email: raqib@Brocade.com


   Bin Wen
   Comcast

   Email: Bin_Wen@cable.comcast.com

]]></artwork></figure>

</section>


  </middle>

  <back>

    <references title='Normative References'>





<reference anchor='RFC2119' target='https://www.rfc-editor.org/info/rfc2119'>
<front>
<title>Key words for use in RFCs to Indicate Requirement Levels</title>
<author fullname='S. Bradner' initials='S.' surname='Bradner'><organization/></author>
<date month='March' year='1997'/>
<abstract><t>In many standards track documents several words are used to signify the requirements in the specification.  These words are often capitalized. This document defines these words as they should be interpreted in IETF documents.  This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='2119'/>
<seriesInfo name='DOI' value='10.17487/RFC2119'/>
</reference>



<reference anchor='RFC8174' target='https://www.rfc-editor.org/info/rfc8174'>
<front>
<title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
<author fullname='B. Leiba' initials='B.' surname='Leiba'><organization/></author>
<date month='May' year='2017'/>
<abstract><t>RFC 2119 specifies common key words that may be used in protocol  specifications.  This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the  defined special meanings.</t></abstract>
</front>
<seriesInfo name='BCP' value='14'/>
<seriesInfo name='RFC' value='8174'/>
<seriesInfo name='DOI' value='10.17487/RFC8174'/>
</reference>



<reference anchor='RFC6020' target='https://www.rfc-editor.org/info/rfc6020'>
<front>
<title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
<author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'><organization/></author>
<date month='October' year='2010'/>
<abstract><t>YANG is a data modeling language used to model configuration and state data manipulated by the Network Configuration Protocol (NETCONF), NETCONF remote procedure calls, and NETCONF notifications. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6020'/>
<seriesInfo name='DOI' value='10.17487/RFC6020'/>
</reference>



<reference anchor='RFC6241' target='https://www.rfc-editor.org/info/rfc6241'>
<front>
<title>Network Configuration Protocol (NETCONF)</title>
<author fullname='R. Enns' initials='R.' role='editor' surname='Enns'><organization/></author>
<author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'><organization/></author>
<author fullname='J. Schoenwaelder' initials='J.' role='editor' surname='Schoenwaelder'><organization/></author>
<author fullname='A. Bierman' initials='A.' role='editor' surname='Bierman'><organization/></author>
<date month='June' year='2011'/>
<abstract><t>The Network Configuration Protocol (NETCONF) defined in this document provides mechanisms to install, manipulate, and delete the configuration of network devices.  It uses an Extensible Markup Language (XML)-based data encoding for the configuration data as well as the protocol messages.  The NETCONF protocol operations are realized as remote procedure calls (RPCs).  This document obsoletes RFC 4741.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6241'/>
<seriesInfo name='DOI' value='10.17487/RFC6241'/>
</reference>



<reference anchor='RFC6991' target='https://www.rfc-editor.org/info/rfc6991'>
<front>
<title>Common YANG Data Types</title>
<author fullname='J. Schoenwaelder' initials='J.' role='editor' surname='Schoenwaelder'><organization/></author>
<date month='July' year='2013'/>
<abstract><t>This document introduces a collection of common data types to be used with the YANG data modeling language.  This document obsoletes RFC 6021.</t></abstract>
</front>
<seriesInfo name='RFC' value='6991'/>
<seriesInfo name='DOI' value='10.17487/RFC6991'/>
</reference>



<reference anchor='RFC7950' target='https://www.rfc-editor.org/info/rfc7950'>
<front>
<title>The YANG 1.1 Data Modeling Language</title>
<author fullname='M. Bjorklund' initials='M.' role='editor' surname='Bjorklund'><organization/></author>
<date month='August' year='2016'/>
<abstract><t>YANG is a data modeling language used to model configuration data, state data, Remote Procedure Calls, and notifications for network management protocols.  This document describes the syntax and semantics of version 1.1 of the YANG language.  YANG version 1.1 is a maintenance release of the YANG language, addressing ambiguities and defects in the original specification.  There are a small number of backward incompatibilities from YANG version 1.  This document also specifies the YANG mappings to the Network Configuration Protocol (NETCONF).</t></abstract>
</front>
<seriesInfo name='RFC' value='7950'/>
<seriesInfo name='DOI' value='10.17487/RFC7950'/>
</reference>



<reference anchor='RFC8040' target='https://www.rfc-editor.org/info/rfc8040'>
<front>
<title>RESTCONF Protocol</title>
<author fullname='A. Bierman' initials='A.' surname='Bierman'><organization/></author>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<author fullname='K. Watsen' initials='K.' surname='Watsen'><organization/></author>
<date month='January' year='2017'/>
<abstract><t>This document describes an HTTP-based protocol that provides a programmatic interface for accessing data defined in YANG, using the datastore concepts defined in the Network Configuration Protocol (NETCONF).</t></abstract>
</front>
<seriesInfo name='RFC' value='8040'/>
<seriesInfo name='DOI' value='10.17487/RFC8040'/>
</reference>



<reference anchor='RFC8343' target='https://www.rfc-editor.org/info/rfc8343'>
<front>
<title>A YANG Data Model for Interface Management</title>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<date month='March' year='2018'/>
<abstract><t>This document defines a YANG data model for the management of network interfaces.  It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes definitions for configuration and system state (status information and counters for the collection of statistics).</t><t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t><t>This document obsoletes RFC 7223.</t></abstract>
</front>
<seriesInfo name='RFC' value='8343'/>
<seriesInfo name='DOI' value='10.17487/RFC8343'/>
</reference>



<reference anchor='RFC8349' target='https://www.rfc-editor.org/info/rfc8349'>
<front>
<title>A YANG Data Model for Routing Management (NMDA Version)</title>
<author fullname='L. Lhotka' initials='L.' surname='Lhotka'><organization/></author>
<author fullname='A. Lindem' initials='A.' surname='Lindem'><organization/></author>
<author fullname='Y. Qu' initials='Y.' surname='Qu'><organization/></author>
<date month='March' year='2018'/>
<abstract><t>This document specifies three YANG modules and one submodule. Together, they form the core routing data model that serves as a framework for configuring and managing a routing subsystem.  It is expected that these modules will be augmented by additional YANG modules defining data models for control-plane protocols, route filters, and other functions.  The core routing data model provides common building blocks for such extensions -- routes, Routing Information Bases (RIBs), and control-plane protocols.</t><t>The YANG modules in this document conform to the Network Management Datastore Architecture (NMDA).  This document obsoletes RFC 8022.</t></abstract>
</front>
<seriesInfo name='RFC' value='8349'/>
<seriesInfo name='DOI' value='10.17487/RFC8349'/>
</reference>



<reference anchor='RFC8294' target='https://www.rfc-editor.org/info/rfc8294'>
<front>
<title>Common YANG Data Types for the Routing Area</title>
<author fullname='X. Liu' initials='X.' surname='Liu'><organization/></author>
<author fullname='Y. Qu' initials='Y.' surname='Qu'><organization/></author>
<author fullname='A. Lindem' initials='A.' surname='Lindem'><organization/></author>
<author fullname='C. Hopps' initials='C.' surname='Hopps'><organization/></author>
<author fullname='L. Berger' initials='L.' surname='Berger'><organization/></author>
<date month='December' year='2017'/>
<abstract><t>This document defines a collection of common data types using the YANG data modeling language.  These derived common types are designed to be imported by other modules defined in the routing area.</t></abstract>
</front>
<seriesInfo name='RFC' value='8294'/>
<seriesInfo name='DOI' value='10.17487/RFC8294'/>
</reference>



<reference anchor='RFC8177' target='https://www.rfc-editor.org/info/rfc8177'>
<front>
<title>YANG Data Model for Key Chains</title>
<author fullname='A. Lindem' initials='A.' role='editor' surname='Lindem'><organization/></author>
<author fullname='Y. Qu' initials='Y.' surname='Qu'><organization/></author>
<author fullname='D. Yeung' initials='D.' surname='Yeung'><organization/></author>
<author fullname='I. Chen' initials='I.' surname='Chen'><organization/></author>
<author fullname='J. Zhang' initials='J.' surname='Zhang'><organization/></author>
<date month='June' year='2017'/>
<abstract><t>This document describes the key chain YANG data model.  Key chains are commonly used for routing protocol authentication and other applications requiring symmetric keys.  A key chain is a list containing one or more elements containing a Key ID, key string, send/accept lifetimes, and the associated authentication or encryption algorithm.  By properly overlapping the send and accept lifetimes of multiple key chain elements, key strings and algorithms may be gracefully updated.  By representing them in a YANG data model, key distribution can be automated.</t></abstract>
</front>
<seriesInfo name='RFC' value='8177'/>
<seriesInfo name='DOI' value='10.17487/RFC8177'/>
</reference>



<reference anchor='RFC8340' target='https://www.rfc-editor.org/info/rfc8340'>
<front>
<title>YANG Tree Diagrams</title>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<author fullname='L. Berger' initials='L.' role='editor' surname='Berger'><organization/></author>
<date month='March' year='2018'/>
<abstract><t>This document captures the current syntax used in YANG module tree diagrams.  The purpose of this document is to provide a single location for this definition.  This syntax may be updated from time to time based on the evolution of the YANG language.</t></abstract>
</front>
<seriesInfo name='BCP' value='215'/>
<seriesInfo name='RFC' value='8340'/>
<seriesInfo name='DOI' value='10.17487/RFC8340'/>
</reference>



<reference anchor='RFC8639' target='https://www.rfc-editor.org/info/rfc8639'>
<front>
<title>Subscription to YANG Notifications</title>
<author fullname='E. Voit' initials='E.' surname='Voit'><organization/></author>
<author fullname='A. Clemm' initials='A.' surname='Clemm'><organization/></author>
<author fullname='A. Gonzalez Prieto' initials='A.' surname='Gonzalez Prieto'><organization/></author>
<author fullname='E. Nilsen-Nygaard' initials='E.' surname='Nilsen-Nygaard'><organization/></author>
<author fullname='A. Tripathy' initials='A.' surname='Tripathy'><organization/></author>
<date month='September' year='2019'/>
<abstract><t>This document defines a YANG data model and associated mechanisms enabling subscriber-specific subscriptions to a publisher's event streams.  Applying these elements allows a subscriber to request and receive a continuous, customized feed of publisher-generated information.</t></abstract>
</front>
<seriesInfo name='RFC' value='8639'/>
<seriesInfo name='DOI' value='10.17487/RFC8639'/>
</reference>



<reference anchor='RFC8641' target='https://www.rfc-editor.org/info/rfc8641'>
<front>
<title>Subscription to YANG Notifications for Datastore Updates</title>
<author fullname='A. Clemm' initials='A.' surname='Clemm'><organization/></author>
<author fullname='E. Voit' initials='E.' surname='Voit'><organization/></author>
<date month='September' year='2019'/>
<abstract><t>This document describes a mechanism that allows subscriber applications to request a continuous and customized stream of updates from a YANG datastore.  Providing such visibility into updates enables new capabilities based on the remote mirroring and monitoring of configuration and operational state.</t></abstract>
</front>
<seriesInfo name='RFC' value='8641'/>
<seriesInfo name='DOI' value='10.17487/RFC8641'/>
</reference>



<reference anchor='RFC8341' target='https://www.rfc-editor.org/info/rfc8341'>
<front>
<title>Network Configuration Access Control Model</title>
<author fullname='A. Bierman' initials='A.' surname='Bierman'><organization/></author>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<date month='March' year='2018'/>
<abstract><t>The standardization of network configuration interfaces for use with the Network Configuration Protocol (NETCONF) or the RESTCONF protocol requires a structured and secure operating environment that promotes human usability and multi-vendor interoperability.  There is a need for standard mechanisms to restrict NETCONF or RESTCONF protocol access for particular users to a preconfigured subset of all available NETCONF or RESTCONF protocol operations and content.  This document defines such an access control model.</t><t>This document obsoletes RFC 6536.</t></abstract>
</front>
<seriesInfo name='STD' value='91'/>
<seriesInfo name='RFC' value='8341'/>
<seriesInfo name='DOI' value='10.17487/RFC8341'/>
</reference>



<reference anchor='RFC3688' target='https://www.rfc-editor.org/info/rfc3688'>
<front>
<title>The IETF XML Registry</title>
<author fullname='M. Mealling' initials='M.' surname='Mealling'><organization/></author>
<date month='January' year='2004'/>
<abstract><t>This document describes an IANA maintained registry for IETF standards which use Extensible Markup Language (XML) related items such as Namespaces, Document Type Declarations (DTDs), Schemas, and Resource Description Framework (RDF) Schemas.</t></abstract>
</front>
<seriesInfo name='BCP' value='81'/>
<seriesInfo name='RFC' value='3688'/>
<seriesInfo name='DOI' value='10.17487/RFC3688'/>
</reference>



<reference anchor='RFC6242' target='https://www.rfc-editor.org/info/rfc6242'>
<front>
<title>Using the NETCONF Protocol over Secure Shell (SSH)</title>
<author fullname='M. Wasserman' initials='M.' surname='Wasserman'><organization/></author>
<date month='June' year='2011'/>
<abstract><t>This document describes a method for invoking and running the Network Configuration Protocol (NETCONF) within a Secure Shell (SSH) session as an SSH subsystem.  This document obsoletes RFC 4742.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='6242'/>
<seriesInfo name='DOI' value='10.17487/RFC6242'/>
</reference>



<reference anchor='RFC8446' target='https://www.rfc-editor.org/info/rfc8446'>
<front>
<title>The Transport Layer Security (TLS) Protocol Version 1.3</title>
<author fullname='E. Rescorla' initials='E.' surname='Rescorla'><organization/></author>
<date month='August' year='2018'/>
<abstract><t>This document specifies version 1.3 of the Transport Layer Security (TLS) protocol.  TLS allows client/server applications to communicate over the Internet in a way that is designed to prevent eavesdropping, tampering, and message forgery.</t><t>This document updates RFCs 5705 and 6066, and obsoletes RFCs 5077, 5246, and 6961.  This document also specifies new requirements for TLS 1.2 implementations.</t></abstract>
</front>
<seriesInfo name='RFC' value='8446'/>
<seriesInfo name='DOI' value='10.17487/RFC8446'/>
</reference>




    </references>

    <references title='Informative References'>





<reference anchor='RFC2205' target='https://www.rfc-editor.org/info/rfc2205'>
<front>
<title>Resource ReSerVation Protocol (RSVP) -- Version 1 Functional Specification</title>
<author fullname='R. Braden' initials='R.' role='editor' surname='Braden'><organization/></author>
<author fullname='L. Zhang' initials='L.' surname='Zhang'><organization/></author>
<author fullname='S. Berson' initials='S.' surname='Berson'><organization/></author>
<author fullname='S. Herzog' initials='S.' surname='Herzog'><organization/></author>
<author fullname='S. Jamin' initials='S.' surname='Jamin'><organization/></author>
<date month='September' year='1997'/>
<abstract><t>This memo describes version 1 of RSVP, a resource reservation setup protocol designed for an integrated services Internet.  RSVP provides receiver-initiated setup of resource reservations for multicast or unicast data flows, with good scaling and robustness properties. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='2205'/>
<seriesInfo name='DOI' value='10.17487/RFC2205'/>
</reference>



<reference anchor='RFC3209' target='https://www.rfc-editor.org/info/rfc3209'>
<front>
<title>RSVP-TE: Extensions to RSVP for LSP Tunnels</title>
<author fullname='D. Awduche' initials='D.' surname='Awduche'><organization/></author>
<author fullname='L. Berger' initials='L.' surname='Berger'><organization/></author>
<author fullname='D. Gan' initials='D.' surname='Gan'><organization/></author>
<author fullname='T. Li' initials='T.' surname='Li'><organization/></author>
<author fullname='V. Srinivasan' initials='V.' surname='Srinivasan'><organization/></author>
<author fullname='G. Swallow' initials='G.' surname='Swallow'><organization/></author>
<date month='December' year='2001'/>
<abstract><t>This document describes the use of RSVP (Resource Reservation Protocol), including all the necessary extensions, to establish label-switched paths (LSPs) in MPLS (Multi-Protocol Label Switching).  Since the flow along an LSP is completely identified by the label applied at the ingress node of the path, these paths may be treated as tunnels.  A key application of LSP tunnels is traffic engineering with MPLS as specified in RFC 2702.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='3209'/>
<seriesInfo name='DOI' value='10.17487/RFC3209'/>
</reference>



<reference anchor='RFC2747' target='https://www.rfc-editor.org/info/rfc2747'>
<front>
<title>RSVP Cryptographic Authentication</title>
<author fullname='F. Baker' initials='F.' surname='Baker'><organization/></author>
<author fullname='B. Lindell' initials='B.' surname='Lindell'><organization/></author>
<author fullname='M. Talwar' initials='M.' surname='Talwar'><organization/></author>
<date month='January' year='2000'/>
<abstract><t>This document describes the format and use of RSVP's INTEGRITY object to provide hop-by-hop integrity and authentication of RSVP messages. [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='2747'/>
<seriesInfo name='DOI' value='10.17487/RFC2747'/>
</reference>



<reference anchor='RFC2961' target='https://www.rfc-editor.org/info/rfc2961'>
<front>
<title>RSVP Refresh Overhead Reduction Extensions</title>
<author fullname='L. Berger' initials='L.' surname='Berger'><organization/></author>
<author fullname='D. Gan' initials='D.' surname='Gan'><organization/></author>
<author fullname='G. Swallow' initials='G.' surname='Swallow'><organization/></author>
<author fullname='P. Pan' initials='P.' surname='Pan'><organization/></author>
<author fullname='F. Tommasi' initials='F.' surname='Tommasi'><organization/></author>
<author fullname='S. Molendini' initials='S.' surname='Molendini'><organization/></author>
<date month='April' year='2001'/>
<abstract><t>This document describes a number of mechanisms that can be used to reduce processing overhead requirements of refresh messages, eliminate the state synchronization latency incurred when an RSVP (Resource ReserVation Protocol) message is lost and, when desired, refreshing state without the transmission of whole refresh messages.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='2961'/>
<seriesInfo name='DOI' value='10.17487/RFC2961'/>
</reference>



<reference anchor='RFC3473' target='https://www.rfc-editor.org/info/rfc3473'>
<front>
<title>Generalized Multi-Protocol Label Switching (GMPLS) Signaling Resource ReserVation Protocol-Traffic Engineering (RSVP-TE) Extensions</title>
<author fullname='L. Berger' initials='L.' role='editor' surname='Berger'><organization/></author>
<date month='January' year='2003'/>
<abstract><t>This document describes extensions to Multi-Protocol Label Switching (MPLS) Resource ReserVation Protocol - Traffic Engineering (RSVP-TE) signaling required to support Generalized MPLS.  Generalized MPLS extends the MPLS control plane to encompass time-division (e.g., Synchronous Optical Network and Synchronous Digital Hierarchy, SONET/SDH), wavelength (optical lambdas) and spatial switching (e.g., incoming port or fiber to outgoing port or fiber).  This document presents a RSVP-TE specific description of the extensions.  A generic functional description can be found in separate documents.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='3473'/>
<seriesInfo name='DOI' value='10.17487/RFC3473'/>
</reference>



<reference anchor='RFC5063' target='https://www.rfc-editor.org/info/rfc5063'>
<front>
<title>Extensions to GMPLS Resource Reservation Protocol (RSVP) Graceful Restart</title>
<author fullname='A. Satyanarayana' initials='A.' role='editor' surname='Satyanarayana'><organization/></author>
<author fullname='R. Rahman' initials='R.' role='editor' surname='Rahman'><organization/></author>
<date month='October' year='2007'/>
<abstract><t>This document describes extensions to the Resource Reservation Protocol (RSVP) Graceful Restart mechanisms defined in RFC 3473.  The extensions enable the recovery of RSVP signaling state based on the Path message last sent by the node being restarted.</t><t>Previously defined Graceful Restart mechanisms, also called recovery from nodal faults, permit recovery of signaling state from adjacent nodes when the data plane has retained the associated forwarding state across a restart.  Those mechanisms do not fully support signaling state recovery on ingress nodes or recovery of all RSVP objects.</t><t>The extensions defined in this document build on the RSVP Hello extensions defined in RFC 3209, and extensions for state recovery on nodal faults defined in RFC 3473.  Using these extensions, the restarting node can recover all previously transmitted Path state, including the Explicit Route Object and the downstream (outgoing) interface identifiers.  The extensions can also be used to recover signaling state after the restart of an ingress node.</t><t>These extensions are not used to create or restore data plane state.</t><t>The extensions optionally support the use of Summary Refresh, defined in RFC 2961, to reduce the number of messages exchanged during the Recovery Phase when the restarting node has recovered signaling state locally for one or more Label Switched Paths (LSPs).  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5063'/>
<seriesInfo name='DOI' value='10.17487/RFC5063'/>
</reference>



<reference anchor='RFC5495' target='https://www.rfc-editor.org/info/rfc5495'>
<front>
<title>Description of the Resource Reservation Protocol - Traffic-Engineered (RSVP-TE) Graceful Restart Procedures</title>
<author fullname='D. Li' initials='D.' surname='Li'><organization/></author>
<author fullname='J. Gao' initials='J.' surname='Gao'><organization/></author>
<author fullname='A. Satyanarayana' initials='A.' surname='Satyanarayana'><organization/></author>
<author fullname='S. Bardalai' initials='S.' surname='Bardalai'><organization/></author>
<date month='March' year='2009'/>
<abstract><t>The Hello message for the Resource Reservation Protocol (RSVP) has been defined to establish and maintain basic signaling node adjacencies for Label Switching Routers (LSRs) participating in a Multiprotocol Label Switching (MPLS) traffic-engineered (TE) network.  The Hello message has been extended for use in Generalized MPLS (GMPLS) networks for state recovery of control channel or nodal faults.</t><t>The GMPLS protocol definitions for RSVP also allow a restarting node to learn which label it previously allocated for use on a Label Switched Path (LSP).</t><t>Further RSVP protocol extensions have been defined to enable a restarting node to recover full control plane state by exchanging RSVP messages with its upstream and downstream neighbors.</t><t>This document provides an informational clarification of the control plane procedures for a GMPLS network when there are multiple node failures, and describes how full control plane state can be recovered in different scenarios where the order in which the nodes restart is different.</t><t>This document does not define any new processes or procedures.  All protocol mechanisms are already defined in the referenced documents. This memo provides information for the Internet community.</t></abstract>
</front>
<seriesInfo name='RFC' value='5495'/>
<seriesInfo name='DOI' value='10.17487/RFC5495'/>
</reference>



<reference anchor='rfc4558' target='https://www.rfc-editor.org/info/rfc4558'>
<front>
<title>Node-ID Based Resource Reservation Protocol (RSVP) Hello: A Clarification Statement</title>
<author fullname='Z. Ali' initials='Z.' surname='Ali'><organization/></author>
<author fullname='R. Rahman' initials='R.' surname='Rahman'><organization/></author>
<author fullname='D. Prairie' initials='D.' surname='Prairie'><organization/></author>
<author fullname='D. Papadimitriou' initials='D.' surname='Papadimitriou'><organization/></author>
<date month='June' year='2006'/>
<abstract><t>Use of Node-ID based Resource Reservation Protocol (RSVP) Hello messages is implied in a number of cases, e.g., when data and control planes are separated, when TE links are unnumbered.  Furthermore, when link level failure detection is performed by some means other than exchanging RSVP Hello messages, use of a Node-ID based Hello session is optimal for detecting signaling adjacency failure for Resource reSerVation Protocol-Traffic Engineering (RSVP-TE).  Nonetheless, this implied behavior is unclear, and this document formalizes use of the Node-ID based RSVP Hello session in some scenarios.  The procedure described in this document applies to both Multi-Protocol Label Switching (MPLS) and Generalized MPLS (GMPLS) capable nodes.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4558'/>
<seriesInfo name='DOI' value='10.17487/RFC4558'/>
</reference>




    </references>



  </back>

<!-- ##markdown-source:
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

-->

</rfc>

