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


<!DOCTYPE rfc  [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">

]>

<?rfc comments="yes"?>

<rfc ipr="trust200902" docName="draft-ietf-teas-yang-rsvp-19" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <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>Cisco Systems Inc</organization>
      <address>
        <email>tsaad.net@gmail.com</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="2024" month="February" day="28"/>

    
    <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"><name>Introduction</name>

<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"><name>Requirements Language</name>

<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"><name>Prefixes in Data Node Names</name>

<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"><name>Model Tree Diagram</name>

<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"><name>Model Overview</name>

<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"><name>Module(s) Relationship</name>

<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"><name>Core Features</name>

<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"><name>Optional Features</name>

<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"><name>Data Model Structure</name>

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

<ul empty="true"><li>
  <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>
</li></ul>

<t>'interfaces':</t>

<ul empty="true"><li>
  <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>
</li></ul>

<t>'neighbors' :</t>

<ul empty="true"><li>
  <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>
</li></ul>

<t>'sessions':</t>

<ul empty="true"><li>
  <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>
</li></ul>

<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"><name>Model Notifications</name>

<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"><name>RSVP Base YANG Model</name>

<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"><name>Tree Diagram</name>

<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
       |     |  +--ro 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"><name>YANG Module</name>

<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 title="RSVP YANG module" anchor="fig-rsvp-mod"><artwork><![CDATA[
<CODE BEGINS> file "ietf-rsvp@2024-02-28.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 2024-02-28 {
    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 intf-attributes {
    description
      "Top level grouping for RSVP interface properties.";
    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";
    }
    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.";
      }
    }
    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;
        description
          "An authentication key string.";
        reference
          "RFC2747: RSVP Cryptographic Authentication";
      }
      leaf crypto-algorithm {
        type identityref {
          base key-chain:crypto-algorithm;
        }
        description
          "Cryptographic algorithm associated with key.";
      }
    }
    container statistics {
      config false;
      description
        "RSVP statistics container.";
      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.";
        }
      }
      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.";
        }
      }
      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.";
        }
      }
    }
  }

  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.";
          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;
            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.";
              }
            }
            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";
                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;
                }
                description
                  "RSVP reservation style.";
              }
              leaf expires-in {
                type uint32;
                units "seconds";
                description
                  "Time to expiry (in seconds).";
              }
            }
          }
        }
      }
      container neighbors {
        description
          "RSVP neighbors container";
        list neighbor {
          key "address";
          description
            "List of RSVP neighbors";
          leaf address {
            type inet:ip-address;
            description
              "Address of the RSVP neighbor.";
          }
          leaf epoch {
            type uint32;
            description
              "Neighbor epoch.";
            reference "RFC2961 and RFC5063";
          }
          leaf expiry-time {
            type uint32;
            units "seconds";
            description
              "Neighbor expiry time after which the neighbor state is
               purged if no states associated with it.";
          }
          container graceful-restart {
            description
              "Graceful restart information.";
            leaf neighbor-restart-time {
              type uint32;
              units "seconds";
              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";
              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 {
              config false;
              description
                "Helper mode information.";
              leaf neighbor-restart-time-remaining {
                type uint32;
                units "seconds";
                description
                  "Number of seconds remaining for neighbor to send
                   Hello message after restart.";
                reference "RFC5063";
              }
              leaf neighbor-recovery-time-remaining {
                type uint32;
                units "seconds";
                description
                  "Number of seconds remaining for neighbor to
                   refresh.";
                reference "RFC5063";
              }
            }
            // helper-mode
          }
          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";
          }
        }
      }
      container graceful-restart {
        description
          "Graceful restart local information.";
        leaf enabled {
          type boolean;
          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";
          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";
          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;
            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 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"><name>RSVP Extended YANG Model</name>

<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"><name>Tree Diagram</name>

<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: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"><name>YANG Module</name>

<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@2024-02-28.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.net@gmail.com>

     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 2024-02-28 {
    description
      "Initial version.";
    reference
      "RFCXXXX: A YANG Data Model for Resource Reservation Protocol
       (RSVP)";
  }

  grouping authentication-extended {
    description
      "Configuration parameters relating to RSVP authentication.";
    leaf lifetime {
      type uint32 {
        range "30..86400";
      }
      units "seconds";
      description
        "Life time for each security association.";
      reference
        "RFC2747: RSVP Cryptographic Authentication";
    }
    leaf window-size {
      type uint32 {
        range "1..64";
      }
      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";
      }
      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";
      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";
      }
      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";
      description
        "Set interval between successive refreshes";
      reference "RFC2205";
    }
    leaf refresh-misses {
      type uint32;
      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";
      }
      description
        "Configure maximum size (bytes) of a single RSVP Bundle
         message.";
      reference "RFC2961";
    }
    leaf ack-hold-time {
      type uint32;
      units "milliseconds";
      description
        "Configure hold time in milliseconds for sending RSVP ACK
         message(s).";
      reference "RFC2961";
    }
    leaf ack-max-size {
      type uint32;
      description
        "Configure max size of a single RSVP ACK message.";
      reference "RFC2961";
    }
    leaf ack-retransmit-time {
      type uint32;
      units "milliseconds";
      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";
      }
      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 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"><name>IANA Considerations</name>

