<?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-te-39" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true">
  <front>
    <title abbrev="TE YANG Data Model">A YANG Data Model for Traffic Engineering Tunnels, Label Switched Paths, and Interfaces</title>

    <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>Alef Edge</organization>
      <address>
        <email>xufeng.liu.ietf@gmail.com</email>
      </address>
    </author>
    <author initials="V. P." surname="Beeram" fullname="Vishnu Pavan Beeram">
      <organization>Juniper Networks</organization>
      <address>
        <email>vbeeram@juniper.net</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="October" day="17"/>

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

    <abstract>


<?line 61?>

<t>This document defines a YANG data model for the provisioning and management of
Traffic Engineering (TE) tunnels, Label Switched Paths (LSPs), and interfaces.
The model covers data that is independent of any technology or dataplane encapsulation
and is divided into two YANG modules that cover device-specific, and device independent
data.</t>

<t>This model covers data for configuration, operational state, remote procedural
calls, and event notifications.</t>



    </abstract>



  </front>

  <middle>


<?line 72?>

<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 describes a YANG data model for Traffic Engineering (TE) tunnels,
Label Switched Paths (LSPs), and interfaces. The data model is divided into two
YANG modules. The 'ietf-te' module includes data that is generic and
device independent, while the 'ietf-te-device' module includes data that is
device-specific.</t>

<t>The document describes a high-level relationship between the modules defined in
this document, as well as other external protocol YANG modules.  The TE generic
YANG data model does not include any data specific to a signaling protocol.  It
is expected other data plane technology models will augment the TE generic
YANG data model.</t>

<t>Also, it is expected that other YANG modules that model TE signaling protocols,
such as RSVP-TE (<xref target="RFC3209"/>, <xref target="RFC3473"/>), or Segment-Routing TE (SR-TE) 
<xref target="RFC9256"/> will augment the generic TE YANG  module.</t>

</section>
<section anchor="terms-and-conventions"><name>Terms and Conventions</name>

<section anchor="terminology"><name>Terminology</name>

<t>The following terms are defined in <xref target="RFC6241"/> and are used in this specification:</t>

<t><list style="symbols">
  <t>client</t>
  <t>configuration data</t>
  <t>state data</t>
</list></t>

<t>This document also makes use of the following terminology introduced in the
YANG Data Modeling Language <xref target="RFC7950"/>:</t>

<t><list style="symbols">
  <t>augment</t>
  <t>data model</t>
  <t>data node</t>
</list></t>

</section>
<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>yang</c>
      <c>ietf-yang-types</c>
      <c><xref target="RFC6991"/></c>
      <c>inet</c>
      <c>ietf-inet-types</c>
      <c><xref target="RFC6991"/></c>
      <c>rt-types</c>
      <c>ietf-routing-types</c>
      <c><xref target="RFC8294"/></c>
      <c>te-types</c>
      <c>ietf-te-types</c>
      <c><xref target="I-D.draft-ietf-teas-rfc8776-update"/></c>
      <c>te-packet-types</c>
      <c>ietf-te-packet-types</c>
      <c><xref target="I-D.draft-ietf-teas-rfc8776-update"/></c>
      <c>te</c>
      <c>ietf-te</c>
      <c>this document</c>
      <c>te-dev</c>
      <c>ietf-te-device</c>
      <c>this document</c>
</texttable>

</section>
<section anchor="model-tree-diagrams"><name>Model Tree Diagrams</name>

<t>The tree diagrams extracted from the modules defined in this document are given in
subsequent sections as per the syntax defined in <xref target="RFC8340"/>.</t>

</section>
</section>
<section anchor="design-considerations"><name>Design Considerations</name>

<t>This document describes a generic TE YANG data model that is independent of
any dataplane technology.  One of the design objectives is to allow specific
data plane technology models to reuse the TE generic data model and possibly
augment it with technology specific data.</t>

<t>The elements of the generic TE YANG data model, including TE Tunnels, LSPs, and
interfaces have leafs that identify the technology layer where they reside.
For example, the LSP encoding type can identify the technology associated with a
TE Tunnel or LSP.</t>

<t>Also, the generic TE YANG data model does not cover signaling protocol data.
The signaling protocols used to instantiate TE LSPs are outside the scope of this
document and expected to be covered by augmentations defined in other documents.</t>

<t>The following other design considerations are taken into account with respect to data
organization:</t>

<t><list style="symbols">
  <t>The device independent TE data is defined in the 'ietf-te' module, and
can be used to manage data off a device, such as a TE controller. When the
model is used to manage a specific device, the model contains the TE Tunnels
originating from the specific device.  When the model is used to manage a TE
controller, the 'tunnel' list contains all TE Tunnels and TE tunnel segments
originating from devices that the TE controller manages.</t>
  <t>The device-specific TE data is defined in the 'ietf-te-device' module.</t>
  <t>Minimal elements in the model are designated as "mandatory" to
allow freedom to vendors to adapt the data model to their specific product
implementation.</t>
  <t>Suitable defaults are specified for all configurable elements.</t>
  <t>Where TE functions or features might be optional within the
deployed TE network, the model declares them as optional.</t>
</list></t>

<section anchor="state-data-organization"><name>State Data Organization</name>

<t>The Network Management Datastore Architecture (NMDA) <xref target="RFC8342"/> addresses
modeling state data for ephemeral objects.  This document adopts the NMDA model
for configuration and state data representation as per IETF guidelines for new
IETF YANG data models.</t>

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

<t>The data models defined in this document cover the core TE features that are
commonly supported by different vendor implementations. The support of extended
or vendor specific TE features is expected to either be in augmentations, or
deviations to this model that are defined in separate documents.</t>

<section anchor="module-relationship"><name>Module Relationship</name>

<t>The generic TE YANG data model defined in the 'ietf-te' module covers the
building blocks that are device independent and agnostic of any specific
technology or control plane instances. The TE device YANG data model defined in
the 'ietf-te-device' module augments the 'ietf-te' module and covers data
that is specific to a device --  for example, attributes of TE interfaces, or
TE timers that are local to a TE node.</t>

<t>The TE data models for specific instances of data plane technology and
signaling protocols are outside the scope of this document.  They could be
defined in separate YANG modules that augment the generic TE YANG data model.</t>

<figure title="Relationship of TE modules with signaling protocol modules" anchor="figctrl"><artwork><![CDATA[
     TE generic     +---------+
     module         | ietf-te |o-------------+
                    +---------+               \
                        o  o                   \
                        |   \                   \
                        |    \ TE device module  \
                        |     +----------------+  \
                        |     | ietf-te-device |   \
                        |     +----------------+    \
                        |        o                   \
                        |        |                    \
                        |        |                     \
                    +---------------+          +---------------+
     RSVP-TE module | ietf-rsvp-te^ |o         | ietf-te-mpls^ |
                    +---------------+ \        +---------------+
                        |              \
                        |               \
                        |                \
                        |                 \
                        |                  \
                        o                +-------------------+
                    +------------+       | ietf-rsvp-otn-te^ |
     RSVP module    | ietf-rsvp^ |       +-------------------+
                    +------------+         RSVP-TE with OTN
                                              extensions

                   X---oY indicates that module X augments module Y
                   ^ indicates a module defined in other documents

]]></artwork></figure>

</section>
</section>
<section anchor="te-yang-model"><name>TE YANG Model</name>

<t>The generic TE YANG data model defined in the 'ietf-te' module supports the management and
operation of a TE network. This includes creating, modifying, and retrieving
information about TE Tunnels, LSPs, and interfaces and their associated
attributes (e.g.  Administrative-Groups, SRLGs, etc.).</t>

<t>A full tree diagram of the TE YANG data model is shown in <xref target="AppendixB"/>.</t>

<section anchor="module-structure"><name>Module Structure</name>

<t>The 'te' container is the top level container in the 'ietf-te' module. The
presence of the 'te' container enables TE function system-wide.  Further
descriptions of containers that exist under the 'te' top level container are
provided in the following sections.</t>

<t>The three containers grouped under the 'te'
container as shown in <xref target="fig-highlevel"/> and described below.</t>

<t>globals:</t>

<ul empty="true"><li>
  <t>The 'globals' container maintains the set of global TE attributes that can be
applicable to TE Tunnels and interfaces. Refer to <xref target="TeGlobals"/> for further details.</t>
</li></ul>

<t>tunnels:</t>

<ul empty="true"><li>
  <t>The 'tunnels' container includes the list of TE Tunnels that are instantiated.
Refer to <xref target="TE_TUNNELS"/> for further details on the properties of a TE Tunnel.</t>
</li></ul>

<t>lsps:</t>

<ul empty="true"><li>
  <t>The 'lsps' container includes the list of TE LSPs that are instantiated for
TE Tunnels. Refer to <xref target="TE_LSPS"/> for further details on the properties of a TE LSP.</t>
</li></ul>

<t>The model also contains two Remote Procedure Calls (RPCs) as shown
in <xref target="AppendixB"/> and described below.</t>

<t>tunnels-path-compute:</t>

<ul empty="true"><li>
  <t>An RPC to request path computation for a specific TE Tunnel.
The RPC allows requesting path computation using atomic and stateless operation.
A tunnel may also be configured in 'compute-only' mode to provide stateful path updates
- see <xref target="TE_TUNNELS"/> for further details.</t>
</li></ul>

<t>tunnels-action:</t>

<ul empty="true"><li>
  <t>An RPC to request a specific action (e.g. reoptimize, or tear-and-setup) to be taken
on a specific tunnel or all tunnels.</t>
</li></ul>

<figure title="TE Tunnel model high-level YANG tree view" anchor="fig-highlevel"><artwork><![CDATA[
module: ietf-te
  +--rw te!
     +--rw globals
     |     ...
     +--rw tunnels
     |     ...
     +--ro lsps
           ...

  rpcs:
    +---x tunnels-path-compute
    |  +---w input
    |  |     ...
    |  +--ro output
    |        ...
    +---x tunnels-actions
       +---w input
       |     ...
       +--ro output
             ...

]]></artwork></figure>

<section anchor="TeGlobals"><name>TE Globals</name>

<t>The 'globals' container covers properties that control a TE feature's
behavior system-wide, and its respective state as shown in <xref target="fig-globals"/>
and described in the text that follows.</t>

<figure title="TE globals YANG subtree high-level structure" anchor="fig-globals"><artwork><![CDATA[
     +--rw globals
     |  +--rw named-admin-groups
     |  |  +--rw named-admin-group* [name]
     |  |        ...
     |  +--rw named-srlgs
     |  |  +--rw named-srlg* [name]
     |  |        ...
     |  +--rw named-path-constraints
     |     +--rw named-path-constraint* [name]
]]></artwork></figure>

<t>named-admin-groups:</t>

<ul empty="true"><li>
  <t>A YANG container for the list of named (extended) administrative groups that may be applied
to TE links.</t>
</li></ul>

<t>named-srlgs:</t>

<ul empty="true"><li>
  <t>A YANG container for the list of named Shared Risk Link Groups (SRLGs) that may be
applied to TE links.</t>
</li></ul>

<t>named-path-constraints:</t>

<ul empty="true"><li>
  <t>A YANG container for a list of named path constraints. Each named path constraint is
composed of a set of constraints that can be applied during path computation.
A named path constraint can be applied to multiple TE Tunnels. Path constraints may also
be specified directly under the TE Tunnel. The path constraints specified under
the TE Tunnel take precedence over the path constraints 
derived from the referenced named path constraint. A named path constraint entry can be
formed of the path constraints shown in <xref target="fig-named-constraints"/>:</t>
</li></ul>

<figure title="Named path constraints YANG subtree" anchor="fig-named-constraints"><artwork><![CDATA[
     |  +--rw named-path-constraints
     |     +--rw named-path-constraint* [name]
     |             {te-types:named-path-constraints}?
     |        +--rw name                             string
     |        +--rw te-bandwidth
     |        |     ...
     |        +--rw link-protection?                 identityref
     |        +--rw setup-priority?                  uint8
     |        +--rw hold-priority?                   uint8
     |        +--rw signaling-type?                  identityref
     |        +--rw path-metric-bounds
     |        |     ...
     |        +--rw path-affinities-values
     |        |     ...
     |        +--rw path-affinity-names
     |        |     ...
     |        +--rw path-srlgs-lists
     |        |     ...
     |        +--rw path-srlgs-names
     |        |     ...
     |        +--rw disjointness?
     |        |       te-path-disjointness
     |        +--rw explicit-route-objects
     |        |     ...
     |        +--rw path-in-segment!
     |        |     ...
     |        +--rw path-out-segment!
     |              ...

]]></artwork></figure>

<ul empty="true"><li>

  <t><list style="symbols">
    <t>name: A YANG leaf that holds the named path constraint entry. This is unique in the list and used as a key.</t>
    <t>te-bandwidth: A YANG container that holds the technology agnostic TE bandwidth constraint.</t>
    <t>link-protection: A YANG leaf that holds the link protection type constraint required for the links to be included in the computed path.</t>
    <t>setup/hold priority: YANG leafs that hold the LSP setup and hold admission priority as defined in <xref target="RFC3209"/>.</t>
    <t>signaling-type: A YANG leaf that holds the LSP setup type, such as RSVP-TE or SR.</t>
    <t>path-metric-bounds: A YANG container that holds the set of metric bounds applicable on the
computed TE tunnel path.</t>
    <t>path-affinities-values: A YANG container that holds the set of affinity values and
mask to be used during path computation.</t>
    <t>path-affinity-names: A YANG container that holds the set of named affinity constraints and
corresponding inclusion or exclusion instructions for each to be used during path computation.</t>
    <t>path-srlgs-lists: A YANG container that holds the set of SRLG values and
corresponding inclusion or exclusion instructions to be used during path computation.</t>
    <t>path-srlgs-names: A YANG container that holds the set of named SRLG constraints and
corresponding inclusion or exclusion instructions for each to be used during path computation.</t>
    <t>disjointness: The level of resource disjointness constraint that the secondary path
of a TE tunnel has to adhere to.</t>
    <t>explicit-route-objects: A YANG container that holds path constraints in the form of route entries present in the following two lists:
    <list style="symbols">
        <t>'route-object-exclude-always': a list of route entries that are always excluded from the path computation. The exclusion of a route entry in this list during path computation is not order sensitive. The route entries in this list have a 'strict' hop-type as described in <xref target="RFC4874"/> section 3.1.</t>
        <t>'route-object-include-exclude': a list of route entries to include or exclude for the path computation. For route entries in this list that are to be excluded, the hop-type is only allowed to be 'strict' as described in <xref target="RFC4874"/> section 3.1.<br />
The constraint type (include or exclude) is specified with each route entry. The path computation considers route entry constraints in the order they appear in this list. Once a route entry constraint is consumed from this list, it is not considered any further in the computation of the TE path.<br />
The 'route-object-include-exclude' is used to configure constraints on which route objects (e.g., nodes, links) are included or excluded in the path computation.<br />
The interpretation of an empty 'route-object-include-exclude' list depends on the TE Tunnel (end-to-end or Tunnel Segment) and on the specific path, according to the following rules:<br />
        <list style="numbers" type="1">
            <t>An empty 'route-object-include-exclude' list for the primary path of an end-to-end TE Tunnel indicates that there are no route objects to be included or excluded in the path computation.</t>
            <t>An empty 'route-object-include-exclude' list for the primary path of a TE Tunnel Segment indicates that no primary LSP is required for that TE Tunnel Segement.</t>
            <t>An empty 'route-object-include-exclude' list for a reverse path means it always follows the forward path (i.e., the TE Tunnel is co-routed). When the 'route-object-include-exclude' list is not empty, the reverse path is routed independently of the forward path.</t>
            <t>An empty 'route-object-include-exclude' list for the secondary (forward) path of a TE Tunnel segment indicates that the secondary path has the same endpoints as the primary path.</t>
          </list></t>
      </list></t>
    <t>path-in-segment: A YANG container that contains a list of label restrictions
that have to be taken into considerations when stitching to another tunnel
segment such as at a domain boundary.  The TE tunnel segment in this case
is being stitched to the upstream TE tunnel segment.</t>
    <t>path-out-segment: A YANG container that contains a list of label restrictions
that have to be taken into considerations when stitching to another tunnel
segment such as at a domain boundary.  The TE tunnel segment in this case
is being stitched to the downstream TE tunnel segment.</t>
  </list></t>
</li></ul>

</section>
<section anchor="TE_TUNNELS"><name>TE Tunnels</name>

<t>The 'tunnels' container holds the list of TE Tunnels that are provisioned on
ingress Label Egress Router (LER) devices in the network as shown in <xref target="fig-te-tunnel"/>.</t>

<figure title="TE Tunnel YANG subtree structure" anchor="fig-te-tunnel"><artwork><![CDATA[
module: ietf-te
  +--rw te
     +--rw tunnels
        +--rw tunnel* [name]
           +--rw name                            string
           +--rw alias?                          string
           +--rw identifier?                     uint32
           +--rw color?                          uint32
           +--rw description?                    string
           +--rw admin-state?                    identityref
           +--ro operational-state?              identityref
           +--rw encoding?                       identityref
           +--rw switching-type?                 identityref
           +--rw source
           |     ...
           +--rw destination
           |     ...
           +--rw bidirectional?                  boolean
           +--rw controller
           |     ...
           +--rw reoptimize-timer?               uint16
           +--rw association-objects
           |     ...
           +--rw protection
           |     ...
           +--rw restoration
           |     ...
           +--rw network-id?                     nw:network-id
           +--rw te-topology-identifier
           |     ...
           +--rw te-bandwidth
           |     ...
           +--rw link-protection?                identityref
           +--rw setup-priority?                 uint8
           +--rw hold-priority?                  uint8
           +--rw signaling-type?                 identityref
           +--rw hierarchy
           |     ...
           +--rw primary-paths
           |     ...
           +--rw secondary-paths
           |     ...
           +--rw secondary-reverse-paths
           |     ...
           +---x tunnel-action
           |     ...
           +---x protection-external-commands
                 ...

]]></artwork></figure>

<t>When the model is used to manage a specific device, the 'tunnel' list contains
the TE Tunnels originating from the specific device. When the model is used to
manage a TE controller, the 'tunnel' list contains all TE Tunnels and TE
tunnel segments originating from devices that the TE controller manages.</t>

<t>The TE Tunnel model allows the configuration and management of the following TE
tunnel objects:</t>

<t>TE Tunnel:</t>

<ul empty="true"><li>
  <t>A YANG container of one or more TE LSPs established between the source and destination
TE Tunnel termination points.</t>
</li></ul>

<t>TE Path:</t>

<ul empty="true"><li>
  <t>An engineered path that once instantiated in the forwarding plane can be used
to forward traffic from the source to the destination TE Tunnel termination points.</t>
</li></ul>

<t>TE LSP:</t>

<ul empty="true"><li>
  <t>A TE LSP is a connection-oriented service established over a TE Path
and that allows the delivery of traffic between the TE Tunnel source and
destination termination points.</t>
</li></ul>

<t>TE Tunnel Segment:</t>

<ul empty="true"><li>
  <t>A segment of a TE Tunnel that is stitched with other segments in order to provision an end-to-end tunnel.</t>
</li></ul>

<t>The TE Tunnel has a number of attributes that are set directly under the
tunnel (as shown in <xref target="fig-te-tunnel"/>). The main attributes of a TE Tunnel are described below:</t>

<t>name:</t>

<ul empty="true"><li>
  <t>A YANG leaf that holds the name of a TE Tunnel.  The name of the
TE Tunnel uniquely identifies the tunnel within the TE tunnel list.  The name
of the TE Tunnel can be formatted as a Uniform Resource Indicator (URI) by
including the namespace to ensure uniqueness of the name among all the TE
Tunnels present on devices and controllers. The configured TE Tunnels can
be reported with the name of the device embedded within the TE Tunnel name.
For TE Tunnels initiated by the controller, the controller is responsible
to ensure that TE Tunnel names are unique.</t>
</li></ul>

<t>alias:</t>

<ul empty="true"><li>
  <t>A YANG leaf that holds an alternate name to the TE tunnel. Unlike the TE tunnel
name, the alias can be modified at any time during the lifetime of the TE tunnel.</t>
</li></ul>

<t>identifier:</t>

<ul empty="true"><li>
  <t>A YANG leaf that holds an identifier of the tunnel. This identifier is unique among tunnels
originated from the same ingress device.</t>
</li></ul>

<t>color:</t>

<ul empty="true"><li>
  <t>A YANG leaf that holds the color associated with the TE tunnel. The color is used
to map or steer services that carry matching color onto the TE tunnel as described in
<xref target="RFC9012"/>.</t>
</li></ul>

<t>admin-state:</t>

<ul empty="true"><li>
  <t>A YANG leaf that holds the tunnel administrative state.</t>
</li></ul>

<t>operational-state:</t>

<ul empty="true"><li>
  <t>A YANG leaf that holds the tunnel operational state.</t>
</li></ul>

<t>encoding/switching:</t>

<ul empty="true"><li>
  <t>The 'encoding' and 'switching-type' are YANG leafs that define the specific
technology in which the tunnel operates in as described in <xref target="RFC3945"/>.</t>
</li></ul>

<t>source/destination:</t>

<ul empty="true"><li>
  <t>YANG containers that hold the tunnel source and destination node endpoint identities, including:</t>
</li></ul>

<ul empty="true"><li>
  <t><list style="symbols">
    <t>te-node-id:  A YANG leaf that holds the TE node identifier (as defined in <xref target="I-D.draft-ietf-teas-rfc8776-update"/>) of the source
 or destination of the TE Tunnel.</t>
    <t>node-id: A YANG leaf that holds the node identifier (as defined in <xref target="RFC8345"/>) of the source or
 destination of the TE Tunnel.</t>
    <t>tunnel-tp-id: A YANG leaf that holds the identifier of the source or destination of the TE Tunnel
Termination Points (TTPs) as defined in <xref target="RFC8795"/>. The TTP identifiers are optional
on nodes that have a single TTP per node. For example, TTP identifiers are optional for packet
(IP/MPLS) routers.</t>
  </list></t>
</li></ul>

<t>bidirectional:</t>

<ul empty="true"><li>
  <t>A YANG leaf that when present indicates the LSP of a TE Tunnel is bidirectional
as defined in <xref target="rfc3473"/>.</t>
</li></ul>

<t>controller:</t>

<ul empty="true"><li>
  <t>A YANG container that holds tunnel data relevant to an optional external TE controller that
