<?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.7.29 (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-20" 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>Individual</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="2025" month="December" day="19"/>

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

    <abstract>


<?line 56?>

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


<?line 64?>

<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.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 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='References' anchor="sec-combined-references">

    <references title='Normative References' anchor="sec-normative-references">



<reference anchor="RFC2119">
  <front>
    <title>Key words for use in RFCs to Indicate Requirement Levels</title>
    <author fullname="S. Bradner" initials="S." surname="Bradner"/>
    <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">
  <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">
  <front>
    <title>YANG - A Data Modeling Language for the Network Configuration Protocol (NETCONF)</title>
    <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
    <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">
  <front>
    <title>Network Configuration Protocol (NETCONF)</title>
    <author fullname="R. Enns" initials="R." role="editor" surname="Enns"/>
    <author fullname="M. Bjorklund" initials="M." role="editor" surname="Bjorklund"/>
    <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
    <author fullname="A. Bierman" initials="A." role="editor" surname="Bierman"/>
    <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">
  <front>
    <title>Common YANG Data Types</title>
    <author fullname="J. Schoenwaelder" initials="J." role="editor" surname="Schoenwaelder"/>
    <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">
  <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">
  <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">
  <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">
  <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">
  <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">
  <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">
  <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">
  <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">
  <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">
  <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">
  <front>
    <title>The IETF XML Registry</title>
    <author fullname="M. Mealling" initials="M." surname="Mealling"/>
    <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">
  <front>
    <title>Using the NETCONF Protocol over Secure Shell (SSH)</title>
    <author fullname="M. Wasserman" initials="M." surname="Wasserman"/>
    <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">
  <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' anchor="sec-informative-references">



<reference anchor="RFC2205">
  <front>
    <title>Resource ReSerVation Protocol (RSVP) -- Version 1 Functional Specification</title>
    <author fullname="R. Braden" initials="R." role="editor" surname="Braden"/>
    <author fullname="L. Zhang" initials="L." surname="Zhang"/>
    <author fullname="S. Berson" initials="S." surname="Berson"/>
    <author fullname="S. Herzog" initials="S." surname="Herzog"/>
    <author fullname="S. Jamin" initials="S." surname="Jamin"/>
    <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">
  <front>
    <title>RSVP-TE: Extensions to RSVP for LSP Tunnels</title>
    <author fullname="D. Awduche" initials="D." surname="Awduche"/>
    <author fullname="L. Berger" initials="L." surname="Berger"/>
    <author fullname="D. Gan" initials="D." surname="Gan"/>
    <author fullname="T. Li" initials="T." surname="Li"/>
    <author fullname="V. Srinivasan" initials="V." surname="Srinivasan"/>
    <author fullname="G. Swallow" initials="G." surname="Swallow"/>
    <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">
  <front>
    <title>RSVP Cryptographic Authentication</title>
    <author fullname="F. Baker" initials="F." surname="Baker"/>
    <author fullname="B. Lindell" initials="B." surname="Lindell"/>
    <author fullname="M. Talwar" initials="M." surname="Talwar"/>
    <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">
  <front>
    <title>RSVP Refresh Overhead Reduction Extensions</title>
    <author fullname="L. Berger" initials="L." surname="Berger"/>
    <author fullname="D. Gan" initials="D." surname="Gan"/>
    <author fullname="G. Swallow" initials="G." surname="Swallow"/>
    <author fullname="P. Pan" initials="P." surname="Pan"/>
    <author fullname="F. Tommasi" initials="F." surname="Tommasi"/>
    <author fullname="S. Molendini" initials="S." surname="Molendini"/>
    <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">
  <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"/>
    <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">
  <front>
    <title>Extensions to GMPLS Resource Reservation Protocol (RSVP) Graceful Restart</title>
    <author fullname="A. Satyanarayana" initials="A." role="editor" surname="Satyanarayana"/>
    <author fullname="R. Rahman" initials="R." role="editor" surname="Rahman"/>
    <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">
  <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">
  <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>

</references>



  </back>

<!-- ##markdown-source:
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
OdAHsVxZca0Y66JAu+p3mpriqtJ9XsYQVKrMr99tcwOid1/uDWyc5febOBmn
N2r0HYJXpBf+o5OFSr7MndVV4nhevcwjr/4Sd2P/+jRUH7+sZfcg2pel7XNb
2qyh+bLS/WetdNbw/k4XPosKv/V10LeZVhthfUdt747t27JD675svrF2bjLv
cVM2pcLTrpom/zp5b/SK11w/7C7t5Zdku/bxdGO4vpc3aWpuux9wc3Z5O7b/
QmzXHdv8amz9smx+6/YKl2Wrvi6/NbvkMLRPreP6bAWRLEva7djqQ+WabC27
onGbNr54/MsoP9e7pn+hy7V/kSutgy/3Sn+5V/qXuFda2ZW/XDD95YLpLxdM
/44vmFbO09Y1jobC4z6SN85vyssuw0xjMce9mLJ7PA5Jns1XPIa3+9pZYEaR
Ya3tbqezvzvodiunsh6/eacj72tok/u/I9VYNJo4DwXLMz/PzbMrXTepOSpr
e6lm3e51OruDSpedfftRgw3kn8YgmrSU6WjMSS/baTbWLm98tI6qTaHZTeOY
2tkLkTB8ZN/d9nioahvUxmPS63YdnOjsUBkyrDdE+drVrRR42ikMc4/WTVuL
FZ307LdrxwiVVw6KXGPQGVK/c8GM4syVZvp4I2mKM27wWasY4yB16WXZkO7J
5jYU7mUajf8Jr5LRLcaBicNzR9SDaaNy8a5EQYhIPadUvZyUlNFCWy9A52PA
tPliNELfIFj3jDw/GFZXjrre1LLx/s3fLl0ZE24TXEGaNBMl5ajMoo+aaB/h
1YyjBRpkQ2p6bA3Nb2YEwocMgRURJuVOu5zYa5UJqgFdLNinYg1mZaMJecaK
2qko2mV5daTtVLd3VWz9/LoUqaWcqMTDpUytUg47T5a5EsrWEeE95a6RAUXd
bYPJChaFGTzXBCfnaeSqmFFe5fZ7UflyGl3hTo+yfR8bV7RV14SaAPLqvKhm
rlnnpKhkozFUfs9hWjNBudPrgzK801jxMqQlhcBSWxsXtwXLnyK3RiF6jEp2
4PdRa0sYx9JHZLRCV1nBOAF8pCUZ4fNNjJUnkk8xprneHh79d6VDG3pq5aZ9
qhuqhmijpCAQFcoDlventnUq+kg0n9EZyjS6rdAcOB/D14n2eiJVwC1Jb6Zs
zA8ChW86d6AucS6cGn9Nl11nu/cTgiIMTbALDMqb47Ozw++P/3HykptAYFj+
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
/T/u1Dv24TMBAA==

-->

</rfc>