<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"><name>Security Considerations</name>

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

<ul empty="true"><li>
  <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>
</li></ul>

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

<ul empty="true"><li>
  <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>
</li></ul>

<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"><name>Acknowledgement</name>

<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,
Xia Chen, Bin Wen, and Raqib Jones for reviewing and providing valuable feedback on this document.</t>

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

<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"><name>Contributors</name>

<figure><artwork><![CDATA[
   Himanshu Shah
   Ciena

   Email: hshah@ciena.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'/>
    <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'/>
    <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'/>
    <author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'/>
    <author fullname='K. Watsen' initials='K.' surname='Watsen'/>
    <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'/>
    <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'/>
    <author fullname='A. Lindem' initials='A.' surname='Lindem'/>
    <author fullname='Y. Qu' initials='Y.' surname='Qu'/>
    <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'/>
    <author fullname='Y. Qu' initials='Y.' surname='Qu'/>
    <author fullname='A. Lindem' initials='A.' surname='Lindem'/>
    <author fullname='C. Hopps' initials='C.' surname='Hopps'/>
    <author fullname='L. Berger' initials='L.' surname='Berger'/>
    <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'/>
    <author fullname='Y. Qu' initials='Y.' surname='Qu'/>
    <author fullname='D. Yeung' initials='D.' surname='Yeung'/>
    <author fullname='I. Chen' initials='I.' surname='Chen'/>
    <author fullname='J. Zhang' initials='J.' surname='Zhang'/>
    <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'/>
    <author fullname='L. Berger' initials='L.' role='editor' surname='Berger'/>
    <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'/>
    <author fullname='A. Clemm' initials='A.' surname='Clemm'/>
    <author fullname='A. Gonzalez Prieto' initials='A.' surname='Gonzalez Prieto'/>
    <author fullname='E. Nilsen-Nygaard' initials='E.' surname='Nilsen-Nygaard'/>
    <author fullname='A. Tripathy' initials='A.' surname='Tripathy'/>
    <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'/>
    <author fullname='E. Voit' initials='E.' surname='Voit'/>
    <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'/>
    <author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'/>
    <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'/>
    <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'/>
    <author fullname='J. Gao' initials='J.' surname='Gao'/>
    <author fullname='A. Satyanarayana' initials='A.' surname='Satyanarayana'/>
    <author fullname='S. Bardalai' initials='S.' surname='Bardalai'/>
    <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'/>
    <author fullname='R. Rahman' initials='R.' surname='Rahman'/>
    <author fullname='D. Prairie' initials='D.' surname='Prairie'/>
    <author fullname='D. Papadimitriou' initials='D.' surname='Papadimitriou'/>
    <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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
cFrAl69jfI0J92Xd/wNlyHv94zMBAA==

-->

</rfc>