may initiate or control a tunnel. This target node may be augmented by external modules, for example, to add data for Path Computation Element Protocol (PCEP) initiated and/or
delegated tunnels.</t>
</li></ul>

<t>reoptimize-timer:</t>

<ul empty="true"><li>
  <t>A YANG leaf to set the interval period for tunnel reoptimization.</t>
</li></ul>

<t>association-objects:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the set of associations of the TE Tunnel to other
TE Tunnels. Associations at the TE Tunnel level apply to all paths of the TE
Tunnel. The TE tunnel associations can be overridden by associations
configured directly under the TE Tunnel path.</t>
</li></ul>

<t>protection:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the TE Tunnel protection properties.</t>
</li></ul>

<t>restoration:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the TE Tunnel restoration properties.</t>
</li></ul>

<t>te-topology-identifier:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the topology identifier associated with the topology where paths for the TE tunnel are computed as defined in <xref target="RFC8795"/>.</t>
</li></ul>

<t>network-id:</t>

<ul empty="true"><li>
  <t>A YANG leaf that can optionally be used to identify the network topology where paths for the TE tunnel are computed as defined in <xref target="RFC8345"/>.</t>
</li></ul>

<t>hierarchy:</t>

<ul empty="true"><li>
  <t>A YANG container that holds hierarchy related properties of the TE Tunnel. A TE LSP
  can be set up in MPLS or Generalized MPLS (GMPLS) networks to be used as
  a TE link to carry traffic in other (client) networks <xref target="RFC6107"/>.  In this
  case, the model introduces the TE Tunnel hierarchical link endpoint parameters
  to identify the specific link in the client layer that the underlying TE Tunnel is
  associated with. The hierarchy container includes the following:</t>
</li></ul>

<ul empty="true"><li>

  <t><list style="symbols">
    <t>dependency-tunnels: A hierarchical set of TE Tunnels either provisioned or
to be provisioned in the immediate lower layer, upon which the
current TE Tunnel relies for multi-layer path computation. A dependency TE
Tunnel is provisioned if it has been selected by path computation to support
at least one client-layer TE Tunnel. When a dependency TE Tunnel is
provisioned, it makes the TE link operational in the client layer's network
topology, enabling the provisioning of TE Tunnels in the client layer.</t>
  </list></t>
</li></ul>

<ul empty="true"><li>

  <t><list style="symbols">
    <t>hierarchical-link: A YANG container that holds the identity of the
hierarchical link (in the client layer) that is supported by this TE Tunnel.
The endpoints of the hierarchical link are defined by TE tunnel source and
destination node endpoints. The hierarchical link can be identified by its source
and destination link termination point identifiers.</t>
  </list></t>
</li></ul>

<t>primary-paths:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the list of primary paths.
A primary path is identified by 'name'. A primary path is selected from the list
to instantiate a primary forwarding LSP for the tunnel.  The list of primary
paths is visited by order of preference. A primary path has the following
attributes:</t>
</li></ul>

<ul empty="true"><li>

  <t><list style="symbols">
    <t>primary-reverse-path: A YANG container that holds properties of the
primary reverse path. The reverse path is applicable to
bidirectional TE Tunnels.</t>
  </list></t>
</li></ul>

<ul empty="true"><li>

  <t><list style="symbols">
    <t>candidate-secondary-paths: A YANG container that holds a list of candidate
secondary paths which may be used for the primary path to support path
protection. The candidate secondary paths reference paths from the
tunnel secondary paths list.  The preference of the secondary paths is
specified within the list and dictates the order of visiting the secondary
path from the list. The attributes of a secondary path can be defined
separately from the primary path. The attributes of a secondary path will be
inherited from the associated 'active' primary when not explicitly defined
for the secondary path.</t>
  </list></t>
</li></ul>

<ul empty="true"><li>

</li></ul>

<t>secondary-paths:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the set of secondary paths. A secondary path is
 identified by 'name'. A secondary path can be referenced from the TE Tunnel's
'candidate-secondary-path' list.</t>
</li></ul>

<t>secondary-reverse-paths:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the set of secondary reverse paths. A secondary reverse
path is identified by 'name'. A secondary reverse path can be referenced from the
TE Tunnel's 'candidate-secondary-reverse-paths' list. A secondary reverse path is modeled with
the same data attributes as those of the primary path.</t>
</li></ul>

<t>The following set of common path attributes are shared for primary (forward and reverse) and secondary paths:</t>

<t>path-computation-method:</t>

<ul empty="true"><li>
  <t>A YANG leaf that specifies the method used for computing the TE path.</t>
</li></ul>

<t>path-computation-server:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the path computation server properties when the path is
 externally queried.</t>
</li></ul>

<t>compute-only:</t>

<ul empty="true"><li>
  <t>A path of a TE Tunnel is, by default, provisioned so that it can be instantiated
  in the forwarding plane so that it can carry traffic.
  In some cases, a TE path may be configured only for the
  purpose of computing a path and reporting it without the need to instantiate
  the LSP or commit any resources. In such a case, the path is configured in
  'compute-only' mode to distinguish it from the default behavior. A
  'compute-only' path is configured as usual with the associated per-path
  constraints and properties on a device or TE controller. The device or TE
  controller computes the feasible paths subject to configured constraints.
  A client may query the 'compute-only' computed path properties 'on-demand',
  or alternatively, can subscribe to be notified of computed paths and
  whenever the path properties change.</t>
</li></ul>

<t>use-path-computation:</t>

<ul empty="true"><li>
  <t>A YANG leaf that indicates whether or not path computation is to
  be used for a specified path.</t>
</li></ul>

<t>lockdown:</t>

<ul empty="true"><li>
  <t>A YANG leaf that when set indicates the existing path should not
be globally repaired or reoptimized.</t>
</li></ul>

<t>path-scope:</t>

<ul empty="true"><li>
  <t>A YANG leaf that specifies whether the path is a segment or an end-to-end path.</t>
</li></ul>

<t>preference:</t>

<ul empty="true"><li>
  <t>A YANG leaf that specifies the preference for the path, used to
choose between paths in a list.  The lower the number, the higher the
preference. Paths with the same preference are treated as equal
and other methods are used to choose between them.</t>
</li></ul>

<t>k-requested-paths:</t>

<ul empty="true"><li>
  <t>A YANG leaf that specifies the number of k-shortest-paths requested from the path
computation server and returned sorted by its optimization
objective.</t>
</li></ul>

<t>association-objects:</t>

<ul empty="true"><li>
  <t>A YANG container that holds a list of tunnel association properties.</t>
</li></ul>

<t>optimizations:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the optimization objectives
  that path computation will use to select a path.</t>
</li></ul>

<t>named-path-constraint:</t>

<ul empty="true"><li>
  <t>A YANG leafref that references an entry from the global list of named path constraints.</t>
</li></ul>

<t>te-bandwidth:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the path bandwidth (see <xref target="I-D.draft-ietf-teas-rfc8776-update"/>).</t>
</li></ul>

<t>link-protection:</t>

<ul empty="true"><li>
  <t>A YANG leaf that specifies the link protection type required for the links to
be included in the computed path (see <xref target="I-D.draft-ietf-teas-rfc8776-update"/>).</t>
</li></ul>

<t>setup/hold-priority:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>signaling-type:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. This value overrides
the provided one in the referenced named-path-constraint.</t>
</li></ul>

<t>path-metric-bounds:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>path-affinities-values:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>path-affinity-names:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>path-srlgs-lists:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>path-srlgs-names:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>disjointness:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>explicit-route-objects:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>path-in-segment:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>path-out-segment:</t>

<ul empty="true"><li>
  <t>see description provided in <xref target="TeGlobals"/>. These values override
those provided in the referenced named-path-constraint.</t>
</li></ul>

<t>computed-paths-properties:</t>

<ul empty="true"><li>
  <t>A YANG container that holds properties for the list of computed paths.</t>
</li></ul>

<t>computed-path-error-infos:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the list of path computation error information. The
TE system populates entries in this list whenever an error is encountered during the computation of the TE path.</t>
</li></ul>

<t>path-compute-info:</t>

<ul empty="true"><li>
  <t>A YANG grouping that contains leafs representing the path attributes that are passed to the TE path computation engine
to be considered during the path computation. This includes:</t>

  <t><list style="symbols">
    <t>path constraints,</t>
    <t>path optimization objectives, and</t>
    <t>path associations</t>
  </list></t>

  <t>Note, unless overridden under a specific path of the TE tunnel, the TE tunnel's primary path constraints, optimization objectives, and associations are inherited by the primary reverse path, secondary path and secondary reverse path.</t>
</li></ul>

<t>lsps:</t>

<ul empty="true"><li>
  <t>A YANG container that holds a list of LSPs that have been instantiated for this specific path.</t>
</li></ul>

<t>In addition to the path common attributes, the primary path has the following
attributes that are not present in the secondary path:</t>

<t><list style="symbols">
  <t>Only the primary path contains the list of 'candidate-secondary-paths' that
can protect the primary path.</t>
  <t>Only the primary path can contain a primary-reverse-path associated with the
primary path (and its associated list of
'candidate-secondary-reverse-path').</t>
</list></t>

<t>lsp-provisioning-error-infos:</t>

<ul empty="true"><li>
  <t>A YANG container that holds the list of LSP provisioning error information. The
TE system populates entries in this list whenever an error is encountered during the LSP provisioning.</t>
</li></ul>

</section>
<section anchor="TE_LSPS"><name>TE LSPs</name>

<t>The 'lsps' container includes the set of TE LSPs that have been instantiated.
A TE LSP is identified by a 3-tuple ('tunnel-name', 'lsp-id', 'node').</t>

<t>When the model is used to manage a specific device, the 'lsps' list contains all TE
LSPs that traverse the device (including ingressing, transiting and egressing the device).</t>

<t>When the model is used to manage a TE controller, the 'lsps' list
contains the TE LSPs on devices managed by the controller that act as ingress, and may optionally include
TE LSPs on devices managed by the controller that act as transit or egress role.</t>

</section>
</section>
<section anchor="tree-diagram"><name>Tree Diagram</name>

<t><xref target="fig-te-tree"/> shows the tree diagram of depth=4 for the generic TE YANG data model defined in
the 'ietf-te' module. The full tree diagram is shown in <xref target="AppendixB"/>.</t>

<figure title="Tree diagram of depth-4 of TE Tunnel YANG data model" anchor="fig-te-tree"><artwork><![CDATA[
module: ietf-te
  +--rw te
     +--rw enable?    boolean
     +--rw globals
     |  +--rw named-admin-groups
     |  |  +--rw named-admin-group* [name]
     |  |          {te-types:extended-admin-groups,
     |  |           te-types:named-extended-admin-groups}?
     |  |        ...
     |  +--rw named-srlgs
     |  |  +--rw named-srlg* [name] {te-types:named-srlg-groups}?
     |  |        ...
     |  +--rw named-path-constraints
     |     +--rw named-path-constraint* [name]
     |             {te-types:named-path-constraints}?
     |           ...
     +--rw tunnels
     |  +--rw tunnel* [name]
     |     +--rw name                            string
     |     +--rw alias?                          string
     |     +--rw identifier?                     uint32
     |     +--rw color?                          uint32
     |     +--rw description?                    string
     |     +--rw admin-state?                    identityref
     |     +--ro operational-state?              identityref
     |     +--rw encoding?                       identityref
     |     +--rw switching-type?                 identityref
     |     +--rw source
     |     |     ...
     |     +--rw destination
     |     |     ...
     |     +--rw bidirectional?                  boolean
     |     +--rw controller
     |     |     ...
     |     +--rw reoptimize-timer?               uint16
     |     +--rw association-objects
     |     |     ...
     |     +--rw protection
     |     |     ...
     |     +--rw restoration
     |     |     ...
     |     +--rw network-id?                     nw:network-id
     |     +--rw te-topology-identifier
     |     |     ...
     |     +--rw te-bandwidth
     |     |     ...
     |     +--rw link-protection?                identityref
     |     +--rw setup-priority?                 uint8
     |     +--rw hold-priority?                  uint8
     |     +--rw signaling-type?                 identityref
     |     +--rw hierarchy
     |     |     ...
     |     +--rw primary-paths
     |     |     ...
     |     +--rw secondary-paths
     |     |     ...
     |     +--rw secondary-reverse-paths
     |     |     ...
     |     +---x tunnel-action
     |     |     ...
     |     +---x protection-external-commands
     |           ...
     +--ro lsps
        +--ro lsp* [tunnel-name lsp-id node]
           +--ro tunnel-name                         string
           +--ro lsp-id                              uint16
           +--ro node
           |       te-types:te-node-id
           +--ro source?
           |       te-types:te-node-id
           +--ro destination?
           |       te-types:te-node-id
           +--ro tunnel-id?                          uint16
           +--ro extended-tunnel-id?
           |       yang:dotted-quad
           +--ro operational-state?                  identityref
           +--ro signaling-type?                     identityref
           +--ro origin-type?                        enumeration
           +--ro lsp-resource-status?                enumeration
           +--ro lockout-of-normal?                  boolean
           +--ro freeze?                             boolean
           +--ro lsp-protection-role?                enumeration
           +--ro lsp-protection-state?               identityref
           +--ro ingress-node-id?
           |       te-types:te-node-id
           +--ro egress-node-id?
           |       te-types:te-node-id
           +--ro lsp-actual-route-information
                 ...

  rpcs:
    +---x tunnels-path-compute
    |  +---w input
    |  |  +---w path-compute-info
    |  +--ro output
    |     +--ro path-compute-result
    +---x tunnels-actions
       +---w input
       |  +---w tunnel-info
       |  |  +---w (filter-type)
       |  |        ...
       |  +---w action-info
       |     +---w action?       identityref
       |     +---w disruptive?   empty
       +--ro output
          +--ro action-result?   identityref

]]></artwork></figure>

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

<t>The generic TE YANG module 'ietf-te' imports the following modules:</t>

<t><list style="symbols">
  <t>ietf-te-types defined in <xref target="I-D.draft-ietf-teas-rfc8776-update"/></t>
  <t>ietf-yang-types and ietf-inet-types defined in <xref target="RFC6991"/></t>
  <t>ietf-network and ietf-network-topology defined in <xref target="RFC8345"/></t>
</list></t>

<t>This module references the following documents:
<xref target="RFC4206"/>, <xref target="RFC4427"/>,
<xref target="RFC4872"/>, <xref target="RFC3209"/>, <xref target="RFC6780"/>,
<xref target="RFC7471"/>, <xref target="RFC9012"/>, <xref target="RFC8570"/>,
<xref target="RFC8232"/>, <xref target="RFC7271"/>, <xref target="RFC8234"/>, <xref target="RFC7308"/>, and <xref target="ITU_G.808.1"/>.</t>

<figure><artwork><![CDATA[
<CODE BEGINS> file "ietf-te@2025-10-06.yang"
module ietf-te {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-te";

  /* RFC Editor Note: Please replace the above line with the URN
   * assigned by IANA and remove this note.
   */

  prefix te;

  /* Import TE generic types */

  import ietf-te-types {
    prefix te-types;
    reference
      "draft-ietf-teas-rfc8776-update: Common YANG Data Types
       for Traffic Engineering.";
  }
  import ietf-yang-types {
    prefix yang;
    reference
      "RFC6991: Common YANG Data Types.";
  }

  import ietf-network {
    prefix "nw";
    reference "RFC 8345: A YANG Data Model for Network Topologies";
  }

  import ietf-network-topology {
    prefix "nt";
    reference "RFC 8345: A YANG Data Model for Network Topologies";
  }

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

     Editor:   Tarek Saad
               <mailto:tsaad.net@gmail.com>

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

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

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

     Editor:   Igor Bryskin
               <mailto:i_bryskin@yahoo.com>";

  description
    "YANG data module for TE configuration, state, and RPCs.
     The model fully conforms to the Network Management
     Datastore Architecture (NMDA).

     Copyright (c) 2025 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 Revised 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
     (https://www.rfc-editor.org/info/rfcXXXX); 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 2025-10-06 {
    description
      "Initial revision for the TE generic YANG module.";
    reference
      "RFCXXXX: A YANG Data Model for Traffic Engineering Tunnels
       and Interfaces.";
  }

  typedef tunnel-ref {
    type leafref {
      path "/te:te/te:tunnels/te:tunnel/te:name";
      require-instance false;
    }
    description
      "This type is used by data models that need to reference
       a configured TE tunnel.";
  }

  /**
   * TE tunnel generic groupings
   */

  grouping path-common-properties {
    description
      "Common path attributes.";
    leaf name {
      type string;
      description
        "TE path name.";
    }
    leaf path-computation-method {
      type identityref {
        base te-types:path-computation-method;
      }
      default "te-types:path-locally-computed";
      description
        "The method used for computing the path, either
         locally computed, queried from a server or not
         computed at all (explicitly configured).";
    }
    container path-computation-server {
      when "derived-from-or-self(../path-computation-method, "
         + "'te-types:path-externally-queried')" {
        description
        "The IP address or the TE identifier of the external
         path computation server.";
      }
      uses te-types:te-generic-node-id;
      description
        "Address of the external path computation
         server.";
    }
    leaf compute-only {
      when "../use-path-computation = 'true'" {
        description
          "Applicable when path computation is requested.";
      }
      type empty;
      description
        "When present, the path is computed, but no resources
         are committed or reserved in the network. The path may
         be recomputed upon topology changes.";
    }
    leaf use-path-computation {
      when "derived-from-or-self(../path-computation-method, "
         + "'te-types:path-locally-computed')";
      type boolean;
      default "true";
      description
        "When 'true' indicates the path is dynamically computed
         and/or validated against the Traffic-Engineering Database
         (TED), and when 'false' indicates no path expansion or
         validation against the TED is required.";
    }
    leaf lockdown {
      type empty;
      description
        "When present, indicates the existing path should not be
         globally repaired or reoptimized.";
    }
    leaf path-scope {
      type identityref {
        base te-types:path-scope-type;
      }
      default "te-types:path-scope-end-to-end";
      config false;
      description
        "Indicates whether the path is a segment or portion of
         the full path, or is an end-to-end path for
         the TE Tunnel.";
    }
  }

  /* This grouping is re-used in path-computation YANG model
   * defined in [I-D.ietf-teas-yang-path-computation] */
  grouping path-compute-info {
    description
      "Attributes used for path computation request.";
    uses tunnel-associations-properties;
    uses te-types:generic-path-optimization;
    leaf named-path-constraint {
      if-feature "te-types:named-path-constraints";
      type leafref {
        path "/te:te/te:globals/te:named-path-constraints/"
           + "te:named-path-constraint/te:name";
      }
      description
        "Reference to a globally defined named path constraint set.";
    }
    uses path-constraints-common;
  }

  /* This grouping is re-used in path-computation YANG model
   * defined in [I-D.ietf-teas-yang-path-computation] */
  grouping path-forward-properties {
    description
      "The path preference.";
    leaf preference {
      type uint8 {
        range "1..255";
      }
      default "1";
      description
        "Specifies a preference for this path. The lower the number
         higher the preference.";
    }
    leaf co-routed {
      when "/te:te/te:tunnels/te:tunnel/te:bidirectional = 'true'" {
        description
          "Applicable to bidirectional tunnels only.";
      }
      type boolean;
      default "false";
      description
        "Indicates whether the reverse path must be co-routed
         with the primary.";
    }
  }

  /* This grouping is re-used in path-computation YANG model
   * defined in [I-D.ietf-teas-yang-path-computation] */
  grouping k-requested-paths {
    description
      "The k-shortest paths requests.";
    leaf k-requested-paths {
      type uint8;
      default "1";
      description
        "The number of k-shortest-paths requested from the path
         computation server and returned sorted by its optimization
         objective.";
    }
  }

  grouping path-state {
    description
      "TE per path state parameters.";
    uses path-computation-response;
    container lsp-provisioning-error-infos {
      config false;
      description
        "LSP provisioning error information.";
      list lsp-provisioning-error-info {
        description
          "List of LSP provisioning error info entries.";
        leaf error-reason {
          type identityref {
            base te-types:lsp-provisioning-error-reason;
          }
          description
            "LSP provision error type.";
        }
        leaf error-description {
          type string;
          description
            "The textual representation of the error that occurred
             during LSP provisioning.";
        }
        leaf error-timestamp {
          type yang:date-and-time;
          description
            "Timestamp of when the reported error occurred.";
        }
        leaf error-node-id {
          type te-types:te-node-id;
          description
            "Node identifier of node where error occurred.";
        }
        leaf error-link-id {
          type te-types:te-tp-id;
          description
            "Link ID where the error occurred.";
        }
        leaf lsp-id {
          type uint16;
          description
            "The LSP-ID for which LSP provisioning error was
             returned.";
        }
      }
    }
    container lsps {
      config false;
      description
        "The TE LSPs container.";
      list lsp {
        key "node lsp-id";
        description
          "List of LSPs associated with the tunnel.";
        leaf tunnel-name {
          type leafref {
            path "/te:te/te:lsps/te:lsp/te:tunnel-name";
          }
          description "TE tunnel name.";
        }
        leaf node {
          type leafref {
            path "/te:te/te:lsps/te:lsp[tunnel-name="
               + "current()/../te:tunnel-name][lsp-id="
               + "current()/../te:lsp-id]/te:node";
          }
          description "The node where the LSP state resides.";
        }
        leaf lsp-id {
          type leafref {
            path "/te:te/te:lsps/te:lsp[tunnel-name="
               + "current()/../tunnel-name]/te:lsp-id";
          }
          description "The TE LSP identifier.";
        }
        leaf state-change-timestamp {
          type yang:date-and-time;
          description
            "Indicates the time at which the LSP operational
             state was last updated.";
        }
      }
    }
  }

  /* This grouping is re-used in path-computation YANG model
   * defined in [I-D.ietf-teas-yang-path-computation] */
  grouping path-computation-response {
    description
      "Attributes reported by path computation response.";
    container computed-paths-properties {
      config false;
      description
        "Computed path properties container.";
      list computed-path-properties {
        key "k-index";
        description
          "List of computed paths.";
        leaf k-index {
          type uint8;
          description
            "The k-th path returned from the computation server.
             A lower k value path is more optimal than higher k
             value path(s)";
        }
        uses te-types:generic-path-properties {
          augment "path-properties" {
            description
              "additional path properties returned by path
               computation.";
            uses te-types:te-bandwidth;
            leaf disjointness-type {
              type te-types:te-path-disjointness;
              config false;
              description
                "The type of resource disjointness.
                 When reported for a primary path, it represents the
                 minimum level of disjointness of all the secondary
                 paths. When reported for a secondary path, it
                 represents the disjointness of the secondary path.";
            }
            leaf last-computed-timestamp {
              type yang:date-and-time;
              config false;
              description
                "Timestamp of when the path was last computed.";
            }
          }
        }
      }
    }
    container computed-path-error-infos {
      config false;
      description
        "Path computation information container.";
      list computed-path-error-info {
        description
          "List of path computation info entries.";
        leaf error-description {
          type string;
          description
            "Textual representation of the error that occurred
             during path computation.";
        }
        leaf error-timestamp {
          type yang:date-and-time;
          description
            "Timestamp of last path computation attempt.";
        }
        leaf error-reason {
          type identityref {
            base te-types:path-computation-error-reason;
          }
          description
            "Reason for the path computation error.";
        }
      }
    }
  }

  grouping protection-restoration-properties {
    description
      "Protection and restoration parameters.";
    container protection {
      description
        "Protection parameters.";
      leaf protection-type {
        type identityref {
          base te-types:lsp-protection-type;
        }
        default "te-types:lsp-protection-unprotected";
        description
          "LSP protection type.";
      }
      leaf protection-reversion-disable {
        type boolean;
        default "false";
        description
          "Disable protection reversion to working path.";
      }
      leaf hold-off-time {
        type uint32;
        units "milli-seconds";
        description
          "The time between the declaration of an SF or SD condition
           and the initialization of the protection switching
           algorithm.";
        reference
          "RFC4427";
      }
      leaf wait-to-revert {
        type uint16;
        units "seconds";
        description
          "Time to wait before attempting LSP reversion.";
        reference
          "RFC4427";
      }
      leaf aps-signal-id {
        type uint8 {
          range "1..255";
        }
        default "1";
        description
          "The Automatic Protection Switching (APS) signal number
           used to reference the traffic of this tunnel. The default
           value for normal traffic is 1.
           The default value for extra-traffic is 255. If not
           specified, non-default values can be assigned by the
           server, if and only if, the server controls both
            endpoints.";
        reference
          "ITU_G.808.1";
      }
    }
    container restoration {
      description
        "Restoration parameters.";
      leaf restoration-type {
        type identityref {
          base te-types:lsp-restoration-type;
        }
        description
          "LSP restoration type.";
      }
      leaf restoration-scheme {
        type identityref {
          base te-types:restoration-scheme-type;
        }
        description
          "LSP restoration scheme.";
      }
      leaf restoration-reversion-disable {
        type boolean;
        default "false";
        description
          "Disable restoration reversion to working path.";
      }
      leaf hold-off-time {
        type uint32;
        units "milli-seconds";
        description
          "The time between the declaration of an SF or SD condition
           and the initialization of the protection switching
           algorithm.";
        reference
          "RFC4427";
      }
      leaf wait-to-restore {
        type uint16;
        units "seconds";
        description
          "Time to wait before attempting LSP restoration.";
        reference
          "RFC4427";
      }
      leaf wait-to-revert {
        type uint16;
        units "seconds";
        description
          "Time to wait before attempting LSP reversion.";
        reference
          "RFC4427";
      }
    }
  }

  grouping tunnel-associations-properties {
    description
      "TE tunnel association grouping.";
    container association-objects {
      description
        "TE tunnel associations.";
      list association-object {
        key "association-key";
        unique "type id source/id source/type";
        description
          "List of association base objects.";
        reference
          "RFC4872";
        leaf association-key {
          type string;
          description
            "Association key used to identify a specific
             association in the list";
        }
        leaf type {
          type identityref {
            base te-types:association-type;
          }
          description
            "Association type.";
          reference
            "RFC4872";
        }
        leaf id {
          type uint16;
          description
            "Association identifier.";
          reference
            "RFC4872";
        }
        container source {
          uses te-types:te-generic-node-id;
          description
            "Association source.";
          reference
            "RFC4872";
        }
      }
      list association-object-extended {
        key "association-key";
        unique
          "type id source/id source/type global-source extended-id";
        description
          "List of extended association objects.";
        reference
          "RFC6780";
        leaf association-key {
          type string;
          description
            "Association key used to identify a specific
             association in the list";
        }
        leaf type {
          type identityref {
            base te-types:association-type;
          }
          description
            "Association type.";
          reference
            "RFC4872, RFC6780";
        }
        leaf id {
          type uint16;
          description
            "Association identifier.";
          reference
            "RFC4872, RFC6780";
        }
        container source {
          uses te-types:te-generic-node-id;
          description
            "Association source.";
          reference
            "RFC4872, RFC6780";
        }
        leaf global-source {
          type uint32;
          description
            "Association global source.";
          reference
            "RFC6780";
        }
        leaf extended-id {
          type yang:hex-string;
          description
            "Association extended identifier.";
          reference
            "RFC6780";
        }
      }
    }
  }

  grouping tunnel-end-point {
    description
      "Common grouping used to specify the tunnel source and 
      destination end-points.";
    leaf node-id {
      type nw:node-id;
      description
        "The TE tunnel end-point node identifier";
    }
    leaf te-node-id {
      type te-types:te-node-id;
      description
        "The TE tunnel end-point TE node identifier";
    }
    leaf tunnel-tp-id {
      when "../node-id or ../te-node-id" {
        description
          "The TE tunnel termination point identifier is local to 
          a node";
      }
      type binary;
      description
        "The TE tunnel end-point TE tunnel termination point 
        identifier";
    }
  }

  /* This grouping is re-used in path-computation YANG model
   * defined in [I-D.ietf-teas-yang-path-computation] */
  grouping tunnel-common-attributes {
    description
      "Common grouping to define the TE tunnel parameters";
    container source {
      description
        "TE tunnel source end-point.";
      uses tunnel-end-point;
    }
    container destination {
      description
        "TE tunnel destination end-point.";
      uses tunnel-end-point;
    }
    leaf bidirectional {
      type boolean;
      default "false";
      description
        "Indicates a bidirectional tunnel";
    }
  }

  /* This grouping is re-used in path-computation YANG
   * model defined in [I-D.ietf-teas-yang-path-computation] */
  grouping tunnel-hierarchy-properties {
    description
      "A grouping for TE tunnel hierarchy information.";
    container hierarchy {
      description
        "Container for TE hierarchy related information.";
      container dependency-tunnels {
        description
          "List of tunnels that this tunnel can be potentially
           dependent on.";
        list dependency-tunnel {
          key "name";
          description
            "A tunnel entry that this tunnel can potentially depend
             on.";
          leaf name {
            type tunnel-ref;
            description
              "Dependency tunnel name. The tunnel may not have been
               instantiated yet.";
          }
          uses te-types:encoding-and-switching-type;
        }
      }
      container hierarchical-link {
        description
          "Identifies a hierarchical link (in client layer)
           that this tunnel is associated with. By default, the
           topology of the hierarchical link is the same topology of
           the tunnel;";
        reference
          "RFC4206";
        leaf enable {
          type boolean;
          default "false";
          description
            "Enables the hierarchical link properties supported by
             this tunnel";
        }
        leaf local-node-id {
          type nw:node-id;
          description
            "The local node identifier.";
        }
        leaf local-te-node-id {
          type te-types:te-node-id;
          description
            "The local TE node identifier.";
        }
        leaf local-link-tp-id {
          type nt:tp-id;
          description
            "The local link termination point identifier.";
          reference
            "RFC8345";
        }
        leaf local-te-link-tp-id {
          type te-types:te-tp-id;
          description
            "The local TE link termination point identifier.";
        }
        leaf remote-node-id {
          type nw:node-id;
          description
            "The remote node identifier.";
        }
        leaf remote-link-tp-id {
          type nt:tp-id;
          description
            "The remote link termination point identifier.";
          reference
            "RFC8345";
        }
        leaf remote-te-link-tp-id {
          type te-types:te-tp-id;
          description
            "The remote TE link termination point identifier.";
        }
        leaf remote-te-node-id {
          type te-types:te-node-id;
          description
            "Remote TE node identifier.";
        }
        leaf link-id {
          type nt:link-id;
          config false;
          description
            "A network topology assigned identifier to the link";
          reference
            "RFC8345";
        }
        leaf network-id {
          type nw:network-id;
          description
            "The network topology identifier where the hierarchical 
            link supported by this TE tunnel is instantiated.";
        }
        uses te-types:te-topology-identifier {
          description
            "The TE topology identifier where the hierarchical link
             supported by this TE tunnel is instantiated.";
        }
      }
    }
  }

  grouping path-constraints-common {
    description
      "Global named path constraints configuration
       grouping.";
    uses te-types:common-path-constraints-attributes;
    uses te-types:generic-path-disjointness;
    uses te-types:path-constraints-route-objects;
    container path-in-segment {
      presence "The end-to-end tunnel starts in a previous domain;
                this tunnel is a segment in the current domain.";
      description
        "If an end-to-end tunnel crosses multiple domains using
         the same technology, some additional constraints have to be
         taken in consideration in each domain.
         This TE tunnel segment is stitched to the upstream TE tunnel
         segment.";
      uses te-types:label-set-info;
    }
    container path-out-segment {
      presence
        "The end-to-end tunnel is not terminated in this domain;
         this tunnel is a segment in the current domain.";
      description
        "If an end-to-end tunnel crosses multiple domains using
         the same technology, some additional constraints have to be
         taken in consideration in each domain.
         This TE tunnel segment is stitched to the downstream TE
         tunnel segment.";
      uses te-types:label-set-info;
    }
  }

  /**
   * TE container
   */

  container te {
    description
      "TE global container.";
    leaf enable {
      type boolean;
      description
        "Enables the TE component features.";
    }

    /* TE Global Data */
    container globals {
      description
        "Globals TE system-wide configuration data container.";
      container named-admin-groups {
        description
          "TE named admin groups container.";
        list named-admin-group {
          if-feature "te-types:extended-admin-groups";
          if-feature "te-types:named-extended-admin-groups";
          key "name";
          description
            "List of named TE admin-groups.";
          leaf name {
            type string;
            description
              "A name that uniquely identifies a TE
               interface named admin-group.";
          }
          leaf bit-position {
            type uint32;
            description
              "Bit position representing the administrative group.
               Uniquely identify a specific administrative group by
               its numerical position within the bitmask.";
            reference
              "RFC3209 and RFC7308";
          }


        }
      }
      container named-srlgs {
        description
          "TE named SRLGs container.";
        list named-srlg {
          if-feature "te-types:named-srlg-groups";
          key "name";
          description
            "A list of named SRLG groups.";
          leaf name {
            type string;
            description
              "A name that uniquely identifies a TE
               interface named SRLG.";
          }
          leaf value {
            type te-types:srlg;
            description
              "An SRLG value.";
          }
          leaf cost {
            type uint32;
            description
              "The cost associated with an SRLG. This is used as
               a penalty during path computation when the TE path
               traverses a link with this SRLG.";
          }
        }
      }
      container named-path-constraints {
        description
          "TE named path constraints container.";
        list named-path-constraint {
          if-feature "te-types:named-path-constraints";
          key "name";
          leaf name {
            type string;
            description
              "A name that uniquely identifies a
               path constraint set.";
          }
          uses path-constraints-common;
          description
            "A list of named path constraints.";
        }
      }
    }

    /* TE Tunnel Data */
    container tunnels {
      description
        "Tunnels TE configuration data container.";
      list tunnel {
        key "name";
        description
          "The list of TE tunnels.";
        leaf name {
          type string;
          description
            "TE tunnel name.";
        }
        leaf alias {
          type string;
          description
            "An alternate name of the TE tunnel that can be modified
             anytime during its lifetime.";
        }
        leaf identifier {
          type uint32;
          description
            "TE tunnel Identifier.";
          reference
            "RFC3209";
        }
        leaf color {
          type uint32;
          description "The color associated with the TE tunnel.";
          reference "RFC9012";
        }
        leaf description {
          type string;
          default "None";
          description
            "Textual description for this TE tunnel.";
        }
        leaf admin-state {
          type identityref {
            base te-types:tunnel-admin-state-type;
          }
          default "te-types:tunnel-admin-state-up";
          description
            "TE tunnel administrative state.";
        }
        leaf operational-state {
          type identityref {
            base te-types:tunnel-state-type;
          }
          config false;
          description
            "TE tunnel operational state.";
        }
        leaf state-change-timestamp {
          type yang:date-and-time;
          description
            "Indicates the time at which the TE tunnel's operational
             state was last updated.";
        }
        uses te-types:encoding-and-switching-type;
        uses tunnel-common-attributes;
        container controller {
          description
            "Contains tunnel data relevant to external controller(s).
             This target node may be augmented by external module(s),
             for example, to add data for PCEP initiated and/or
             delegated tunnels.";
          leaf protocol-origin {
            type identityref {
              base te-types:protocol-origin-type;
            }
            description
              "The protocol origin for instantiating the tunnel.";
          }
          leaf controller-entity-id {
            type string;
            description
              "An identifier that is associated with the entity that
               controls the tunnel as defined in RFC8232.";
            reference "RFC8232";
          }
        }
        leaf reoptimize-timer {
          type uint16;
          units "seconds";
          description
            "Frequency of reoptimization of a traffic-engineered
             LSP. A value of 0 means that the LSP is never
             reoptimized";
        }
        uses tunnel-associations-properties;
        uses protection-restoration-properties;
        uses te-types:tunnel-constraints;
        uses tunnel-hierarchy-properties;
        container primary-paths {
          description
            "The set of primary paths.";
          reference "RFC4872";
          list primary-path {
            key "name";
            description
              "List of primary paths for this tunnel.";
            leaf active {
              type boolean;
              config false;
              description
                "Indicates an active path that
                 has been selected from the primary paths list.";
            }
            uses path-common-properties;
            uses path-forward-properties;
            uses k-requested-paths;
            uses path-compute-info;
            uses path-state;
            container primary-reverse-path {
              when "../../../te:bidirectional = 'true'";
              description
                "The reverse primary path properties.";
              uses path-common-properties;
              uses path-compute-info;
              uses path-state;
              container candidate-secondary-reverse-paths {
                description
                  "The set of referenced candidate reverse secondary
                   paths from the full set of secondary reverse paths
                   which may be used for this primary path.";
                list candidate-secondary-reverse-path {
                  key "secondary-reverse-path";
                  ordered-by user;
                  description
                    "List of candidate secondary reverse path(s)";
                  leaf secondary-reverse-path {
                    type leafref {
                      path "../../../../../../"
                         + "te:secondary-reverse-paths/"
                         + "te:secondary-reverse-path/te:name";
                    }
                    description
                      "A reference to the secondary reverse path that
                       may be utilized when the containing primary
                       reverse path is in use.";
                  }
                  leaf active {
                    type boolean;
                    config false;
                    description
                      "Indicates an active path that has been
                       selected from the secondary reverse paths
                       list.";
                  }
                }
              }
            }
            container candidate-secondary-paths {
              description
                "The set of candidate secondary paths which may be
                 used for this primary path. When secondary paths are
                 specified in the list the path of the secondary LSP
                 in use must be restricted to those paths
                 referenced.
                 The priority of the secondary paths is specified
                 within the list. Higher priority values are less
                 preferred - that is to say that a path with priority
                 0 is the most preferred path. In the case that the
                 list is empty, any secondary path may be
                 utilised when the current primary path is in use.";
              list candidate-secondary-path {
                key "secondary-path";
                ordered-by user;
                description
                  "List of candidate secondary paths for this
                   tunnel.";
                leaf secondary-path {
                  type leafref {
                    path "../../../../../te:secondary-paths/"
                       + "te:secondary-path/te:name";
                  }
                  description
                    "A reference to the secondary path that may be
                     utilised when the containing primary path is
                     in use.";
                }
                leaf active {
                  type boolean;
                  config false;
                  description
                    "Indicates an active path that has been selected
                     from the candidate secondary paths.";
                }
              }
            }
          }
        }
        container secondary-paths {
          description
            "The set of secondary paths.";
          reference "RFC4872";
          list secondary-path {
            key "name";
            description
              "List of secondary paths for this tunnel.";
            uses path-common-properties;
            leaf preference {
              type uint8 {
                range "1..255";
              }
              default "1";
              description
                "Specifies a preference for this path. The lower the
                 number, the higher the preference.";
            }
            leaf secondary-reverse-path {
              type leafref {
                path "../../../"
                   + "te:secondary-reverse-paths/"
                   + "te:secondary-reverse-path/te:name";
              }
              description
                "A reference to the reverse secondary path when
                 co-routed with the secondary path.";
            }
            uses path-compute-info;
            uses protection-restoration-properties;
            uses path-state;
          }
        }
        container secondary-reverse-paths {
          description
            "The set of secondary reverse paths.";
          list secondary-reverse-path {
            key "name";
            description
              "List of secondary paths for this tunnel.";
            uses path-common-properties;
            leaf preference {
              type uint8 {
                range "1..255";
              }
              default "1";
              description
                "Specifies a preference for this path. The lower the
                 number higher the preference. Paths that have the
                 same preference will be activated together.";
            }
            uses path-compute-info;
            uses protection-restoration-properties;
            uses path-state;
          }
        }
        action tunnel-action {
          description
            "Action commands to manipulate the TE tunnel state.";
          reference
            "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
             Section 2.5";
          input {
            leaf action-type {
              type identityref {
                base te-types:tunnel-action-type;
              }
              description
                "The action to be invoked on the TE tunnel.";
            }
          }
          output {
            leaf action-result {
              type identityref {
                base te-types:te-action-result;
              }
              description
                "The result of the tunnel action operation.";
            }
          }
        }
        action protection-external-commands {
          description
            "Actions to manipulate the protection external
             commands of the TE tunnel.";
          reference
            "RFC 4427: Recovery (Protection and Restoration)
             Terminology for Generalized Multi-Protocol Label
             Switching (GMPLS)";
          input {
            leaf protection-external-command {
              type identityref {
                base te-types:protection-external-commands;
              }
              description
                "Protection external command.";
            }
            leaf ingress-node {
              type boolean;
              default "true";
              description
                "When 'true', indicates that the action is
                 applied on the ingress node.
                 By default, the action applies to the ingress
                 node";
            }
            leaf egress-node {
              type boolean;
              default "false";
              description
                "When set to 'true', indicates that the action is
                 applied on the egress node.
                 By default, the action applies to the ingress
                 node.";
            }
            leaf path-name {
              type string;
              description
                "The name of the path that the external command
                applies to.";
            }
            leaf path-type {
              type te-types:path-type;
              description
                "The type of the path that the external command
                applies to.";
            }
            leaf traffic-type {
              type enumeration {
                enum normal-traffic {
                  description
                    "The manual-switch or forced-switch command
                     applies to the normal traffic (this Tunnel).";
                }
                enum null-traffic {
                  description
                    "The manual-switch or forced-switch command
                     applies to the null traffic.";
                }
                enum extra-traffic {
                  description
                    "The manual-switch or forced-switch command
                     applies to the extra traffic (the extra-traffic
                     Tunnel sharing protection bandwidth with this
                     Tunnel).";
                }
              }
              description
                "Indicates whether the manual-switch or forced-switch
                 commands applies to the normal traffic, the null
                 traffic or the extra-traffic.";
              reference
                "RFC4427";
            }
            leaf extra-traffic-tunnel-ref {
              type tunnel-ref;
              description
                "In case there are multiple extra-traffic tunnels
                 sharing protection bandwidth with this Tunnel
                 (m:n protection), represents which extra-traffic
                 Tunnel the manual-switch or forced-switch to
                 extra-traffic command applies to.";
            }
          }
        }
      }
    }

    /* TE LSPs Data */
    container lsps {
      config false;
      description
        "TE LSPs state container.";
      list lsp {
        key "tunnel-name lsp-id node";
        unique "source destination tunnel-id lsp-id "
          + "extended-tunnel-id";
        description
          "List of LSPs associated with the tunnel.";
        leaf tunnel-name {
          type string;
          description "The TE tunnel name.";
        }
        leaf lsp-id {
          type uint16;
          description
            "Identifier used in the SENDER_TEMPLATE and the
             FILTER_SPEC that can be changed to allow a sender to
             share resources with itself.";
          reference
            "RFC3209";
        }
        leaf node {
          type te-types:te-node-id;
          description
            "The node where the LSP state is retrieved.";
        }
        leaf source {
          type te-types:te-node-id;
          description
            "Tunnel sender address extracted from
             SENDER_TEMPLATE  object.";
          reference
            "RFC3209";
        }
        leaf destination {
          type te-types:te-node-id;
          description
            "The tunnel endpoint address.";
          reference
            "RFC3209";
        }
        leaf tunnel-id {
          type uint16;
          description
            "The tunnel identifier that remains
             constant over the life of the tunnel.";
          reference
            "RFC3209";
        }
        leaf extended-tunnel-id {
          type yang:dotted-quad;
          description
            "The LSP Extended Tunnel ID.";
          reference
            "RFC3209";
        }
        leaf operational-state {
          type identityref {
            base te-types:lsp-state-type;
          }
          description
            "The LSP operational state.";
        }
        leaf signaling-type {
          type identityref {
            base te-types:path-signaling-type;
          }
          description
            "The signaling protocol used to set up this LSP.";
        }
        leaf origin-type {
          type enumeration {
            enum ingress {
              description
                "Origin ingress.";
            }
            enum egress {
              description
                "Origin egress.";
            }
            enum transit {
              description
                "Origin transit.";
            }
          }
          description
            "The origin of the LSP relative to the location of the
             local switch in the path.";
        }
        leaf lsp-resource-status {
          type enumeration {
            enum primary {
              description
                "A primary LSP is a fully established LSP for which
                 the resource allocation has been committed at the
                 data plane.";
            }
            enum secondary {
              description
                "A secondary LSP is an LSP that has been provisioned
                 in the control plane only; e.g. resource allocation
                 has not been committed at the data plane.";
            }
          }
          description
            "LSP resource allocation state.";
          reference
            "RFC4872, section 4.2.1";
        }
        leaf lockout-of-normal {
          type boolean;
          description
            "When set to 'true', it represents a lockout of normal
             traffic external command. When set to 'false', it
             represents a clear lockout of normal traffic external
             command. The lockout of normal traffic command applies
             to this Tunnel.";
          reference
            "RFC4427";
        }
        leaf freeze {
          type boolean;
          description
            "When set to 'true', it represents a freeze external
             command.  When set to 'false', it represents a clear
             freeze external command. The freeze command applies to
             all the Tunnels which are sharing the protection
             resources with this Tunnel.";
          reference
            "RFC4427";
        }
        leaf lsp-protection-role {
          type enumeration {
            enum working {
              description
                "A working LSP must be a primary LSP whilst a
                 protecting LSP can be either a primary or a
                 secondary LSP. Also, known as protected LSPs when
                 working LSPs are associated with protecting LSPs.";
            }
            enum protecting {
              description
                "A secondary LSP is an LSP that has been provisioned
                 in the control plane only; e.g. resource allocation
                 has not been committed at the data plane.";
            }
          }
          description
            "LSP role type.";
          reference
            "RFC4872, section 4.2.1";
        }
        leaf lsp-protection-state {
          type identityref {
            base te-types:lsp-protection-state;
          }
          config false;
          description
            "The reported protection state controlling which
             tunnel is using the resources of the protecting LSP.";
        }
        leaf ingress-node-id {
          type te-types:te-node-id;
          description
            "Indicates the te-node-id of the ingress node of the TE
             tunnel or tunnel segment when the protection action is
             applied to the ingress node or the WTR timer is active.
             This is set to '0.0.0.0' when the controller is not
             aware of the te-node-id of ingress-node.";
        }
        leaf egress-node-id {
          type te-types:te-node-id;
          description
            "Indicates the te-node-id of the egress node of the TE
             tunnel or tunnel segment when the protection action is
             applied to the ingress node or the WTR timer is active.
             This is set to '0.0.0.0' when the controller is not
             aware of the te-node-id of ingress-node.";
        }
        container lsp-actual-route-information {
          description
            "RSVP recorded route object information.";
          list lsp-actual-route-information {
            when "../../origin-type = 'ingress'" {
              description
                "Applicable on ingress LSPs only.";
            }
            key "index";
            description
              "Record route list entry.";
            uses te-types:record-route-state;
          }
        }
      }
    }
  }

  /* TE Tunnel RPCs/execution Data */

  rpc tunnels-path-compute {
    description
      "This RPC is a generic API whose
       input and output parameters are expected to be provided by
       augments to this module.";
    reference
      "RFC 4655: A Path Computation Element (PCE)-Based
       Architecture.";
    input {
      container path-compute-info {
        /* 
         * An external path compute module may augment this
         * target.
         */
        description
          "RPC input information.";
      }
    }
    output {
      container path-compute-result {
        /* 
         * An external path compute module may augment this
         * target.
         */
        description
          "RPC output information.";
      }
    }
  }

  rpc tunnels-actions {
    description
      "RPC that manipulates the state of a TE tunnel.";
    reference
      "RFC 3209: RSVP-TE: Extensions to RSVP for LSP Tunnels,
       Section 2.5";
    input {
      container tunnel-info {
        description
          "TE tunnel information.";
        choice filter-type {
          mandatory true;
          description
            "Filter choice.";
          case all-tunnels {
            leaf all {
              type empty;
              mandatory true;
              description
                "When present, applies the action on all TE
                 tunnels.";
            }
          }
          case one-tunnel {
            leaf tunnel {
              type tunnel-ref;
              description
                "Apply action on the specific TE tunnel.";
            }
          }
        }
      }
      container action-info {
        description
          "TE tunnel action information.";
        leaf action {
          type identityref {
            base te-types:tunnel-action-type;
          }
          description
            "The action type.";
        }
        leaf disruptive {
          when "derived-from-or-self(../action, "
             + "'te-types:tunnel-action-reoptimize')";
          type empty;
          description
            "Specifies whether reoptimization operations,
             particularly when multiple tunnels are involved,
             are permitted to cause traffic disruption on some
             TE tunnels.";
        }
      }
    }
    output {
      leaf action-result {
        type identityref {
          base te-types:te-action-result;
        }
        description
          "The result of the tunnel action operation.";
      }
    }
  }
}
<CODE ENDS>
]]></artwork></figure>

</section>
</section>
<section anchor="te-device-yang-model"><name>TE Device YANG Model</name>

<t>The device TE YANG module 'ietf-te-device' models data that is specific to
managing a TE device.  This module augments the generic TE YANG module.</t>

<section anchor="module-structure-1"><name>Module Structure</name>

<t>The 'ietf-te-device' modufle defines the configuration and operational state data
that is specific to the device, including those related to the TE subsystem, tunnels, LSPs, and interfaces.</t>

<section anchor="te-device-globals-tunnels-and-lsps"><name>TE Device Globals, Tunnels and LSPs</name>

<t>The 'ietf-te-device' module augments the generic 'ietf-te' module at the
'globals', 'tunnels', and 'lsps' levels to include the device-specific
configurations and operational state.</t>

<t><xref target="fig-if-te-01"/> shows the
'ietf-te-device' subtree generated with depth=4 that describes those
augmentations.</t>

<figure title="TE Device Augmentations to Globals, Tunnels, and LSPs YANG Subtree" anchor="fig-if-te-01"><artwork><![CDATA[
module: ietf-te-device

  augment /te:te/te:globals:
    +--rw lsp-install-interval?        uint32
    +--rw lsp-cleanup-interval?        uint32
    +--rw lsp-invalidation-interval?   uint32
  augment /te:te/te:tunnels/te:tunnel:
    +--rw path-invalidation-action?    identityref
    +--rw lsp-install-interval?        uint32
    +--rw lsp-cleanup-interval?        uint32
    +--rw lsp-invalidation-interval?   uint32
  augment /te:te/te:lsps/te:lsp:
    +--ro lsp-timers
    |  +--ro uptime?            uint32
    |  +--ro time-to-install?   uint32
    |  +--ro time-to-destroy?   uint32
    +--ro downstream-info
    |     ..
    +--ro upstream-info
          ..
]]></artwork></figure>

<t>The following is the description of the augmented data at each level.</t>

<t>Global Timers (Augmenting /te:te/te:globals):</t>

<t>These are device-specific global configuration parameters related to LSP timers, applied system-wide.</t>

<dl>
  <dt>lsp-install-interval</dt>
  <dd><t/></dd>
  <dt>:</dt>
  <dd>
    <t>An optional leaf that specifies the delay time, in seconds, before a newly provisioned LSP is installed into the forwarding plane to carry traffic.</t>
  </dd>
  <dt>lsp-cleanup-interval</dt>
  <dd><t/></dd>
  <dt>:</dt>
  <dd>
    <t>An optional leaf that specifies the delay time, in seconds, before an LSP is completely removed from the system after it is no longer in use.</t>
  </dd>
  <dt>lsp-invalidation-interval</dt>
  <dd><t/></dd>
  <dt>:</dt>
  <dd>
    <t>An optional leaf that specifies the delay time, in seconds, during which a TE LSP's path is considered invalid before any corrective action is taken.</t>
  </dd>
</dl>

<t>Tunnel Device-Dependent Attributes (Augmenting /te:te/te:tunnels/te:tunnel).</t>

<t>These are device-specific configuration parameters that apply to individual TE Tunnels:</t>

<dl>
  <dt>path-invalidation-action</dt>
  <dd><t/></dd>
  <dt>:</dt>
  <dd>
    <t>An optional identityref that specifies the action to be taken when a TE Tunnel's path is deemed invalid (e.g., tear down, recompute).</t>
  </dd>
  <dt>lsp-install-interval</dt>
  <dd><t/></dd>
  <dt>:</dt>
  <dd>
    <t>An optional leaf that specifies the delay time, in seconds, for this specific TE Tunnel before its LSPs are installed into the forwarding plane. This value can override the global lsp-install-interval.</t>
  </dd>
  <dt>lsp-cleanup-interval</dt>
  <dd><t/></dd>
  <dt>:</dt>
  <dd>
    <t>An optional leaf that specifies the delay time, in seconds, for this specific TE Tunnel before its LSPs are cleaned up. This value can override the global lsp-cleanup-interval.</t>
  </dd>
  <dt>lsp-invalidation-interval</dt>
  <dd><t/></dd>
  <dt>:</dt>
  <dd>
    <t>An optional leaf that specifies the delay time, in seconds, for this specific TE Tunnel during which its path is considered invalid before action is taken. This value can override the global lsp-invalidation-interval.</t>
  </dd>
</dl>

<t>LSP Device-Dependent State (Augmenting /te:te/te:lsps/te:lsp).</t>

<t>These are read-only operational state parameters providing device-specific details for individual LSPs:</t>

<dl>
  <dt>lsp-timers</dt>
  <dd><t/></dd>
  <dt>:</dt>
  <dd>
    <t>A container that holds various timer-related operational state for an LSP, applicable primarily to ingress LSPs.</t>
  </dd>
  <dt>uptime</dt>
  <dd><t/></dd>
  <dt>:</dt>
  <dd>
    <t>An optional leaf that indicates the total time, in seconds, that the LSP has been operational.</t>
  </dd>
  <dt>time-to-install</dt>
  <dd><t/></dd>
  <dt>:</dt>
  <dd>
    <t>An optional leaf that indicates the remaining time, in seconds, for a new LSP to be fully instantiated and ready to carry traffic.</t>
  </dd>
  <dt>time-to-destroy</dt>
  <dd><t/></dd>
  <dt>:</dt>
  <dd>
    <t>An optional leaf that indicates the remaining time, in seconds, before an existing LSP is torn down.</t>
  </dd>
  <dt>downstream-info</dt>
  <dd><t/></dd>
  <dt>:</dt>
  <dd>
    <t>A container that holds information about the downstream neighbor and label for the LSP, applicable when the LSP is not at its egress.</t>
  </dd>
  <dt>upstream-info</dt>
  <dd><t/></dd>
  <dt>:</dt>
  <dd>
    <t>A container that holds information about the upstream neighbor and label for the LSP, applicable when the LSP is not at its ingress.</t>
  </dd>
</dl>

</section>
<section anchor="te-device-interfaces"><name>TE Device Interfaces</name>

<t><xref target="fig-if-te-02"/> shows the TE interface subtree from the TE device module 'ietf-te-device' with depth=4.
The full tree diagram is shown in <xref target="AppendixB"/>.</t>

<figure title="TE interfaces YANG subtree from the TE device YANG data model" anchor="fig-if-te-02"><artwork><![CDATA[
module: ietf-te-device

  augment /te:te:
    +--rw interfaces
       +--rw threshold-type?            enumeration
       +--rw delta-percentage?          rt-types:percentage
       +--rw threshold-specification?   enumeration
       +--rw up-thresholds*             rt-types:percentage
       +--rw down-thresholds*           rt-types:percentage
       +--rw up-down-thresholds*        rt-types:percentage
       +--rw interface* [name]
          +--rw name                                if:interface-ref
          +--rw te-metric?
          |       te-types:te-metric
          +--rw (admin-group-type)?
          |  +--:(value-admin-groups)
          |  |     ...
          |  +--:(named-admin-groups)
          |        ...
          +--rw (srlg-type)?
          |  +--:(value-srlgs)
          |  |     ...
          |  +--:(named-srlgs)
          |        ...
          +--rw threshold-type?                     enumeration
          +--rw delta-percentage?
          |       rt-types:percentage
          +--rw threshold-specification?            enumeration
          +--rw up-thresholds*
          |       rt-types:percentage
          +--rw down-thresholds*
          |       rt-types:percentage
          +--rw up-down-thresholds*
          |       rt-types:percentage
          +--rw switching-capabilities* [switching-capability]
          |  +--rw switching-capability    identityref
          |  +--rw encoding?               identityref
          +--ro te-advertisements-state
             +--ro flood-interval?           uint32
             +--ro last-flooded-time?        uint32
             +--ro next-flooded-time?        uint32
             +--ro last-flooded-trigger?     enumeration
             +--ro advertised-level-areas* [level-area]
                   ...

]]></artwork></figure>

<t>The main elements under the interfaces container are:</t>

<t>threshold-type:</t>

<ul empty="true"><li>
  <t>An optional enumeration that specifies the type of thresholding mechanism used for flooding bandwidth updates for all TE interfaces on the device. Options include 'delta' (flooding on a change greater than a specified delta) or 'threshold-crossed' (flooding when bandwidth crosses a defined threshold).</t>
</li></ul>

<t>delta-percentage:</t>

<ul empty="true"><li>
  <t>An optional percentage value, used when threshold-type is 'delta', indicating the change in reservable bandwidth that triggers an IGP update for all TE interfaces.</t>
</li></ul>

<t>threshold-specification:</t>

<ul empty="true"><li>
  <t>An optional enumeration, used when threshold-type is 'threshold-crossed', to define whether a single set of 'mirrored-up-down' thresholds or separate 'separate-up-down' thresholds are used for increasing and decreasing bandwidth. This applies globally to all TE interfaces.</t>
</li></ul>

<t>up-thresholds:</t>

<ul empty="true"><li>
  <t>A list of percentage values, used with 'separate-up-down' thresholding, that define the points at which bandwidth updates are triggered when the reservable bandwidth is increasing across all TE interfaces.</t>
</li></ul>

<t>down-thresholds:</t>

<ul empty="true"><li>
  <t>A list of percentage values, used with 'separate-up-down' thresholding, that define the points at which bandwidth updates are triggered when the reservable bandwidth is decreasing across all TE interfaces.</t>
</li></ul>

<t>up-down-thresholds:</t>

<ul empty="true"><li>
  <t>A list of percentage values, used with 'mirrored-up-down' thresholding, that define the points at which bandwidth updates are triggered for both increasing and decreasing reservable bandwidth across all TE interfaces.</t>
</li></ul>

<t>interface:</t>

<ul empty="true"><li>
  <t>A list of individual TE interfaces configured on the device. Each entry represents a network interface enabled for Traffic Engineering and contains its specific attributes and state. A TE interface is identified by the 'name' leaf, which references an existing network interface on the device.</t>
</li></ul>

<ul empty="true"><li>
  <t>name:</t>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>A leaf that uniquely identifies the TE interface, referencing an existing network interface.</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <t>te-metric:</t>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>An optional leaf that holds the TE metric value associated with this specific interface, used during path computation.</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <t>admin-group-type:</t>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>A choice node that allows configuring administrative groups for the interface using either direct values or named references.</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <t>value-admin-groups:</t>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>A choice for defining administrative groups using direct bitmask values.</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <t>named-admin-groups:</t>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>A list of named administrative groups applied to this TE interface, referencing globally defined named administrative groups.</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <t>srlg-type:</t>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>A choice node that allows configuring Shared Risk Link Groups (SRLGs) for the interface using either direct values or named references.</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>value-srlgs:</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <ul empty="true"><li>
      <t>A list of direct SRLG values that this link is a part of.</t>
    </li></ul>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>named-srlgs:</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <ul empty="true"><li>
      <t>A list of named SRLGs applied to this interface, referencing globally defined named SRLGs.</t>
    </li></ul>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <t>threshold-type:</t>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>An optional enumeration, similar to the global threshold-type, but specifically for this individual TE interface, allowing per-interface override of the global bandwidth flooding behavior.</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <t>delta-percentage:</t>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>An optional percentage value, specific to this interface, used when its threshold-type is 'delta'.</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <t>threshold-specification:</t>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>An optional enumeration, specific to this interface, used when its threshold-type is 'threshold-crossed'.</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <t>up-thresholds:</t>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>A list of percentage values, specific to this interface, used with 'separate-up-down' thresholding for increasing bandwidth.</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <t>down-thresholds:</t>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>A list of percentage values, specific to this interface, used with 'separate-up-down' thresholding for decreasing bandwidth.</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <t>up-down-thresholds:</t>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>A list of percentage values, specific to this interface, used with 'mirrored-up-down' thresholding for both increasing and decreasing bandwidth.</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <t>switching-capabilities:</t>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>A list of switching capabilities supported by this interface.</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>switching-capability:</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <ul empty="true"><li>
      <t>An identityref indicating a specific switching capability (e.g., Packet, Lambda, Fiber).</t>
    </li></ul>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>encoding:</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <ul empty="true"><li>
      <t>An optional identityref indicating the LSP encoding type supported by this capability on the interface.</t>
    </li></ul>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <t>te-advertisements-state:</t>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>A read-only container that provides operational state information related to how this TE interface's attributes are advertised.</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>flood-interval:</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <ul empty="true"><li>
      <t>An optional leaf indicating the configured periodic flooding interval for this interface.</t>
    </li></ul>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>last-flooded-time:</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <ul empty="true"><li>
      <t>An optional leaf showing the time elapsed since the last advertisement flood for this interface.</t>
    </li></ul>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>next-flooded-time:</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <ul empty="true"><li>
      <t>An optional leaf showing the time remaining until the next scheduled advertisement flood for this interface.</t>
    </li></ul>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>last-flooded-trigger:</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <ul empty="true"><li>
      <t>An optional enumeration indicating the event that triggered the last advertisement flood (e.g., link-up, bandwidth-change, periodic-timer).</t>
    </li></ul>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <t>advertised-level-areas:</t>
  </li></ul>
</li></ul>

<ul empty="true"><li>
  <ul empty="true"><li>
    <ul empty="true"><li>
      <t>A list of IGP level-areas in which this TE interface's link state information is advertised.</t>
    </li></ul>
  </li></ul>
</li></ul>

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

<t><xref target="fig-te-dev-tree"/> shows the tree diagram of the device TE YANG data model defined in
the 'ietf-te-device' module.</t>

<figure title="TE Tunnel device model YANG tree diagram" anchor="fig-te-dev-tree"><artwork><![CDATA[
module: ietf-te-device

  augment /te:te:
    +--rw interfaces
       +--rw threshold-type?            enumeration
       +--rw delta-percentage?          rt-types:percentage
       +--rw threshold-specification?   enumeration
       +--rw up-thresholds*             rt-types:percentage
       +--rw down-thresholds*           rt-types:percentage
       +--rw up-down-thresholds*        rt-types:percentage
       +--rw interface* [name]
          +--rw name                                if:interface-ref
          +--rw te-metric?
          |       te-types:te-metric
          +--rw (admin-group-type)?
          |  +--:(value-admin-groups)
          |  |  +--rw (value-admin-group-type)?
          |  |     +--:(admin-groups)
          |  |     |  +--rw admin-group?
          |  |     |          te-types:admin-group
          |  |     +--:(extended-admin-groups)
          |  |              {te-types:extended-admin-groups}?
          |  |        +--rw extended-admin-group?
          |  |                te-types:extended-admin-group
          |  +--:(named-admin-groups)
          |     +--rw named-admin-groups* [named-admin-group]
          |             {te-types:extended-admin-groups,
          |              te-types:named-extended-admin-groups}?
          |        +--rw named-admin-group    leafref
          +--rw (srlg-type)?
          |  +--:(value-srlgs)
          |  |  +--rw values* [value]
          |  |     +--rw value    uint32
          |  +--:(named-srlgs)
          |     +--rw named-srlgs* [named-srlg]
          |             {te-types:named-srlg-groups}?
          |        +--rw named-srlg    leafref
          +--rw threshold-type?                     enumeration
          +--rw delta-percentage?
          |       rt-types:percentage
          +--rw threshold-specification?            enumeration
          +--rw up-thresholds*
          |       rt-types:percentage
          +--rw down-thresholds*
          |       rt-types:percentage
          +--rw up-down-thresholds*
          |       rt-types:percentage
          +--rw switching-capabilities* [switching-capability]
          |  +--rw switching-capability    identityref
          |  +--rw encoding?               identityref
          +--ro te-advertisements-state
             +--ro flood-interval?           uint32
             +--ro last-flooded-time?        uint32
             +--ro next-flooded-time?        uint32
             +--ro last-flooded-trigger?     enumeration
             +--ro advertised-level-areas* [level-area]
                +--ro level-area    uint32
  augment /te:te/te:globals:
    +--rw lsp-install-interval?        uint32
    +--rw lsp-cleanup-interval?        uint32
    +--rw lsp-invalidation-interval?   uint32
  augment /te:te/te:tunnels/te:tunnel:
    +--rw path-invalidation-action?    identityref
    +--rw lsp-install-interval?        uint32
    +--rw lsp-cleanup-interval?        uint32
    +--rw lsp-invalidation-interval?   uint32
  augment /te:te/te:lsps/te:lsp:
    +--ro lsp-timers
    |  +--ro uptime?            uint32
    |  +--ro time-to-install?   uint32
    |  +--ro time-to-destroy?   uint32
    +--ro downstream-info
    |  +--ro nhop?                 te-types:te-tp-id
    |  +--ro outgoing-interface?   if:interface-ref
    |  +--ro neighbor
    |  |  +--ro id?     te-gen-node-id
    |  |  +--ro type?   enumeration
    |  +--ro label?                rt-types:generalized-label
    +--ro upstream-info
       +--ro phop?       te-types:te-tp-id
       +--ro neighbor
       |  +--ro id?     te-gen-node-id
       |  +--ro type?   enumeration
       +--ro label?      rt-types:generalized-label

  rpcs:
    +---x link-state-update
       +---w input
          +---w (filter-type)
             +--:(match-all)
             |  +---w all          empty
             +--:(match-one-interface)
                +---w interface?   if:interface-ref

]]></artwork></figure>

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

<t>The 'ietf-te-device' module imports the following modules:</t>

<t><list style="symbols">
  <t>ietf-interfaces defined in <xref target="RFC8343"/></t>
  <t>ietf-routing-types defined in <xref target="RFC8294"/></t>
  <t>ietf-te-types defined in <xref target="I-D.draft-ietf-teas-rfc8776-update"/></t>
  <t>ietf-te defined in this document</t>
</list></t>

<figure><artwork><![CDATA[
<CODE BEGINS> file "ietf-te-device@2025-10-06.yang"
module ietf-te-device {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-te-device";

  /* RFC Editor Note: Please replace the above line with the URN
   * assigned by IANA and remove this note.
   */

  prefix te-dev;

  /* Import TE module */

  import ietf-te {
    prefix te;
    reference
      "RFCXXXX: A YANG Data Model for Traffic Engineering
       Tunnels and Interfaces";
  }

  /* Import TE types */

  import ietf-te-types {
    prefix te-types;
    reference
      "draft-ietf-teas-rfc8776-update: Common YANG Data Types
       for Traffic Engineering.";
  }
  import ietf-interfaces {
    prefix if;
    reference
      "RFC8343: A YANG Data Model for Interface Management";
  }
  import ietf-routing-types {
    prefix rt-types;
    reference
      "RFC8294: Common YANG Data Types for the Routing Area";
  }

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

     Editor:   Tarek Saad
               <mailto:tsaad.net@gmail.com>

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

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

     Editor:   Himanshu Shah
               <mailto:hshah@ciena.com>

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

     Editor:   Igor Bryskin
               <mailto:i_bryskin@yahoo.com>";

  description
    "This module defines a data model for TE device configurations,
     state, and RPCs. The model fully conforms to the
     Network Management Datastore Architecture (NMDA).

     Copyright (c) 2025 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 Revised 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
     (https://www.rfc-editor.org/info/rfcXXXX); 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 2025-10-06 {
    description
      "Initial revision for the TE device YANG module.";
    reference
      "RFCXXXX: A YANG Data Model for Traffic Engineering Tunnels
       and Interfaces";
  }

  grouping lsp-device-timers {
    description
      "Device TE LSP timers configs.";
    leaf lsp-install-interval {
      type uint32;
      units "seconds";
      description
        "TE LSP installation delay time.";
    }
    leaf lsp-cleanup-interval {
      type uint32;
      units "seconds";
      description
        "TE LSP cleanup delay time.";
    }
    leaf lsp-invalidation-interval {
      type uint32;
      units "seconds";
      description
        "TE LSP path invalidation before taking action delay time.";
    }
  }

  grouping te-igp-flooding-bandwidth-config {
    description
      "Configurable items for igp flooding bandwidth
       threshold configuration.";
    leaf threshold-type {
      type enumeration {
        enum delta {
          description
            "'delta' indicates that the local
             system should flood IGP updates when a
             change in reserved bandwidth >= the specified
             delta occurs on the interface.";
        }
        enum threshold-crossed {
          description
            "THRESHOLD-CROSSED indicates that
             the local system should trigger an update (and
             hence flood) the reserved bandwidth when the
             reserved bandwidth changes such that it crosses,
             or becomes equal to one of the threshold values.";
        }
      }
      description
        "The type of threshold that should be used to specify the
         values at which bandwidth is flooded. 'delta' indicates that
         the local system should flood IGP updates when a change in
         reserved bandwidth >= the specified delta occurs on the
         interface. Where 'threshold-crossed' is specified, the local
         system should trigger an update (and hence flood) the
         reserved bandwidth when the reserved bandwidth changes such
         that it crosses, or becomes equal to one of the threshold
         values.";
    }
    leaf delta-percentage {
      when "../threshold-type = 'delta'" {
        description
          "The percentage delta can only be specified when the
           threshold type is specified to be a percentage delta of
           the reserved bandwidth.";
      }
      type rt-types:percentage;
      description
        "The percentage of the maximum-reservable-bandwidth
         considered as the delta that results in an IGP update
         being flooded.";
    }
    leaf threshold-specification {
      when "../threshold-type = 'threshold-crossed'" {
        description
          "The selection of whether mirrored or separate threshold
           values are to be used requires user-specified thresholds
           to be set.";
      }
      type enumeration {
        enum mirrored-up-down {
          description
            "mirrored-up-down indicates that a single set of
             threshold values should be used for both increasing
             and decreasing bandwidth when determining whether
             to trigger updated bandwidth values to be flooded
             in the IGP TE extensions.";
        }
        enum separate-up-down {
          description
            "separate-up-down indicates that a separate
             threshold values should be used for the increasing
             and decreasing bandwidth when determining whether
             to trigger updated bandwidth values to be flooded
             in the IGP TE extensions.";
        }
      }
      description
        "This value specifies whether a single set of threshold
         values should be used for both increasing and decreasing
         bandwidth when determining whether to trigger updated
         bandwidth values to be flooded in the IGP TE extensions.
         'mirrored-up-down' indicates that a single value (or set of
         values) should be used for both increasing and decreasing
         values, where 'separate-up-down' specifies that the
         increasing and decreasing values will be separately
         specified.";
    }
    leaf-list up-thresholds {
      when "../threshold-type = 'threshold-crossed'"
         + "and ../threshold-specification = 'separate-up-down'" {
        description
          "A list of up-thresholds can only be specified when the
           bandwidth update is triggered based on crossing a
           threshold and separate up and down thresholds are
           required.";
      }
      type rt-types:percentage;
      description
        "The thresholds (expressed as a percentage of the maximum
         reservable bandwidth) at which bandwidth updates are to be
         triggered when the bandwidth is increasing.";
    }
    leaf-list down-thresholds {
      when "../threshold-type = 'threshold-crossed'"
         + "and ../threshold-specification = 'separate-up-down'" {
        description
          "A list of down-thresholds can only be specified when the
           bandwidth update is triggered based on crossing a
           threshold and separate up and down thresholds are
           required.";
      }
      type rt-types:percentage;
      description
        "The thresholds (expressed as a percentage of the maximum
         reservable bandwidth) at which bandwidth updates are to be
         triggered when the bandwidth is decreasing.";
    }
    leaf-list up-down-thresholds {
      when "../threshold-type = 'threshold-crossed'"
         + "and ../threshold-specification = 'mirrored-up-down'" {
        description
          "A list of thresholds corresponding to both increasing
           and decreasing bandwidths can be specified only when an
           update is triggered based on crossing a threshold, and
           the same up and down thresholds are required.";
      }
      type rt-types:percentage;
      description
        "The thresholds (expressed as a percentage of the maximum
         reservable bandwidth of the interface) at which bandwidth
         updates are flooded - used both when the bandwidth is
         increasing and decreasing.";
    }
  }

  /**
   * TE device augmentations
   */
  augment "/te:te" {
    description
      "TE global container.";
    /* TE Interface Configuration Data */
    container interfaces {
      description
        "Configuration data model for TE interfaces.";
      uses te-igp-flooding-bandwidth-config;
      list interface {
        key "name";
        description
          "The list of interfaces enabled for TE.";
        leaf name {
          type if:interface-ref;
          description
            "The reference to interface enabled for TE.";
        }
        /* TE interface parameters */
        leaf te-metric {
          type te-types:te-metric;
          description
            "TE interface metric.";
        }
        choice admin-group-type {
          description
            "TE interface administrative groups
             representation type.";
          case value-admin-groups {
            choice value-admin-group-type {
              description
                "The type of admin-groups.";
              case admin-groups {
                description
                  "Administrative group/Resource
                   class/Color.";
                leaf admin-group {
                  type te-types:admin-group;
                  description
                    "TE interface administrative group.";
                }
              }
              case extended-admin-groups {
                if-feature "te-types:extended-admin-groups";
                description
                  "Extended administrative group/Resource
                   class/Color.";
                leaf extended-admin-group {
                  type te-types:extended-admin-group;
                  description
                    "TE interface extended administrative group.";
                }
              }
            }
          }
          case named-admin-groups {
            list named-admin-groups {
              if-feature "te-types:extended-admin-groups";
              if-feature "te-types:named-extended-admin-groups";
              key "named-admin-group";
              description
                "A list of named admin-group entries.";
              leaf named-admin-group {
                type leafref {
                  path "../../../../te:globals/"
                     + "te:named-admin-groups/te:named-admin-group/"
                     + "te:name";
                }
                description
                  "A named admin-group entry.";
              }
            }
          }
        }
        choice srlg-type {
          description
            "Choice of SRLG configuration.";
          case value-srlgs {
            list values {
              key "value";
              description
                "List of SRLG values that
                 this link is part of.";
              leaf value {
                type uint32 {
                  range "0..4294967295";
                }
                description
                  "Value of the SRLG";
              }
            }
          }
          case named-srlgs {
            list named-srlgs {
              if-feature "te-types:named-srlg-groups";
              key "named-srlg";
              description
                "A list of named SRLG entries.";
              leaf named-srlg {
                type leafref {
                  path "../../../../te:globals/"
                     + "te:named-srlgs/te:named-srlg/te:name";
                }
                description
                  "A named SRLG entry.";
              }
            }
          }
        }
        uses te-igp-flooding-bandwidth-config;
        list switching-capabilities {
          key "switching-capability";
          description
            "List of interface capabilities for this interface.";
          leaf switching-capability {
            type identityref {
              base te-types:switching-capabilities;
            }
            description
              "Switching Capability for this interface.";
          }
          leaf encoding {
            type identityref {
              base te-types:lsp-encoding-types;
            }
            description
              "Encoding supported by this interface.";
          }
        }
        container te-advertisements-state {
          config false;
          description
            "TE interface advertisements state container.";
          leaf flood-interval {
            type uint32;
            description
              "The periodic flooding interval.";
          }
          leaf last-flooded-time {
            type uint32;
            units "seconds";
            description
              "Time elapsed since last flooding in seconds.";
          }
          leaf next-flooded-time {
            type uint32;
            units "seconds";
            description
              "Time remained for next flooding in seconds.";
          }
          leaf last-flooded-trigger {
            type enumeration {
              enum link-up {
                description
                  "Link-up flooding trigger.";
              }
              enum link-down {
                description
                  "Link-down flooding trigger.";
              }
              enum threshold-up {
                description
                  "Bandwidth reservation up threshold.";
              }
              enum threshold-down {
                description
                  "Bandwidth reservation down threshold.";
              }
              enum bandwidth-change {
                description
                  "Bandwidth capacity change.";
              }
              enum user-initiated {
                description
                  "Initiated by user.";
              }
              enum srlg-change {
                description
                  "SRLG property change.";
              }
              enum periodic-timer {
                description
                  "Periodic timer expired.";
              }
            }
            default "periodic-timer";
            description
              "Trigger for the last flood.";
          }
          list advertised-level-areas {
            key "level-area";
            description
              "List of level-areas that the TE interface is
               advertised in.";
            leaf level-area {
              type uint32;
              description
                "The IGP area or level where the TE interface link
                 state is advertised in.";
            }
          }
        }
      }
    }
  }

  /* TE globals device augmentation */

  augment "/te:te/te:globals" {
    description
      "Global TE device specific configuration parameters.";
    uses lsp-device-timers;
  }

  /* TE tunnels device configuration augmentation */

  augment "/te:te/te:tunnels/te:tunnel" {
    description
      "Tunnel device dependent augmentation.";
    leaf path-invalidation-action {
      type identityref {
        base te-types:path-invalidation-action-type;
      }
      description
        "Tunnel path invalidation action.";
    }
    uses lsp-device-timers;
  }

  /* TE LSPs device state augmentation */

  augment "/te:te/te:lsps/te:lsp" {
    description
      "TE LSP device dependent augmentation.";
    container lsp-timers {
      when "../te:origin-type = 'ingress'" {
        description
          "Applicable to ingress LSPs only.";
      }
      description
        "Ingress LSP timers.";
      leaf uptime {
        type uint32;
        units "seconds";
        description
          "The LSP uptime.";
      }
      leaf time-to-install {
        type uint32;
        units "seconds";
        description
          "The time remaining for a new LSP to be instantiated
           in forwarding to carry traffic.";
      }
      leaf time-to-destroy {
        type uint32;
        units "seconds";
        description
          "The time remaining for an existing LSP to be torn down.";
      }
    }
    container downstream-info {
      when "../te:origin-type != 'egress'" {
        description
          "Downstream information of the LSP.";
      }
      description
        "Downstream information.";
      leaf nhop {
        type te-types:te-tp-id;
        description
          "Downstream next-hop address.";
      }
      leaf outgoing-interface {
        type if:interface-ref;
        description
          "Downstream interface.";
      }
      container neighbor {
        uses te-types:te-generic-node-id;
        description
          "Downstream neighbor address.";
      }
      leaf label {
        type rt-types:generalized-label;
        description
          "Downstream label.";
      }
    }
    container upstream-info {
      when "../te:origin-type != 'ingress'" {
        description
          "Upstream information of the LSP.";
      }
      description
        "Upstream information.";
      leaf phop {
        type te-types:te-tp-id;
        description
          "Upstream next-hop or previous-hop address.";
      }
      container neighbor {
        uses te-types:te-generic-node-id;
        description
          "Upstream neighbor address.";
      }
      leaf label {
        type rt-types:generalized-label;
        description
          "Upstream label.";
      }
    }
  }

  /* TE interfaces RPCs/execution Data */

  rpc link-state-update {
    description
      "Triggers a link state update for the specific interface.";
    input {
      choice filter-type {
        mandatory true;
        description
          "Filter choice.";
        case match-all {
          leaf all {
            type empty;
            mandatory true;
            description
              "Match all TE interfaces.";
          }
        }
        case match-one-interface {
          leaf interface {
            type if:interface-ref;
            description
              "Match a specific TE interface.";
          }
        }
      }
    }
  }
}
<CODE ENDS>
]]></artwork></figure>

</section>
</section>
<section anchor="notifications"><name>Notifications</name>

<t>Notifications are a key component of any topology data model.</t>

<t><xref target="RFC8639"/> and <xref target="RFC8641"/> define a subscription mechanism and a push
mechanism for YANG datastores.  These mechanisms currently allow the
user to:</t>

<t><list style="symbols">
  <t>Subscribe to notifications on a per-client basis.</t>
  <t>Specify subtree filters or XML Path Language (XPath) filters so
that only contents of interest will be sent.</t>
  <t>Specify either periodic or on-demand notifications.</t>
</list></t>

</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 registrations are
requested to be made.</t>

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

   URI: urn:ietf:params:xml:ns:yang:ietf-te-device
   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-te
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-te
   Prefix:     te
   Reference:  RFCXXXX

   Name:       ietf-te-device
   Namespace:  urn:ietf:params:xml:ns:yang:ietf-te-device
   Prefix:     te-device
   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 this YANG module 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., edit-config) 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>"/te/globals":  This module specifies the global TE configurations on a device.
Unauthorized access to this container could cause the device to ignore packets
it should receive and process.</t>

<t>"/te/tunnels":  This list specifies the configuration and state of TE Tunnels
present on the device or controller.  Unauthorized access to this list could
cause the device to ignore packets it should receive and process. An attacker
may also use state to derive information about the network topology,
and subsequently orchestrate further attacks.</t>

<t>"/te/interfaces":  This list specifies the configuration and state TE interfaces
on a device. Unauthorized access to this list could cause the device to ignore packets it
should receive and process.</t>

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

<t>"/te/lsps": this list contains information state about established LSPs in the network.
An attacker can use this information to derive information about the network topology,
and subsequently orchestrate further attacks.</t>

<t>Some of the RPC operations in this YANG module may be considered sensitive or
vulnerable in some network environments. It is thus important to control access
to these operations. These are the operations and their
sensitivity/vulnerability:</t>

<t>"/te/tunnels-actions": using this RPC, an attacker can modify existing paths that
may be carrying live traffic, and hence result in interruption to services
carried over the network.</t>

<t>"/te/tunnels-path-compute": using this RPC, an attacker can retrieve sensitive
information about the network provider which can be used to orchestrate further
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 the  members of the multi-vendor YANG design
team who are involved in the definition of this model.</t>

<t>The authors would like to thank Tom Petch and Adrian Farrel for reviewing and
providing useful feedback about the document. The authors would also like to
thank Loa Andersson, Lou Berger, Sergio Belotti, Italo Busi, Carlo Perocchio,
Francesco Lazzeri, Aihua Guo, Dhruv Dhody, and Raqib Jones for providing
feedback on this document.</t>

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

<figure><artwork><![CDATA[
   Oscar Gonzalez de Dios
   Telefonica

   Email: oscar.gonzalezdedios@telefonica.com

   Himanshu Shah
   Ciena

   Email: hshah@ciena.com


   Xia Chen
   Huawei Technologies

   Email: jescia.chenxia@huawei.com


   Bin Wen
   Comcast

   Email: Bin_Wen@cable.comcast.com

]]></artwork></figure>

</section>


  </middle>

  <back>


<references title='References' anchor="sec-combined-references">

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



<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="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="RFC6107">
  <front>
    <title>Procedures for Dynamically Signaled Hierarchical Label Switched Paths</title>
    <author fullname="K. Shiomoto" initials="K." role="editor" surname="Shiomoto"/>
    <author fullname="A. Farrel" initials="A." role="editor" surname="Farrel"/>
    <date month="February" year="2011"/>
    <abstract>
      <t>Label Switched Paths (LSPs) set up in Multiprotocol Label Switching (MPLS) or Generalized MPLS (GMPLS) networks can be used to form links to carry traffic in those networks or in other (client) networks.</t>
      <t>Protocol mechanisms already exist to facilitate the establishment of such LSPs and to bundle traffic engineering (TE) links to reduce the load on routing protocols. This document defines extensions to those mechanisms to support identifying the use to which such LSPs are to be put and to enable the TE link endpoints to be assigned addresses or unnumbered identifiers during the signaling process. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6107"/>
  <seriesInfo name="DOI" value="10.17487/RFC6107"/>
</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="ITU_G.808.1" >
  <front>
    <title>Generic protection switching - Linear trail and subnetwork protection</title>
    <author >
      <organization>ITU-T Recommendation G.808.1</organization>
    </author>
    <date year="2014" month="May"/>
  </front>
  <seriesInfo name="ITU-T G.808.1" value=""/>
</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="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="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="I-D.draft-ietf-teas-rfc8776-update">
   <front>
      <title>Common YANG Data Types for Traffic Engineering</title>
      <author fullname="Italo Busi" initials="I." surname="Busi">
         <organization>Huawei</organization>
      </author>
      <author fullname="Aihua Guo" initials="A." surname="Guo">
         <organization>Futurewei Technologies</organization>
      </author>
      <author fullname="Xufeng Liu" initials="X." surname="Liu">
         <organization>Alef Edge</organization>
      </author>
      <author fullname="Tarek Saad" initials="T." surname="Saad">
         <organization>Cisco Systems Inc.</organization>
      </author>
      <author fullname="Igor Bryskin" initials="I." surname="Bryskin">
         <organization>Individual</organization>
      </author>
      <date day="29" month="August" year="2025"/>
      <abstract>
	 <t>   This document defines a collection of common data types, identities,
   and groupings in YANG data modeling language.  These derived common
   data types, identities and groupings are intended to be imported by
   other modules, e.g., those which model the Traffic Engineering (TE)
   configuration and state capabilities.

   This document obsoletes RFC 8776.

	 </t>
      </abstract>
   </front>
   <seriesInfo name="Internet-Draft" value="draft-ietf-teas-rfc8776-update-18"/>
   
</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="RFC8342">
  <front>
    <title>Network Management Datastore Architecture (NMDA)</title>
    <author fullname="M. Bjorklund" initials="M." surname="Bjorklund"/>
    <author fullname="J. Schoenwaelder" initials="J." surname="Schoenwaelder"/>
    <author fullname="P. Shafer" initials="P." surname="Shafer"/>
    <author fullname="K. Watsen" initials="K." surname="Watsen"/>
    <author fullname="R. Wilton" initials="R." surname="Wilton"/>
    <date month="March" year="2018"/>
    <abstract>
      <t>Datastores are a fundamental concept binding the data models written in the YANG data modeling language to network management protocols such as the Network Configuration Protocol (NETCONF) and RESTCONF. This document defines an architectural framework for datastores based on the experience gained with the initial simpler model, addressing requirements that were not well supported in the initial model. This document updates RFC 7950.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8342"/>
  <seriesInfo name="DOI" value="10.17487/RFC8342"/>
</reference>

<reference anchor="RFC9012">
  <front>
    <title>The BGP Tunnel Encapsulation Attribute</title>
    <author fullname="K. Patel" initials="K." surname="Patel"/>
    <author fullname="G. Van de Velde" initials="G." surname="Van de Velde"/>
    <author fullname="S. Sangli" initials="S." surname="Sangli"/>
    <author fullname="J. Scudder" initials="J." surname="Scudder"/>
    <date month="April" year="2021"/>
    <abstract>
      <t>This document defines a BGP path attribute known as the "Tunnel Encapsulation attribute", which can be used with BGP UPDATEs of various Subsequent Address Family Identifiers (SAFIs) to provide information needed to create tunnels and their corresponding encapsulation headers. It provides encodings for a number of tunnel types, along with procedures for choosing between alternate tunnels and routing packets into tunnels.</t>
      <t>This document obsoletes RFC 5512, which provided an earlier definition of the Tunnel Encapsulation attribute. RFC 5512 was never deployed in production. Since RFC 5566 relies on RFC 5512, it is likewise obsoleted. This document updates RFC 5640 by indicating that the Load-Balancing Block sub-TLV may be included in any Tunnel Encapsulation attribute where load balancing is desired.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9012"/>
  <seriesInfo name="DOI" value="10.17487/RFC9012"/>
</reference>

<reference anchor="RFC8345">
  <front>
    <title>A YANG Data Model for Network Topologies</title>
    <author fullname="A. Clemm" initials="A." surname="Clemm"/>
    <author fullname="J. Medved" initials="J." surname="Medved"/>
    <author fullname="R. Varga" initials="R." surname="Varga"/>
    <author fullname="N. Bahadur" initials="N." surname="Bahadur"/>
    <author fullname="H. Ananthakrishnan" initials="H." surname="Ananthakrishnan"/>
    <author fullname="X. Liu" initials="X." surname="Liu"/>
    <date month="March" year="2018"/>
    <abstract>
      <t>This document defines an abstract (generic, or base) YANG data model for network/service topologies and inventories. The data model serves as a base model that is augmented with technology-specific details in other, more specific topology and inventory data models.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8345"/>
  <seriesInfo name="DOI" value="10.17487/RFC8345"/>
</reference>

<reference anchor="RFC8795">
  <front>
    <title>YANG Data Model for Traffic Engineering (TE) Topologies</title>
    <author fullname="X. Liu" initials="X." surname="Liu"/>
    <author fullname="I. Bryskin" initials="I." surname="Bryskin"/>
    <author fullname="V. Beeram" initials="V." surname="Beeram"/>
    <author fullname="T. Saad" initials="T." surname="Saad"/>
    <author fullname="H. Shah" initials="H." surname="Shah"/>
    <author fullname="O. Gonzalez de Dios" initials="O." surname="Gonzalez de Dios"/>
    <date month="August" year="2020"/>
    <abstract>
      <t>This document defines a YANG data model for representing, retrieving, and manipulating Traffic Engineering (TE) Topologies. The model serves as a base model that other technology-specific TE topology models can augment.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8795"/>
  <seriesInfo name="DOI" value="10.17487/RFC8795"/>
</reference>

<reference anchor="RFC4206">
  <front>
    <title>Label Switched Paths (LSP) Hierarchy with Generalized Multi-Protocol Label Switching (GMPLS) Traffic Engineering (TE)</title>
    <author fullname="K. Kompella" initials="K." surname="Kompella"/>
    <author fullname="Y. Rekhter" initials="Y." surname="Rekhter"/>
    <date month="October" year="2005"/>
    <abstract>
      <t>To improve scalability of Generalized Multi-Protocol Label Switching (GMPLS) it may be useful to aggregate Label Switched Paths (LSPs) by creating a hierarchy of such LSPs. A way to create such a hierarchy is by (a) a Label Switching Router (LSR) creating a Traffic Engineering Label Switched Path (TE LSP), (b) the LSR forming a forwarding adjacency (FA) out of that LSP (by advertising this LSP as a Traffic Engineering (TE) link into the same instance of ISIS/OSPF as the one that was used to create the LSP), (c) allowing other LSRs to use FAs for their path computation, and (d) nesting of LSPs originated by other LSRs into that LSP (by using the label stack construct).</t>
      <t>This document describes the mechanisms to accomplish this. [PROPOSED STANDARD]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4206"/>
  <seriesInfo name="DOI" value="10.17487/RFC4206"/>
</reference>

<reference anchor="RFC4872">
  <front>
    <title>RSVP-TE Extensions in Support of End-to-End Generalized Multi-Protocol Label Switching (GMPLS) Recovery</title>
    <author fullname="J.P. Lang" initials="J.P." role="editor" surname="Lang"/>
    <author fullname="Y. Rekhter" initials="Y." role="editor" surname="Rekhter"/>
    <author fullname="D. Papadimitriou" initials="D." role="editor" surname="Papadimitriou"/>
    <date month="May" year="2007"/>
    <abstract>
      <t>This document describes protocol-specific procedures and extensions for Generalized Multi-Protocol Label Switching (GMPLS) Resource ReSerVation Protocol - Traffic Engineering (RSVP-TE) signaling to support end-to-end Label Switched Path (LSP) recovery that denotes protection and restoration. A generic functional description of GMPLS recovery can be found in a companion document, RFC 4426. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4872"/>
  <seriesInfo name="DOI" value="10.17487/RFC4872"/>
</reference>

<reference anchor="RFC6780">
  <front>
    <title>RSVP ASSOCIATION Object Extensions</title>
    <author fullname="L. Berger" initials="L." surname="Berger"/>
    <author fullname="F. Le Faucheur" initials="F." surname="Le Faucheur"/>
    <author fullname="A. Narayanan" initials="A." surname="Narayanan"/>
    <date month="October" year="2012"/>
    <abstract>
      <t>The RSVP ASSOCIATION object was defined in the context of GMPLS-controlled Label Switched Paths (LSPs). In this context, the object is used to associate recovery LSPs with the LSP they are protecting. This object also has broader applicability as a mechanism to associate RSVP state. This document defines how the ASSOCIATION object can be more generally applied. This document also defines Extended ASSOCIATION objects that, in particular, can be used in the context of the MPLS Transport Profile (MPLS-TP). This document updates RFC 2205, RFC 3209, and RFC 3473. It also generalizes the definition of the Association ID field defined in RFC 4872. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="6780"/>
  <seriesInfo name="DOI" value="10.17487/RFC6780"/>
</reference>

<reference anchor="RFC7471">
  <front>
    <title>OSPF Traffic Engineering (TE) Metric Extensions</title>
    <author fullname="S. Giacalone" initials="S." surname="Giacalone"/>
    <author fullname="D. Ward" initials="D." surname="Ward"/>
    <author fullname="J. Drake" initials="J." surname="Drake"/>
    <author fullname="A. Atlas" initials="A." surname="Atlas"/>
    <author fullname="S. Previdi" initials="S." surname="Previdi"/>
    <date month="March" year="2015"/>
    <abstract>
      <t>In certain networks, such as, but not limited to, financial information networks (e.g., stock market data providers), network performance information (e.g., link propagation delay) is becoming critical to data path selection.</t>
      <t>This document describes common extensions to RFC 3630 "Traffic Engineering (TE) Extensions to OSPF Version 2" and RFC 5329 "Traffic Engineering Extensions to OSPF Version 3" to enable network performance information to be distributed in a scalable fashion. The information distributed using OSPF TE Metric Extensions can then be used to make path selection decisions based on network performance.</t>
      <t>Note that this document only covers the mechanisms by which network performance information is distributed. The mechanisms for measuring network performance information or using that information, once distributed, are outside the scope of this document.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7471"/>
  <seriesInfo name="DOI" value="10.17487/RFC7471"/>
</reference>

<reference anchor="RFC8570">
  <front>
    <title>IS-IS Traffic Engineering (TE) Metric Extensions</title>
    <author fullname="L. Ginsberg" initials="L." role="editor" surname="Ginsberg"/>
    <author fullname="S. Previdi" initials="S." role="editor" surname="Previdi"/>
    <author fullname="S. Giacalone" initials="S." surname="Giacalone"/>
    <author fullname="D. Ward" initials="D." surname="Ward"/>
    <author fullname="J. Drake" initials="J." surname="Drake"/>
    <author fullname="Q. Wu" initials="Q." surname="Wu"/>
    <date month="March" year="2019"/>
    <abstract>
      <t>In certain networks, such as, but not limited to, financial information networks (e.g., stock market data providers), network-performance criteria (e.g., latency) are becoming as critical to data-path selection as other metrics.</t>
      <t>This document describes extensions to IS-IS Traffic Engineering Extensions (RFC 5305). These extensions provide a way to distribute and collect network-performance information in a scalable fashion. The information distributed using IS-IS TE Metric Extensions can then be used to make path-selection decisions based on network performance.</t>
      <t>Note that this document only covers the mechanisms with which network-performance information is distributed. The mechanisms for measuring network performance or acting on that information, once distributed, are outside the scope of this document.</t>
      <t>This document obsoletes RFC 7810.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8570"/>
  <seriesInfo name="DOI" value="10.17487/RFC8570"/>
</reference>

<reference anchor="RFC8232">
  <front>
    <title>Optimizations of Label Switched Path State Synchronization Procedures for a Stateful PCE</title>
    <author fullname="E. Crabbe" initials="E." surname="Crabbe"/>
    <author fullname="I. Minei" initials="I." surname="Minei"/>
    <author fullname="J. Medved" initials="J." surname="Medved"/>
    <author fullname="R. Varga" initials="R." surname="Varga"/>
    <author fullname="X. Zhang" initials="X." surname="Zhang"/>
    <author fullname="D. Dhody" initials="D." surname="Dhody"/>
    <date month="September" year="2017"/>
    <abstract>
      <t>A stateful Path Computation Element (PCE) has access to not only the information disseminated by the network's Interior Gateway Protocol (IGP) but also the set of active paths and their reserved resources for its computation. The additional Label Switched Path (LSP) state information allows the PCE to compute constrained paths while considering individual LSPs and their interactions. This requires a State Synchronization mechanism between the PCE and the network, the PCE and Path Computation Clients (PCCs), and cooperating PCEs. The basic mechanism for State Synchronization is part of the stateful PCE specification. This document presents motivations for optimizations to the base State Synchronization procedure and specifies the required Path Computation Element Communication Protocol (PCEP) extensions.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8232"/>
  <seriesInfo name="DOI" value="10.17487/RFC8232"/>
</reference>

<reference anchor="RFC7271">
  <front>
    <title>MPLS Transport Profile (MPLS-TP) Linear Protection to Match the Operational Expectations of Synchronous Digital Hierarchy, Optical Transport Network, and Ethernet Transport Network Operators</title>
    <author fullname="J. Ryoo" initials="J." role="editor" surname="Ryoo"/>
    <author fullname="E. Gray" initials="E." role="editor" surname="Gray"/>
    <author fullname="H. van Helvoort" initials="H." surname="van Helvoort"/>
    <author fullname="A. D'Alessandro" initials="A." surname="D'Alessandro"/>
    <author fullname="T. Cheung" initials="T." surname="Cheung"/>
    <author fullname="E. Osborne" initials="E." surname="Osborne"/>
    <date month="June" year="2014"/>
    <abstract>
      <t>This document describes alternate mechanisms to perform some of the functions of MPLS Transport Profile (MPLS-TP) linear protection defined in RFC 6378, and also defines additional mechanisms. The purpose of these alternate and additional mechanisms is to provide operator control and experience that more closely models the behavior of linear protection seen in other transport networks.</t>
      <t>This document also introduces capabilities and modes for linear protection. A capability is an individual behavior, and a mode is a particular combination of capabilities. Two modes are defined in this document: Protection State Coordination (PSC) mode and Automatic Protection Switching (APS) mode.</t>
      <t>This document describes the behavior of the PSC protocol including priority logic and state machine when all the capabilities associated with the APS mode are enabled.</t>
      <t>This document updates RFC 6378 in that the capability advertisement method defined here is an addition to that document.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7271"/>
  <seriesInfo name="DOI" value="10.17487/RFC7271"/>
</reference>

<reference anchor="RFC8234">
  <front>
    <title>Updates to MPLS Transport Profile (MPLS-TP) Linear Protection in Automatic Protection Switching (APS) Mode</title>
    <author fullname="J. Ryoo" initials="J." surname="Ryoo"/>
    <author fullname="T. Cheung" initials="T." surname="Cheung"/>
    <author fullname="H. van Helvoort" initials="H." surname="van Helvoort"/>
    <author fullname="I. Busi" initials="I." surname="Busi"/>
    <author fullname="G. Wen" initials="G." surname="Wen"/>
    <date month="August" year="2017"/>
    <abstract>
      <t>This document contains updates to MPLS Transport Profile (MPLS-TP) linear protection in Automatic Protection Switching (APS) mode defined in RFC 7271. The updates provide rules related to the initialization of the Protection State Coordination (PSC) Control Logic (in which the state machine resides) when operating in APS mode and clarify the operation related to state transition table lookup.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="8234"/>
  <seriesInfo name="DOI" value="10.17487/RFC8234"/>
</reference>

<reference anchor="RFC7308">
  <front>
    <title>Extended Administrative Groups in MPLS Traffic Engineering (MPLS-TE)</title>
    <author fullname="E. Osborne" initials="E." surname="Osborne"/>
    <date month="July" year="2014"/>
    <abstract>
      <t>MPLS Traffic Engineering (MPLS-TE) advertises 32 administrative groups (commonly referred to as "colors" or "link colors") using the Administrative Group sub-TLV. This is defined for OSPFv2 (RFC 3630), OSPFv3 (RFC 5329) and IS-IS (RFC 5305).</t>
      <t>This document adds a sub-TLV to the IGP TE extensions, "Extended Administrative Group". This sub-TLV provides for additional administrative groups (link colors) beyond the current limit of 32.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="7308"/>
  <seriesInfo name="DOI" value="10.17487/RFC7308"/>
</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="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="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>

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




    </references>

    <references title='Informative References' anchor="sec-informative-references">



<reference anchor="RFC9256">
  <front>
    <title>Segment Routing Policy Architecture</title>
    <author fullname="C. Filsfils" initials="C." surname="Filsfils"/>
    <author fullname="K. Talaulikar" initials="K." role="editor" surname="Talaulikar"/>
    <author fullname="D. Voyer" initials="D." surname="Voyer"/>
    <author fullname="A. Bogdanov" initials="A." surname="Bogdanov"/>
    <author fullname="P. Mattes" initials="P." surname="Mattes"/>
    <date month="July" year="2022"/>
    <abstract>
      <t>Segment Routing (SR) allows a node to steer a packet flow along any path. Intermediate per-path states are eliminated thanks to source routing. SR Policy is an ordered list of segments (i.e., instructions) that represent a source-routed policy. Packet flows are steered into an SR Policy on a node where it is instantiated called a headend node. The packets steered into an SR Policy carry an ordered list of segments associated with that SR Policy.</t>
      <t>This document updates RFC 8402 as it details the concepts of SR Policy and steering into an SR Policy.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="9256"/>
  <seriesInfo name="DOI" value="10.17487/RFC9256"/>
</reference>

<reference anchor="RFC4874">
  <front>
    <title>Exclude Routes - Extension to Resource ReserVation Protocol-Traffic Engineering (RSVP-TE)</title>
    <author fullname="CY. Lee" initials="CY." surname="Lee"/>
    <author fullname="A. Farrel" initials="A." surname="Farrel"/>
    <author fullname="S. De Cnodder" initials="S." surname="De Cnodder"/>
    <date month="April" year="2007"/>
    <abstract>
      <t>This document specifies ways to communicate route exclusions during path setup using Resource ReserVation Protocol-Traffic Engineering (RSVP-TE).</t>
      <t>The RSVP-TE specification, "RSVP-TE: Extensions to RSVP for LSP Tunnels" (RFC 3209) and GMPLS extensions to RSVP-TE, "Generalized Multi-Protocol Label Switching (GMPLS) Signaling Resource ReserVation Protocol-Traffic Engineering (RSVP-TE) Extensions" (RFC 3473) allow abstract nodes and resources to be explicitly included in a path setup, but not to be explicitly excluded.</t>
      <t>In some networks where precise explicit paths are not computed at the head end, it may be useful to specify and signal abstract nodes and resources that are to be explicitly excluded from routes. These exclusions may apply to the whole path, or to parts of a path between two abstract nodes specified in an explicit path. How Shared Risk Link Groups (SRLGs) can be excluded is also specified in this document. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4874"/>
  <seriesInfo name="DOI" value="10.17487/RFC4874"/>
</reference>

<reference anchor="RFC3945">
  <front>
    <title>Generalized Multi-Protocol Label Switching (GMPLS) Architecture</title>
    <author fullname="E. Mannie" initials="E." role="editor" surname="Mannie"/>
    <date month="October" year="2004"/>
    <abstract>
      <t>Future data and transmission networks will consist of elements such as routers, switches, Dense Wavelength Division Multiplexing (DWDM) systems, Add-Drop Multiplexors (ADMs), photonic cross-connects (PXCs), optical cross-connects (OXCs), etc. that will use Generalized Multi-Protocol Label Switching (GMPLS) to dynamically provision resources and to provide network survivability using protection and restoration techniques.</t>
      <t>This document describes the architecture of GMPLS. GMPLS extends MPLS to encompass time-division (e.g., SONET/SDH, PDH, G.709), wavelength (lambdas), and spatial switching (e.g., incoming port or fiber to outgoing port or fiber). The focus of GMPLS is on the control plane of these various layers since each of them can use physically diverse data or forwarding planes. The intention is to cover both the signaling and the routing part of that control plane. [STANDARDS-TRACK]</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="3945"/>
  <seriesInfo name="DOI" value="10.17487/RFC3945"/>
</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="RFC4427">
  <front>
    <title>Recovery (Protection and Restoration) Terminology for Generalized Multi-Protocol Label Switching (GMPLS)</title>
    <author fullname="E. Mannie" initials="E." role="editor" surname="Mannie"/>
    <author fullname="D. Papadimitriou" initials="D." role="editor" surname="Papadimitriou"/>
    <date month="March" year="2006"/>
    <abstract>
      <t>This document defines a common terminology for Generalized Multi-Protocol Label Switching (GMPLS)-based recovery mechanisms (i.e., protection and restoration). The terminology is independent of the underlying transport technologies covered by GMPLS. This memo provides information for the Internet community.</t>
    </abstract>
  </front>
  <seriesInfo name="RFC" value="4427"/>
  <seriesInfo name="DOI" value="10.17487/RFC4427"/>
</reference>




    </references>

</references>


<?line 3675?>

<section anchor="AppendixA"><name>Data Tree Examples</name>

<t>This section contains examples of use of the model with RESTCONF <xref target="RFC8040"/> and JSON encoding.</t>

<t>For the example we will use a 4-node MPLS network were RSVP-TE MPLS Tunnels can be setup. The
loopbacks of each router are shown. The network in <xref target="AppFig-Topo"/> will be used in the examples
described in the following sections.</t>

<figure title="TE network used in data tree examples" anchor="AppFig-Topo"><artwork><![CDATA[
 192.0.2.1        192.0.2.2      192.0.2.4
 +-------+        +-------+      +-------+
 |       |        |       |      |       |
 |   A   +--------+   B   +------+   D   |
 +---+---+        +-------+      +---+---+
     |                               |
     |            +-------+          |
     |            |       |          |
     +------------+   C   +----------+
                  |       |
                  +-------+
                  192.0.2.3
]]></artwork></figure>

<section anchor="TeTunnel"><name>Basic Tunnel Setup</name>

<t>This example uses the TE Tunnel YANG data model defined in this document to create an
RSVP-TE signaled Tunnel of packet LSP encoding type. First, the TE Tunnel is created with no specific restrictions or constraints (e.g., protection or restoration).
The TE Tunnel ingresses on router A and egresses on router D.</t>

<t>In this case, the TE Tunnel is created without specifying additional information about the primary paths.</t>

<figure><artwork><![CDATA[
POST /restconf/data/ietf-te:te/tunnels HTTP/1.1
    Host: example.com
    Accept: application/yang-data+json
    Content-Type: application/yang-data+json

{
  "ietf-te:tunnel": [
    {
      "name": "Example_LSP_Tunnel_A_2",
      "admin-state": "ietf-te-types:tunnel-admin-state-up",
      "encoding": "ietf-te-types:lsp-encoding-packet",
      "source": {
        "te-node-id": "192.0.2.1"
      },
      "destination": {
        "te-node-id": "192.0.2.4"
      },
      "bidirectional": false,
      "signaling-type": "ietf-te-types:path-setup-rsvp"
    }
  ]
}

{
  "ietf-te:tunnel": [
    {
      "name": "Example_LSP_Tunnel_A_2 (IPv6)",
      "admin-state": "ietf-te-types:tunnel-admin-state-up",
      "encoding": "ietf-te-types:lsp-encoding-packet",
      "source": {
        "te-node-id": "2001:db8::1"
      },
      "destination": {
        "te-node-id": "2001:db8::4"
      },
      "bidirectional": false,
      "signaling-type": "ietf-te-types:path-setup-rsvp"
    }
  ]
}

]]></artwork></figure>

</section>
<section anchor="global-named-path-constraints"><name>Global Named Path Constraints</name>

<t>This example uses the YANG data model to create a 'named path constraint' that can be referenced by TE Tunnels.
The path constraint, in this case, limits the TE Tunnel hops for the computed path.</t>

<figure><artwork><![CDATA[
POST /restconf/data/ietf-te:te/globals/named-path-constraints
     HTTP/1.1
    Host: example.com
    Accept: application/yang-data+json
    Content-Type: application/yang-data+json

{
  "ietf-te:named-path-constraint": [
    {
      "name": "max-hop-3",
      "path-metric-bounds": {
        "path-metric-bound": [
          {
            "metric-type": "ietf-te-types:path-metric-hop",
            "upper-bound": "3"
          }
        ]
      }
    }
  ]
}
]]></artwork></figure>

</section>
<section anchor="tunnel-with-global-path-constraint"><name>Tunnel with Global Path Constraint</name>

<t>In this example, the previously created 'named path constraint' is applied to the TE Tunnel created in <xref target="TeTunnel"/>.</t>

<figure><artwork><![CDATA[
POST /restconf/data/ietf-te:te/tunnels HTTP/1.1
    Host: example.com
    Accept: application/yang-data+json
    Content-Type: application/yang-data+json

{
  "ietf-te:tunnel": [
    {
      "name": "Example_LSP_Tunnel_A_4_1",
      "description": "Simple_LSP_with_named_path",
      "admin-state": "ietf-te-types:tunnel-admin-state-up",
      "encoding": "ietf-te-types:lsp-encoding-packet",
      "source": {
        "te-node-id": "192.0.2.1"
      },
      "destination": {
        "te-node-id": "192.0.2.4"
      },
      "signaling-type": "ietf-te-types:path-setup-rsvp",
      "primary-paths": {
        "primary-path": [
          {
            "name": "Simple_LSP_1",
            "use-path-computation": true,
            "path-scope": "ietf-te-types:path-scope-end-to-end",
            "named-path-constraint": "max-hop-3"
          }
        ]
      }
    }
  ]
}
]]></artwork></figure>

</section>
<section anchor="tunnel-with-per-tunnel-path-constraint"><name>Tunnel with Per-tunnel Path Constraint</name>

<t>In this example, the a per-tunnel path constraint is explicitly indicated under the TE Tunnel created in <xref target="TeTunnel"/> to constrain the computed path for the tunnel.</t>

<figure><artwork><![CDATA[
POST /restconf/data/ietf-te:te/tunnels HTTP/1.1
    Host: example.com
    Accept: application/yang-data+json
    Content-Type: application/yang-data+json

{
  "ietf-te:tunnel": [
    {
      "name": "Example_LSP_Tunnel_A_4_2",
      "admin-state": "ietf-te-types:tunnel-admin-state-up",
      "encoding": "ietf-te-types:lsp-encoding-packet",
      "source": {
        "te-node-id": "192.0.2.1"
      },
      "destination": {
        "te-node-id": "192.0.2.4"
      },
      "bidirectional": false,
      "signaling-type": "ietf-te-types:path-setup-rsvp",
      "primary-paths": {
        "primary-path": [
          {
            "name": "path1",
            "path-scope": "ietf-te-types:path-scope-end-to-end",
            "path-metric-bounds": {
              "path-metric-bound": [
                {
                  "metric-type": "ietf-te-types:path-metric-hop",
                  "upper-bound": "3"
                }
              ]
            }
          }
        ]
      }
    }
  ]
}
]]></artwork></figure>

</section>
<section anchor="tunnel-state"><name>Tunnel State</name>

<t>In this example, the 'GET' query is sent to return the state stored about the tunnel.</t>

<figure><artwork><![CDATA[
GET  /restconf/data/ietf-te:te/tunnels +
     /tunnel="Example_LSP_Tunnel_A_4_1"
     /primary-paths/ HTTP/1.1
    Host: example.com
    Accept: application/yang-data+json
]]></artwork></figure>

<t>The request, with status code 200 would include, for example, the following json:</t>

<figure><artwork><![CDATA[
{
  "ietf-te:primary-path": [
    {
      "name": "path1",
      "path-computation-method": "ietf-te-types:path-locally-computed",
      "path-scope": "ietf-te-types:path-scope-end-to-end",
      "computed-paths-properties": {
        "computed-path-properties": [
          {
            "k-index": 1,
            "path-properties": {
              "path-route-objects": {
                "path-route-object": [
                  {
                    "index": 1,
                    "numbered-node-hop": {
                      "node-id": "192.0.2.2",
                      "hop-type": "strict"
                    }
                  },
                  {
                    "index": 2,
                    "numbered-node-hop": {
                      "node-id": "192.0.2.4",
                      "hop-type": "strict"
                    }
                  }
                ]
              }
            }
          }
        ]
      },
      "lsps": {
        "lsp": [
          {
            "node": "192.0.2.1",
            "lsp-id": 25356,
            "tunnel-name": "Example_LSP_Tunnel_A_4_1"
          }
        ]
      }
    }
  ]
}
]]></artwork></figure>

</section>
<section anchor="example-te-tunnel-with-primary-and-secondary-paths"><name>Example TE Tunnel with Primary and Secondary Paths</name>

<figure title="TE network used in data tree examples" anchor="AppFig-Topo2"><artwork><![CDATA[
                       +----------+          +----------+
                     +-|192.0.2.9 |---+      |192.0.2.10|
                     | +----------+   |      +----------+
                     |                |          |   |
+----------+    +----------+     +----------+    |   |
|192.0.2.8 |----|192.0.2.3 |-----|192.0.2.4 |----+   |
+----------+    +----------+     +----------+        |
  |                  |                |              |
+----------+         |                |              |
|192.0.2.1 |---------+                |           +----------+
+----------+                          +-----------|192.0.2.5 |
      |  |                                        +----------+
      |  |              +----------+                     | |
      |  +--------------|192.0.2.2 |---------------------+ |
      |                 +----------+                       |
      |                       | |                          |
  +----------+                | |                   +----------+
  |192.0.2.6 |----------------+ +-------------------|192.0.2.7 |
  +----------+                                      +----------+

]]></artwork></figure>

<t>Below is the state retrieved for a TE tunnel from source 192.0.2.1 to 192.0.2.5
with primary, secondary, reverse, and secondary reverse paths as shown in <xref target="AppFig-Topo2"/>.</t>

<figure><artwork><![CDATA[
{
  "ietf-te:te": {
    "tunnels": {
      "tunnel": [
        {
          "name": "example-1",
          "description": "Example in slide 1",
          "source": {
            "te-node-id": "192.0.2.1"
          },
          "destination": {
            "te-node-id": "192.0.2.5"
          },
          "bidirectional": true,
          "primary-paths": {
            "primary-path": [
              {
                "name": "primary-1 (fwd)",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "co-routed": false,
                "explicit-route-objects": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2",
                        "hop-type": "loose"
                      }
                    }
                  ]
                },
                "primary-reverse-path": {
                  "name": "primary-2 (rev)",
                  "path-scope": "ietf-te-types:path-scope-end-to-end",
                  "explicit-route-objects": {
                    "route-object-include-exclude": [
                      {
                        "index": 1,
                        "explicit-route-usage":
                        "ietf-te-types:route-include-object",
                        "numbered-node-hop": {
                          "node-id": "192.0.2.3",
                          "hop-type": "loose"
                        }
                      }
                    ]
                  },
                  "candidate-secondary-reverse-paths": {
                    "candidate-secondary-reverse-path": [
                      {
                        "secondary-reverse-path": "secondary-3 (rev)"
                      },
                      {
                        "secondary-reverse-path": "secondary-4 (rev)"
                      },
                      {
                        "secondary-reverse-path": "secondary-5 (rev)"
                      }
                    ]
                  }
                },
                "candidate-secondary-paths": {
                  "candidate-secondary-path": [
                    {
                      "secondary-path": "secondary-1 (fwd)"
                    },
                    {
                      "secondary-path": "secondary-2 (fwd)"
                    }
                  ]
                }
              }
            ]
          },
          "secondary-paths": {
            "secondary-path": [
              {
                "name": "secondary-1 (fwd)",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "explicit-route-objects": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-node-hop": {
                        "node-id": "192.0.2.1"
                      }
                    },
                    {
                      "index": 2,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2",
                        "hop-type": "loose"
                      }
                    }
                  ]
                }
              },
              {
                "name": "secondary-2 (fwd)",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "explicit-route-objects": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "explicit-route-usage": 
                      "ietf-te-types:route-include-object",
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2"
                      }
                    },
                    {
                      "index": 2,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.5",
                        "hop-type": "loose"
                      }
                    }
                  ]
                }
              }
            ]
          },
          "secondary-reverse-paths": {
            "secondary-reverse-path": [
              {
                "name": "secondary-3 (rev)",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "explicit-route-objects": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-node-hop": {
                        "node-id": "192.0.2.5"
                      }
                    },
                    {
                      "index": 2,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.4",
                        "hop-type": "loose"
                      }
                    }
                  ]
                }
              },
              {
                "name": "secondary-4 (rev)",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "explicit-route-objects": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-node-hop": {
                        "node-id": "192.0.2.4"
                      }
                    },
                    {
                      "index": 2,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.3",
                        "hop-type": "loose"
                      }
                    }
                  ]
                }
              },
              {
                "name": "secondary-5 (rev)",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "explicit-route-objects": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-node-hop": {
                        "node-id": "192.0.2.3"
                      }
                    },
                    {
                      "index": 2,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.1",
                        "hop-type": "loose"
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "name": "example-3",
          "description": "Example in slide 3",
          "source": {
            "te-node-id": "192.0.2.1"
          },
          "destination": {
            "te-node-id": "192.0.2.5"
          },
          "bidirectional": true,
          "primary-paths": {
            "primary-path": [
              {
                "name": "primary-1 (bidir)",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "co-routed": true,
                "explicit-route-objects": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2",
                        "hop-type": "loose"
                      }
                    }
                  ]
                },
                "primary-reverse-path": {
                  "path-scope": "ietf-te-types:path-scope-end-to-end"
                },
                "candidate-secondary-paths": {
                  "candidate-secondary-path": [
                    {
                      "secondary-path": "secondary-1 (bidir)"
                    },
                    {
                      "secondary-path": "secondary-2 (bidir)"
                    }
                  ]
                }
              }
            ]
          },
          "secondary-paths": {
            "secondary-path": [
              {
                "name": "secondary-1 (bidir)",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "explicit-route-objects": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-node-hop": {
                        "node-id": "192.0.2.1"
                      }
                    },
                    {
                      "index": 2,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2",
                        "hop-type": "loose"
                      }
                    }
                  ]
                }
              },
              {
                "name": "secondary-2 (bidir)",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "explicit-route-objects": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2"
                      }
                    },
                    {
                      "index": 2,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.5",
                        "hop-type": "loose"
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "name": "example-4",
          "description": "Example in slide 4",
          "source": {
            "te-node-id": "192.0.2.1"
          },
          "destination": {
            "te-node-id": "192.0.2.5"
          },
          "bidirectional": true,
          "primary-paths": {
            "primary-path": [
              {
                "name": "primary-1 (fwd)",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "co-routed": true,
                "explicit-route-objects": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2",
                        "hop-type": "loose"
                      }
                    }
                  ]
                },
                "primary-reverse-path": {
                  "name": "primary-2 (rev)",
                  "path-scope": "ietf-te-types:path-scope-end-to-end",
                  "candidate-secondary-reverse-paths": {
                    "candidate-secondary-reverse-path": [
                      {
                        "secondary-reverse-path": "secondary-3 (rev)"
                      },
                      {
                        "secondary-reverse-path": "secondary-4 (rev)"
                      }
                    ]
                  }
                },
                "candidate-secondary-paths": {
                  "candidate-secondary-path": [
                    {
                      "secondary-path": "secondary-1 (fwd)"
                    },
                    {
                      "secondary-path": "secondary-2 (fwd)"
                    }
                  ]
                }
              }
            ]
          },
          "secondary-paths": {
            "secondary-path": [
              {
                "name": "secondary-1 (fwd)",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "explicit-route-objects": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-node-hop": {
                        "node-id": "192.0.2.1"
                      }
                    },
                    {
                      "index": 2,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2",
                        "hop-type": "loose"
                      }
                    }
                  ]
                }
              },
              {
                "name": "secondary-2 (fwd)",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "explicit-route-objects": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-node-hop": {
                        "node-id": "192.0.2.2"
                      }
                    },
                    {
                      "index": 2,
                      "numbered-node-hop": {
                        "node-id": "192.0.2.5",
                        "hop-type": "loose"
                      }
                    }
                  ]
                }
              }
            ]
          },
          "secondary-reverse-paths": {
            "secondary-reverse-path": [
              {
                "name": "secondary-3 (rev)",
                "path-scope": "ietf-te-types:path-scope-end-to-end"
              },
              {
                "name": "secondary-4 (rev)",
                "path-scope": "ietf-te-types:path-scope-end-to-end"
              }
            ]
          }
        }
      ]
    }
  }
}
]]></artwork></figure>

</section>
<section anchor="example-multi-domain-te-tunnel-with-primary-and-secondary-paths"><name>Example Multi-domain TE Tunnel with Primary and Secondary Paths</name>

<figure title="TE network used in the multi-domain TE Tunnel example" anchor="AppFig-Topo3"><artwork><![CDATA[
                            XXXXXXX
                         XXX       XXX
                       XX             XX
                     X                  X
                     X    Domain 2      X
            XXXXXXX   X                X    XXXXXXXX
         XXX    +-----------+    +-----------+      XXX
       XX       | 192.0.2.1 |    | 192.0.2.2 |         XX
      X         +-----------+    +-----------+           X
      X                 X   XXXXXX    X                  X
+-----------+           X             X             +-----------+
|192.0.2.100| Domain 1  X             X   Domain 3  |192.0.2.200|
+-----------+           X   XXXXXX    X             +-----------+
      X         +-----------+    +-----------+           X
      X         | 192.0.2.3 |    | 192.0.2.4 |          X
       XX       +-----------+    +-----------+        XX
         XXX       X  X                  XXX       XXX
            XXXXXXX  X                    X  XXXXXXX
                     X                    X
                     X    Domain 4        X
                       XX             XX
                         XXX       XXX
                            XXXXXXX

]]></artwork></figure>

<t>The following state is retrieved for a multi-domain TE tunnel, where both the
primary and secondary paths consist of TE tunnel segments, as shown in <xref target="AppFig-Topo3"/>.
In each domain, a TE tunnel segment is established to form the complete end-to-end TE path.
The nodes (192.0.2.100) and (192.0.2.200) form the multi-domain end-to-end source and destination
respectively. The nodes (192.0.2.1), (192.0.2.2), (192.0.2.3), and (192.0.2.4) act as domain
border nodes and transit nodes for the end-to-end TE tunnel LSPs.</t>

<figure><artwork><![CDATA[
{
  "ietf-te:te": {
    "tunnels": {
      "tunnel": [
        {
          "name": "Example_Head_End_Tunnel_Segment",
          "admin-state": "ietf-te-types:tunnel-admin-state-up",
          "encoding": "ietf-te-types:lsp-encoding-packet",
          "source": {
            "te-node-id": "192.0.2.100"
          },
          "bidirectional": true,
          "signaling-type": "ietf-te-types:path-setup-rsvp",
          "primary-paths": {
            "primary-path": [
              {
                "name": "primary-path-1",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "co-routed": true,
                "explicit-route-objects": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-link-hop": {
                        "link-tp-id": "192.0.2.1"
                      }
                    }
                  ]
                },
                "primary-reverse-path": {
                  "path-scope": "ietf-te-types:path-scope-end-to-end"
                },
                "candidate-secondary-paths": {
                  "candidate-secondary-path": [
                    {
                      "secondary-path": "secondary-path-1"
                    }
                  ]
                }
              }
            ]
          },
          "secondary-paths": {
            "secondary-path": [
              {
                "name": "secondary-path-1",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "explicit-route-objects": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-link-hop": {
                        "link-tp-id": "192.0.2.3"
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "name": "Example_Primary_Transit_Tunnel_Segment",
          "admin-state": "ietf-te-types:tunnel-admin-state-up",
          "encoding": "ietf-te-types:lsp-encoding-packet",
          "bidirectional": true,
          "signaling-type": "ietf-te-types:path-setup-rsvp",
          "primary-paths": {
            "primary-path": [
              {
                "name": "primary-path-2",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "co-routed": true,
                "explicit-route-objects": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-link-hop": {
                        "link-tp-id": "192.0.2.1"
                      }
                    },
                    {
                      "index": 2,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-link-hop": {
                        "link-tp-id": "192.0.2.2"
                      }
                    }
                  ]
                },
                "primary-reverse-path": {
                  "path-scope": "ietf-te-types:path-scope-end-to-end"
                }
              }
            ]
          }
        },
        {
          "name": "Example_Secondary_Transit_Tunnel_Segment",
          "admin-state": "ietf-te-types:tunnel-admin-state-up",
          "encoding": "ietf-te-types:lsp-encoding-packet",
          "bidirectional": true,
          "signaling-type": "ietf-te-types:path-setup-rsvp",
          "primary-paths": {
            "primary-path": [
              {
                "name": "primary-path-4",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "co-routed": true,
                "primary-reverse-path": {
                  "path-scope": "ietf-te-types:path-scope-end-to-end"
                },
                "candidate-secondary-paths": {
                  "candidate-secondary-path": [
                    {
                      "secondary-path": "secondary-path-4"
                    }
                  ]
                }
              }
            ]
          },
          "secondary-paths": {
            "secondary-path": [
              {
                "name": "secondary-path-4",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "explicit-route-objects": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-link-hop": {
                        "link-tp-id": "192.0.2.3"
                      }
                    },
                    {
                      "index": 2,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-link-hop": {
                        "link-tp-id": "192.0.2.4"
                      }
                    }
                  ]
                }
              }
            ]
          }
        },
        {
          "name": "Example_Tail_End_Tunnel_Segment",
          "admin-state": "ietf-te-types:tunnel-admin-state-up",
          "encoding": "ietf-te-types:lsp-encoding-packet",
          "destination": {
            "te-node-id": "192.0.2.200"
          },
          "bidirectional": true,
          "signaling-type": "ietf-te-types:path-setup-rsvp",
          "primary-paths": {
            "primary-path": [
              {
                "name": "primary-path-3",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "co-routed": true,
                "explicit-route-objects": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-link-hop": {
                        "link-tp-id": "192.0.2.2"
                      }
                    }
                  ]
                },
                "primary-reverse-path": {
                  "path-scope": "ietf-te-types:path-scope-end-to-end"
                },
                "candidate-secondary-paths": {
                  "candidate-secondary-path": [
                    {
                      "secondary-path": "secondary-path-3"
                    }
                  ]
                }
              }
            ]
          },
          "secondary-paths": {
            "secondary-path": [
              {
                "name": "secondary-path-3",
                "path-scope": "ietf-te-types:path-scope-end-to-end",
                "explicit-route-objects": {
                  "route-object-include-exclude": [
                    {
                      "index": 1,
                      "explicit-route-usage":
                      "ietf-te-types:route-include-object",
                      "numbered-link-hop": {
                        "link-tp-id": "192.0.2.4"
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
      ]
    }
  }
}
]]></artwork></figure>

</section>
</section>
<section anchor="AppendixB"><name>Full Model Tree Diagram</name>

<t>The full tree diagram of the TE YANG data model defined in
module 'ietf-te' is shown below.</t>

<figure><artwork><![CDATA[
module: ietf-te
  +--rw te
     +--rw enable?    boolean
     +--rw globals
     |  +--rw named-admin-groups
     |  |  +--rw named-admin-group* [name]
     |  |          {te-types:extended-admin-groups,
     |  |           te-types:named-extended-admin-groups}?
     |  |     +--rw name            string
     |  |     +--rw bit-position?   uint32
     |  +--rw named-srlgs
     |  |  +--rw named-srlg* [name] {te-types:named-srlg-groups}?
     |  |     +--rw name     string
     |  |     +--rw value?   te-types:srlg
     |  |     +--rw cost?    uint32
     |  +--rw named-path-constraints
     |     +--rw named-path-constraint* [name]
     |             {te-types:named-path-constraints}?
     |        +--rw name                       string
     |        +---u path-constraints-common
     +--rw tunnels
     |  +--rw tunnel* [name]
     |     +--rw name                                    string
     |     +--rw alias?                                  string
     |     +--rw identifier?                             uint32
     |     +--rw color?                                  uint32
     |     +--rw description?                            string
     |     +--rw admin-state?                            identityref
     |     +--ro operational-state?                      identityref
     |     +--rw state-change-timestamp?
     |     |       yang:date-and-time
     |     +---u te-types:encoding-and-switching-type
     |     +---u tunnel-common-attributes
     |     +--rw controller
     |     |  +--rw protocol-origin?        identityref
     |     |  +--rw controller-entity-id?   string
     |     +--rw reoptimize-timer?                       uint16
     |     +---u tunnel-associations-properties
     |     +---u protection-restoration-properties
     |     +---u te-types:tunnel-constraints
     |     +---u tunnel-hierarchy-properties
     |     +--rw primary-paths
     |     |  +--rw primary-path* [name]
     |     |     +--ro active?                      boolean
     |     |     +---u path-common-properties
     |     |     +---u path-forward-properties
     |     |     +---u k-requested-paths
     |     |     +---u path-compute-info
     |     |     +---u path-state
     |     |     +--rw primary-reverse-path
     |     |     |  +---u path-common-properties
     |     |     |  +---u path-compute-info
     |     |     |  +---u path-state
     |     |     |  +--rw candidate-secondary-reverse-paths
     |     |     |     +--rw candidate-secondary-reverse-path*
     |     |     |             [secondary-reverse-path]
     |     |     |        +--rw secondary-reverse-path    leafref
     |     |     |        +--ro active?                   boolean
     |     |     +--rw candidate-secondary-paths
     |     |        +--rw candidate-secondary-path* [secondary-path]
     |     |           +--rw secondary-path    leafref
     |     |           +--ro active?           boolean
     |     +--rw secondary-paths
     |     |  +--rw secondary-path* [name]
     |     |     +---u path-common-properties
     |     |     +--rw preference?                          uint8
     |     |     +--rw secondary-reverse-path?              leafref
     |     |     +---u path-compute-info
     |     |     +---u protection-restoration-properties
     |     |     +---u path-state
     |     +--rw secondary-reverse-paths
     |     |  +--rw secondary-reverse-path* [name]
     |     |     +---u path-common-properties
     |     |     +--rw preference?                          uint8
     |     |     +---u path-compute-info
     |     |     +---u protection-restoration-properties
     |     |     +---u path-state
     |     +---x tunnel-action
     |     |  +---w input
     |     |  |  +---w action-type?   identityref
     |     |  +--ro output
     |     |     +--ro action-result?   identityref
     |     +---x protection-external-commands
     |        +---w input
     |           +---w protection-external-command?   identityref
     |           +---w ingress-node?                  boolean
     |           +---w egress-node?                   boolean
     |           +---w path-name?                     string
     |           +---w path-type?
     |           |       te-types:path-type
     |           +---w traffic-type?                  enumeration
     |           +---w extra-traffic-tunnel-ref?      tunnel-ref
     +--ro lsps
        +--ro lsp* [tunnel-name lsp-id node]
           +--ro tunnel-name                     string
           +--ro lsp-id                          uint16
           +--ro node                            te-types:te-node-id
           +--ro source?                         te-types:te-node-id
           +--ro destination?                    te-types:te-node-id
           +--ro tunnel-id?                      uint16
           +--ro extended-tunnel-id?             yang:dotted-quad
           +--ro operational-state?              identityref
           +--ro signaling-type?                 identityref
           +--ro origin-type?                    enumeration
           +--ro lsp-resource-status?            enumeration
           +--ro lockout-of-normal?              boolean
           +--ro freeze?                         boolean
           +--ro lsp-protection-role?            enumeration
           +--ro lsp-protection-state?           identityref
           +--ro ingress-node-id?                te-types:te-node-id
           +--ro egress-node-id?                 te-types:te-node-id
           +--ro lsp-actual-route-information
              +--ro lsp-actual-route-information* [index]
                 +---u te-types:record-route-state

  rpcs:
    +---x tunnels-path-compute
    |  +---w input
    |  |  +---w path-compute-info
    |  +--ro output
    |     +--ro path-compute-result
    +---x tunnels-actions
       +---w input
       |  +---w tunnel-info
       |  |  +---w (filter-type)
       |  |     +--:(all-tunnels)
       |  |     |  +---w all       empty
       |  |     +--:(one-tunnel)
       |  |        +---w tunnel?   tunnel-ref
       |  +---w action-info
       |     +---w action?       identityref
       |     +---w disruptive?   empty
       +--ro output
          +--ro action-result?   identityref

  grouping path-common-properties:
    +-- name?                      string
    +-- path-computation-method?   identityref
    +-- path-computation-server
    |  +---u te-types:te-generic-node-id
    +-- compute-only?              empty
    +-- use-path-computation?      boolean
    +-- lockdown?                  empty
    +--ro path-scope?                identityref
  grouping path-compute-info:
    +---u tunnel-associations-properties
    +---u te-types:generic-path-optimization
    +-- named-path-constraint?                leafref
    |       {te-types:named-path-constraints}?
    +---u path-constraints-common
  grouping path-forward-properties:
    +-- preference?   uint8
    +-- co-routed?    boolean
  grouping k-requested-paths:
    +-- k-requested-paths?   uint8
  grouping path-state:
    +---u path-computation-response
    +--ro lsp-provisioning-error-infos
    |  +--ro lsp-provisioning-error-info* []
    |     +--ro error-reason?        identityref
    |     +--ro error-description?   string
    |     +--ro error-timestamp?     yang:date-and-time
    |     +--ro error-node-id?       te-types:te-node-id
    |     +--ro error-link-id?       te-types:te-tp-id
    |     +--ro lsp-id?              uint16
    +--ro lsps
       +--ro lsp* [node lsp-id]
          +--ro tunnel-name?              -> /te/lsps/lsp/tunnel-name
          +--ro node?                     leafref
          +--ro lsp-id?                   leafref
          +--ro state-change-timestamp?   yang:date-and-time
  grouping path-computation-response:
    +--ro computed-paths-properties
    |  +--ro computed-path-properties* [k-index]
    |     +--ro k-index?                            uint8
    |     +---u te-types:generic-path-properties
    +--ro computed-path-error-infos
       +--ro computed-path-error-info* []
          +--ro error-description?   string
          +--ro error-timestamp?     yang:date-and-time
          +--ro error-reason?        identityref
  grouping protection-restoration-properties:
    +-- protection
    |  +-- protection-type?                identityref
    |  +-- protection-reversion-disable?   boolean
    |  +-- hold-off-time?                  uint32
    |  +-- wait-to-revert?                 uint16
    |  +-- aps-signal-id?                  uint8
    +-- restoration
       +-- restoration-type?                identityref
       +-- restoration-scheme?              identityref
       +-- restoration-reversion-disable?   boolean
       +-- hold-off-time?                   uint32
       +-- wait-to-restore?                 uint16
       +-- wait-to-revert?                  uint16
  grouping tunnel-associations-properties:
    +-- association-objects
       +-- association-object* [association-key]
       |  +-- association-key?   string
       |  +-- type?              identityref
       |  +-- id?                uint16
       |  +-- source
       |     +---u te-types:te-generic-node-id
       +-- association-object-extended* [association-key]
          +-- association-key?   string
          +-- type?              identityref
          +-- id?                uint16
          +-- source
          |  +---u te-types:te-generic-node-id
          +-- global-source?     uint32
          +-- extended-id?       yang:hex-string
  grouping tunnel-end-point:
    +-- node-id?        nw:node-id
    +-- te-node-id?     te-types:te-node-id
    +-- tunnel-tp-id?   binary
  grouping tunnel-common-attributes:
    +-- source
    |  +---u tunnel-end-point
    +-- destination
    |  +---u tunnel-end-point
    +-- bidirectional?   boolean
  grouping tunnel-hierarchy-properties:
    +-- hierarchy
       +-- dependency-tunnels
       |  +-- dependency-tunnel* [name]
       |     +-- name?                                   tunnel-ref
       |     +---u te-types:encoding-and-switching-type
       +-- hierarchical-link
          +-- enable?                            boolean
          +-- local-node-id?                     nw:node-id
          +-- local-te-node-id?                  te-types:te-node-id
          +-- local-link-tp-id?                  nt:tp-id
          +-- local-te-link-tp-id?               te-types:te-tp-id
          +-- remote-node-id?                    nw:node-id
          +-- remote-link-tp-id?                 nt:tp-id
          +-- remote-te-link-tp-id?              te-types:te-tp-id
          +-- remote-te-node-id?                 te-types:te-node-id
          +--ro link-id?                           nt:link-id
          +-- network-id?                        nw:network-id
          +---u te-types:te-topology-identifier
  grouping path-constraints-common:
    +---u te-types:common-path-constraints-attributes
    +---u te-types:generic-path-disjointness
    +---u te-types:path-constraints-route-objects
    +-- path-in-segment!
    |  +---u te-types:label-set-info
    +-- path-out-segment!
       +---u te-types:label-set-info
]]></artwork></figure>

</section>


  </back>

<!-- ##markdown-source:
H4sIABsN82gAA+x9bVcbR7Lw9/kVs+QDkCBhYydxyG4SYhMv9zgOB8gmz9mb
mzNIA8xa0mhnRmDWZn/7U2/93jMaAU6cXeveszFSv1RXV1dXVdfLYDBImqKZ
5LvpXvr/9l4+T59lTZZ+X47zSXpWVulJlZ2dFaN0f3ZezPK8Kmbn6cliNssn
9Vb6IjuFZsdXRTO6yMfpYdZcwLfZbJwezJq8OstGeZ1kp6dVfrmbnuz7EyTj
cjTLpjD3GGZpBkXenA2aPKsH19nsHP41ePRFUsyr3bSpFnWz8+DBFw92klHW
5Odldb2b1s04uSqrV+dVuZjjBHvH6U/wN8L4HL9LXuXX0GC8y/DM8mbwDGdK
kroBKH/NJuUsp9HzpF6cTou6LspZcz2HLw/2T75L5sVu+vemHG2ldVk1VX4G
y6uvp/yPUTmd5rOm/iVJskVzUVa7SZIOkhQ+xawGeIbpcZaN6Qte5klW5a/M
l2V1ns2Kf2UNTLqbPi3qUZkeX9dNPq0B4BG1yadZMQEQa+g0hAV8c45fDGFu
mYumOhqmz2FBF0Wi5zrKXuX1hfV1j9lkMmwInb4ZYRuayp7r52H6oliYiX5e
nOWAcPnOnWVvkp+l++Pz3Br9NbUfTorFEDfcWpA9y9+G6eEw/RYoLpuauf5W
1BezBRDaZTazfnQn/Z/FrJjnVfoyb5A6amvuy1Pq880/uAki1N2zA5izuq6B
hKxtOwByc7525zuYjYvLYrzIJvaOFb+eco9vrrOLUtA4K6sp9LrMd6Hp0XdP
H+08+EL++dmDnQfqnzuPH6p/fvGF/ufDB5/LP588eExtD05+/PX58MmDJ0Nq
lKZylJ/nMzipo3RelU0+QijTmg4pnowBbNUszyogewCUTivQ/oyRZXWhARVh
p6msexcnHZykRzmT/5iQkAoU1A6+Ahi+z67TnQcPH9NXNYCT18XsrFT9VYcE
v9RISQaDQZqd1gDaCHbm5KKoU2ASCzxn6Tg/A8DrNGM+MkY+MtWMqrnIEfjL
Ao8wrhMXNs1m2XlOvcuzJMbLNk72N9Omi6GlGy+OD+tN5muF5mtDgC6X+Ufl
ZV7VDFFzkTUpgF3Mxvkc8MNzQ+frFBB7MSsn5fk1YJJazyfZLE/z2Sib14sJ
oTKhaWAwpKmcZixT2BteNMy3mAAOaBaaFtByWYzyQT3PRwWsjuHkL20gEpxv
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
AMsqPwCPvCygYeLaHzokEWbyIufz3qrtZMNVlSdoiS1nE7hPF3MW/JENj4sz
EtgboVKP4MSmIV2Qx6N2D4xxDPxTdbHPm57XUY/LNC+IbZ8ib3V5P2q1ZLUQ
Hk6nQVsfFfj22ut8nlWEfOuSEFkP1ZEjy5jBSOy6KLt5ujJ/IvGfLooJ3eOn
k3L0qrZhC24N0nzPZ2WNtiyx7GrJyTXxCj8TUYovXG1+QhbGo7cDnnRZiQTX
dXx1LEJrA2+i5EbX0iIQDAYpnyMl4GRNA7LoomEtFkC1rXuwq8jjiymjT1AF
mMsmPCoykBKFpkQt1CL1M5uuNE60shyInXjzxuSYTllFExAbpa4BFYsJHIs8
iVFbaNnpsq5YVqMk+fe//53w64glCuPnE63kfsK/exq1UbXelo5OLM29jzWc
98v/Rtvjp6T/Dz7tHd7iryv3gC6GltUql3Sx1mOWtaxPoFy+XQ5bdKLlvdLb
oM79x330a+nor+mTjp94AGWDlO1RBo76cg7o/D8gQQsghWTgBPX/oZrfC4L/
bf1p+dq71hppuELLVZqu1Lb72LmfgAR7nHJrV+3NKpsZb5jZVouxWC3/T8N8
x9kN7ZCu9cPJy9aFxz8kVtRs8Yj8/DPMVf4/vGHRbmxZ1nFNP5tLTr75f7Ex
/s/qnqmW7Yonc200PoHgN2qqibI/2eKF3HvqVqDFR3Rt2ySlbwj2brmrfCKi
Gd/v1ks2Xoj6bZZfNo3EPmS5V78gjaqclK4tHLU4u6Z/omxQ5XDDAxudnZsn
eJRwT+FOjZtT7GdJ/JM1G2PYSCyhgZ8f073xFHQufM5Ha9OAnHJgsOOjF8/h
P3kzGm6i2QP0FVBrbLOdsv5E0FY4puy9Ocplxetv2dSmJcXjplqQRsHbsI54
FaUV3yoZqU05T/mVzPopvhsksyWsDIy0Pc0bNp+hSlbbGlhak4vN4AqNSGkq
764JG/vmoqOdmTGE/vPXqGUvQOKszEQxcFH+J7eHsaEkY1FR9kqRxJoLRLE1
F3lO4bu2M1FiDe8gG47LAJ8WCQh5BFJmSxSuYFaY6XxSnmaTejdJvuJnU/nC
xtQU/mPsGHVOCgi3Q+xZlMSeDmR3SbL5fALHHNVekDM9s4P9vEtvFdjmzZuT
/DlPD/Ci6HnGOwBww/yknckLsoFXvnAIRp0nBJcsIMweFABaCrasauNhYsOx
/+vJjy9f7r84jgOSljPlwwJnuynyWh9tngQgndRzC0z8qw+MZNmLAkiv919Z
63Axt/8rdF0dXLZlGu8YesszdqurEiYhN5JDcSPJ06foRZJuHB0+rTc1zSX+
AW+hN9muwTxrLgagC8+BbghLe7MURmSD9T8XOSAEm6TcRLsv2PY2C9kIP/Zm
zxA1AvF+fxB+r8uacsqv/mxAAEZQGx+aIXA5sYpNs2vGCZlN2fjAh3ddoB+g
Nk+chwhdzjcPC6ySIeD3nDoZwPHJexCYhalsJKbRGI4sdHA7YeZVjgafafGv
nF6rmzyrBrDYARzexXxTzMBkok3wHrEUTW3lRuOVwMCqk/rIQ+Wukj0TEkaq
K5jlT4mSTeBP4SSJyEX4GQ6HdotG20PjLcoUj40tRODP8Hc1H9Xs54Zi0Os0
RlWJDIotrmDD4Dv1lTvVWzUZXKZWo9Rp5M7DuNaQ+VOEq4lM4a7Jxq8IO4Z7
K5HHvELwYbU8R+jipUsZbVb86EYyjjDU9M1HhrnKNRth9WKEsBiFOK+xbSSz
bEvrdXKaX2SXBZoIzL0p0kdTK0s/yBJipAvvp3PF7ROXW8jd2IA4ygDwLUkG
JoWlDkrjb/FdfzzIUKoZ0N1pGrS3+Tj9O373i93UpQS/c11NzltHxh9XH1LI
eIayWMEmeU1SHe30RD4hCX4sMlLfENnUi1OiHIucaiWRISUlISaZHXF3Qz3K
tVPdZ9QPOJLYKuG2cERMlmiUEgGMFngSSQ0gnrLIAOL7K9x0C9OrzHx8kSGz
PirqV+hH+4odzWv01AGZdtOeOJGJ09jE/n60w5B5EMj1o3sO0/1sdBH/Ed3G
kHeV+MRD97OIWlZ/W8JSuErhVo5ddXiLxSfy+uNz0mLSFPNJ7ogXhx7w+jKE
g2+9dIyLCo755NoSTM3VTNKPjwWrM/VJnD50L6ETDcgbLL8rq3owDojmFRCS
5S1QKceXcXztw7QNKaCtVddKeEUdi3chOq/HxphKrAbkrWSxqXs+31Zz9Xmj
3Fd241PcfO31MvOkXR/oj1pnrC/MeApsG5h+c+E18G4/ryMeroHxXf86mJTf
5Ztr2MzoACTFwAhw9UCrsH+6gCU/iXa9KCfjrp4dXbVBgRAd6bsMbNqTKary
owFo7rNxvRLaqDs61qJfcl4PLrMJyIC3HuKayPYW/YkND5DP3brz6jOPi/of
JWzNDAR1n5TVP8jLCuaw20YHy1+jalo05DQGAjw/Q66+GLgO5dX8T6t3hqnb
eqe6d+Je5AGjUVf6y+ht41zveJN/BQoIh8nI7YVONnyn4MFgbbSDPSqDVQ18
uwANRAlqdOmhCKe80LP0VX49hNlsJrEb3pne1PZLknq1g3tBj2AzchjcYySd
q8K2dowNOwGZ9aFGVVTycK86qJAC0da1YCoqBmNpSFodcKRtnC1VzGXXwFIb
YLQ3EvUgnNHXKBlRQJvuj2h0/NS+1g7JNKPDjTqXbqbDpsbfRdmK0Z35CMcM
GdTyLRMZhXul3Cu1bD9sekg0xozDicJdnK/1nlmxs5T7kcV1moHEx1tHFNkq
IQ1iLLH31HxSNAD2yUMoXKdIoiHaYXq7VX+giadaiAMIPeuigLgC7BY77g04
yr82vlaHdGUAb4NZAvM3x6p9feyS/Mo6EYAFE5eLapQ7bWwuoh2k6hy+HWcg
UeIUiTK3Celj5BG5IbHrYonTxi+lbowFDF8blSuyytNQxLpRlRfvmNDyjGY+
JiC6iAbpug3DgNA6zgfZ5Cq7rtd3LS3HnUDbLbllKh0t8TzAN+HX7BvhyQx6
rX1saMKWTcP7CH0sywr1jxofsFC95LFdCJ3hyM00S9dRxh0164DTOTFT5ryW
LYJ57+Mnn6MnuZjp00fDh8MouuSyUGjrwlepg2sU9Y5zEyAZ4ArdWjvWo9HP
dK6wz35henEYGYb+R2Qr1S6hGgm91/6/6lH15MK5SGmSjXBdm5ZDi3KspVNp
bbejLpr9Ve6ltUMaEbpnCiBXYLiCMG7WRtAw/QHVyaxlFIQP/1pMDcVKTxVp
xJ68DAxy/tm1Ntw6koF+7RPFlq46B2HdJGN7emqrs7NgGP7qotDYU6EpZP3d
4iCWLRZhNuUlQY6i2RAtzQSE5kBKTzXAOsyiQEXOp3O48JYsgs8s+WLpJwij
5W/A14OmHOQzAkq+lbgqjpeUPsYfEwDdInfiih25S4+RVfi8u/u/5rn/4RCN
5v2hNcHJxVQxb7VkA65ZhPcS3hA/R3zPSm9nPEGyzzbc/yosyAXR/gpmpe6F
YmNR+4Jx1riD0DP33UBFz000OwsKpnkGl3bRqFtEbL/qYruiECtsuFEM8+GW
R1Z0iPkOHW8aF+5ewMgJJ+i3xJxkAVYI/xnbLobASXXAm4Ht7ntnBIgNGXgz
uo91fB9DGYSFDvwabT4A/LxkmaoOaEWLbkbBbZNDjG+5vuMmFNsLsgbdKPJO
wkILXrjW2xOHB3jBA1e4Y6D5SQYEFJNmEi9NK05SvWbtuI8PYeMS36lZA8nw
KlGOm42PKObro6zGNyL4F4db85TMcxEhizksIM+m4RAaPZYK/9+Hn3F5NWvH
kH5/Uo/ubz6y3jyVn0f4dm8r7O0P9zp3BHJSfHs+R59zyQixz39gZC4MuPFi
/2hTBzAIq1UJNMIXKTSj0mzkomK/ynU8e7a+aXrfugZc+/dldljbDGv3yyZF
VsfMmEv6SeRTkVfxzmgFfbQT9huVk7KlS2c/y4Um2rt1ffTmRM+H0X6BydV0
Lu2cGNEhOjpf6WixtsV2dtYJXFpMxd2dScW0vw8ek03jMfk5ZDoHzPIepwU/
2BBeIqs7LcsJ3MCxvVcBPz1nMk4IA/I/9ydDYnn4WWTTxUsNIHRts0tn9BLi
9AERw1pWQZ+wjkExjlPG7GrXNAm7I38p52TiHJhD2HPu8MVlaZdlby3dlLjk
ncV6K7G7LXtjaem27H2lE9QLwGJWjS6ue1MKiTv0YNCXurQ8dcteIkz27609
TsThpGcfs90DlQQEnWIwQM6ZNtVDRN1P9FUYup84bgOur0CPkMVoxGQ8ZNF9
Ga57xk22wpBYYZN3CppMvKDJ24dMqqgbx7EnMxpPGPHm5MnyFGADmbIfJiZ2
Oe62AGOUMzLUTCVojXwQgTFmp4CJC3LeM5loxAAq/jr67rFe7ynbB4PLKgbm
a4Hf0Z1AubHlkhlIPTRx5pbZyHN5NOZMVIDI9kcRR1ZoL4wHtKV0r0YyDxna
YHCVzGogTjshJoABD4Iy/oPzWwHmZnK6YNNhFwDOGkMFYRobaeS1QISGC0/Y
CVtnrxJwJgW0Yg1SILdxbWl5GuuJvYY2yF0dXxahBHxPgdSxZkq+J8scaxSa
vNEvn21rpRG+PatIozxfXYq+oOfA2WJ6ysTmuwtT2GzeRNxIFClvdIrpm2w0
JOXGjYSzVykBw7Y36i6799inou051PfuZd1J/YKgmpn4ZRTWoa93edvkn00U
r6U2sXVSD5oYy6EMKgTPrv+NemP9cVaQpf9IPUscsBEAzvLGj0cHm+npdWLS
LqjF1POMT0Q+q9GsyADTS4bMSwvLpiU6yqIXKIGSKA6onhEwNZAwOY5fVMxN
YiYtd1mLf8JK0H2oyiX4VafGsbCp4tNyoJnxWBoV/pnADpzqwRqek7ZJVK3w
T4fLWzy4YB9FVK9PJ3liMOJZuThBUKZRBSROelcX5cB+ZRO6extZmrAgvelD
2L5J8Sp3vyWSZEhpDrXzFBCCdnM8MZieEARq9R7C2vJZTt8Z0tHn0ciZSyA2
DdUwClR+9jc/Gw8AJhOl9apr0H7zIXuTUtHlik4S0iSXnT1qFE2kZKHxRDeU
iz4hYWOOV1rd5MTGKusyHmUVsFw4R2xA4a7lzN8f/yVEpfV68HCHbAOWarps
GWpA1/uRusJAgZrac7gg5SOMpbTWba2BmhAE9ds6Hdd1V0ddJ/r2PRas7Iyx
qOlCPUIEULGpJf6W9OiLx58SBplpbVsXGgHryie+70TjX4jOpY4PH9q2qTSG
At9CNB+kOdKPUZnC1qCF7aZd2Jb4aJv6N3zXjF65nDbVoRIF/6uUMota0Pts
f5h8xbBqQLvuqaVAcpKGTwNIUgos6QeJ6CPNfBk4IS/Rk3XOhNOkku6OWxyy
nXrj5OSQA07CVX3+BVIUGzRPDq25JfJckl/w2EImirD4ERijQibcG5NGUER8
6qQR6hqYrPac4Yvn2Dg43P7+8MXxJr8YVOS57lhe4oecjLvmnd6Y9NmLxxNq
0DZrj5kELkNAg5y1kDiuuvniioC9gTy+ZNWQ1KhkaTZL1vklXcUGR0nQUVjd
xHZuhcy9UJqsOs8bplzl/80hpHx/6yl0ajwn7wF5UIxNYhHyV35qPcDucwoN
jF3iANCNw6f7h5uWkAD8Y5vyXkzyc/rCRLz41qtww0qSWxv1RnqJuTbzqijl
qYxxqIeRNz24OELz1vINsfydTPc6OD06La0XKbZndzIKqXRi/xZ02rqWBGOk
lVnD43DWdWtfktbAIqug5lMVILjNKMOU1QKGsaTCLsdxeYdKLO++Pjiy+htX
PxPNQtuqLX4rjmj1dIeM2/R6ja762ewyJu7odpzsjHdHPRVau1FZvokdnDJJ
jI0yzohG1lGfXNt5tJykaeoh5d7geySygbbnLUWjbsnZc/OxF+bo3mNamU90
gjA8V4s5woAcG9kVpWQH8ftfMBh9t/Gcmbks13F/y9CmlqmgEfLYIAFTKfQ6
pH2D86tao1COWUwVj5dXKplJCbDaySOmk6b6JKnWXmA2F5peyz6YLWWa49WD
r4vetmmLGfVRrisEniTV02YrOpuTaydvX0pQenTKnMHsRkusq7ZV4cZi6lZ5
SB9dD1RsL+yRszBhfJaWJ2mMnGfAitd56r4OytqK6TQf022ETk8VL3ILtr20
RFjE/KKqJNucPvWTQrJGUZDMgPETOmftWUvhrGzmlnYgOkPfBrSKnKKdp4ar
ZyT3XeD4hFcMJxZAfDd4PvFRdKY2S4CxyJtMn5kLirNrFijk1cR5e4WsiBxs
vSJCGuu1ImBCOJ/7LQ6nV9qok9vf3brIiEOmBHvPBwjJcm9R9SSgrDDhediI
zLdpbF52Di569faCio2bhHCScAY7K9bptf0WHrfZOSpK7Z4aM6rwJn0t0NgY
VSnKg6/4MO/xzYG2wEqXqfXo0et+Uo/wtndIjYFljmuRbRsgQNfRirGOZ8Jv
p8ldmwdwisRLcZnpfpbpFwVgdaUoMZLdc10gE759YDKkQdlctl5SIxUhFoCn
HGQ0i7KSZOxy8ITCoP2Us8RF17+M6AzyrLZ3kXirev5GThIF6OmI+7aEx+AB
1YwL1DYH3ltVN4zGN0UPQF4ktvtQLXxS5HS6+qJ+ZoZnsetzaoliYqxRkwRT
6L1REoQQCXIa9eDi9rAsp2ZntcbpNSYG6Lqg+gEsoHE1WuXSREOEpPN8q1Fx
abhih5R5ib4h2nPFktMtbINwzdnNQNQyvtK2R1afUSnV/Ck57czgeiycY2bd
1usZRWWv6xlI6yTPN/FBBzAMbKFHmsjmXyWJT2Yr6DHe5gzphcJZD25XG1+J
I9SK/tQL14dkvU7W2w4IP/oN7QU5r7W3W5h9mr0Fyk/JMv4ZH6xjvYm13jS6
XmdhsvD2mVQKSDkvibboktptUSQxz9Lk/3cdCr3swTqyGZNh8kT2UPgkxLHb
ZFiRkZQjpKREIiDZUdijJdgtKxMEa9ogC1+ULcqOYgmSvYlaGg7Ho6jTr7y5
I1Ogmbmn3hdIetzXvi2u1CO2PgvKHAKn858LLNI0JquOyUIiU8fcRIt6i/KM
crLaLUcirUsRiHRkuP0IS+wkjT7Deh0dvQf9EkCjqctpTvoMpqVSyFOXiGUL
oJAE4TTIVxfVXGjJoD8TQqHdxwuGAoA4rzQmwmKFNPcTZpN3pdjPaDenBb+h
qGgeOJoIKTlLWrqXIn8n7QsM1pL4ZVxQxplFUV8gUJr/CMpTlSwDzlo4SGSu
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
TPvUipgCAA==

-->

</rfc>

