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

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

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

<rfc ipr="trust200902" docName="draft-ietf-teas-yang-te-30" category="std">

  <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>Juniper Networks</organization>
      <address>
        <email>tsaad@juniper.net</email>
      </address>
    </author>
    <author initials="R." surname="Gandhi" fullname="Rakesh Gandhi">
      <organization>Cisco Systems Inc</organization>
      <address>
        <email>rgandhi@cisco.com</email>
      </address>
    </author>
    <author initials="X." surname="Liu" fullname="Xufeng Liu">
      <organization>IBM Corporation</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>
    <author initials="O." surname="Gonzalez de Dios" fullname="Oscar Gonzalez de Dios">
      <organization>Telefonica</organization>
      <address>
        <email>oscar.gonzalezdedios@telefonica.com</email>
      </address>
    </author>

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

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

    <abstract>


<t>This document defines a YANG data model for the 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>


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

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

<t>This document 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 module ‘ietf-te.yang’ includes data that is generic and
device-independent, while the module ‘ietf-te-device.yang’ 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 model(s) will augment the TE generic
YANG data model.</t>

<t>Also, it is expected 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="I-D.ietf-spring-segment-routing-policy"/> will augment the generic TE YANG  module.</t>

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

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

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

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

<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" title="Prefixes in Data Node Names">

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

<texttable title="Prefixes and corresponding YANG modules" anchor="tab1">
      <ttcol align='left'>Prefix</ttcol>
      <ttcol align='left'>YANG module</ttcol>
      <ttcol align='left'>Reference</ttcol>
      <c>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="RFC8776"/></c>
      <c>te-packet-types</c>
      <c>ietf-te-packet-types</c>
      <c><xref target="RFC8776"/></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" title="Model Tree Diagrams">

<t>The tree diagrams extracted from the module(s) 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" title="Design Considerations">

<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 leaf(s) 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 protocol used to instantiate TE LSPs are outside the scope of this
document and expected to be covered by augmentations defined in other document(s).</t>

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

<t><list style="symbols">
  <t>The generic TE YANG data model ‘ietf-te’ contains device independent data and
can be used to model data off a device (e.g. on 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 ‘tunnels’ list contains all TE Tunnels and TE tunnel segments
originating from device(s) that the TE controller manages.</t>
  <t>The device-specific TE data is defined in module ‘ietf-te-device’ as
shown in <xref target="figctrl"/>.</t>
  <t>In general, 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>The model declares a number of TE functions as features that can be
optionally supported.</t>
</list></t>

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

<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 models.</t>

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

<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 feature(s) is expected to either be in augmentations, or
deviations to this model that are defined in separate documents.</t>

<section anchor="module-relationship" title="Module Relationship">

<t>The generic TE YANG data model that is defined in “ietf-te.yang” covers the
building blocks that are device independent and agnostic of any specific
technology or control plane instances. The TE device model defined in
“ietf-te-device.yang” augments the generic TE YANG data model 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 exist in
separate YANG modules that augment the generic TE YANG data model.  The TE
data models for specific instances of signaling protocols are outside the scope
of this document and are defined in other documents. For example, the RSVP-TE
YANG model augmentation of the TE model is covered in a separate document.</t>

<figure title="Relationship of TE module(s) with signaling protocol modules" anchor="figctrl"><artwork><![CDATA[
  TE generic     +---------+         o: augment
  module         | ietf-te |o-------------+        
                 +---------+               \
                        o                   \
                        |\                   \
                        | \ TE device module  \
                        |  +----------------+  \
                        |  | ietf-te-device |   \
                        |  +----------------+    \
                        |       o        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" title="TE YANG Model">

<t>The generic TE YANG module (‘ietf-te’) is meant for 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 model is shown in the Appendix in
<xref target="fig-te-tree-full"/>.</t>

<section anchor="module-structure" title="Module Structure">

<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.  Below provides
further descriptions of containers that exist under the ‘te’ top level
container.</t>

<t>There are three further containers grouped under the ‘te’
container as shown in <xref target="fig-highlevel"/> and described below.</t>

<t>globals:</t>

<t><list style='empty'>
  <t>The ‘globals’ container maintains the set of global TE attributes that can be
applicable to TE Tunnels and interfaces.</t>
</list></t>

<t>tunnels:</t>

<t><list style='empty'>
  <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>
</list></t>

<t>lsps:</t>

<t><list style='empty'>
  <t>The ‘lsps’ container includes the list of TE LSP(s) that are instantiated for
TE Tunnels. Refer to <xref target="TE_LSPS"/> for further details on the properties of a TE LSP.</t>
</list></t>

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

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

<t><list style='empty'>
  <t>A 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>
</list></t>

<t>tunnels-action:</t>

<t><list style='empty'>
  <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>
</list></t>

<t><xref target="fig-te-tree-full"/> shows the relationships of these containers and RPCs within
the ‘ietf-te’ module.</t>

<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" title="TE Globals">

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

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

<t>named-srlgs:</t>

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

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

<t><list style='empty'>
  <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>
</list></t>

<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-always
     |        |     ...
     |        +--rw path-in-segment!
     |        |     ...
     |        +--rw path-out-segment!
     |              ...

]]></artwork></figure>

<t><list style='empty'>
  <t><list style='empty'>

    <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-always: A YANG container that contains two route objects lists:      <list style="symbols">
          <t>‘route-object-exclude-always’: a list of route entries to always exclude from the path computation.</t>
          <t>‘route-object-include-exclude’: a list of route entries to include or exclude in the path computation.</t>
        </list></t>
    </list></t>
  </list></t>
</list></t>

<t><list style='empty'>
  <t><list style='empty'>
    <t><list style='empty'>
      <t>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.</t>
    </list></t>
  </list></t>
</list></t>

<t><list style='empty'>
  <t><list style='empty'>
    <t><list style='empty'>
      <t>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:</t>
    </list></t>
  </list></t>
</list></t>

<t><list style='empty'>
  <t><list style='empty'>
    <t><list style='empty'>
      <t><list style="numbers">
        <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.</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 indicates that the secondary path has the same endpoints as the primary path.</t>
      </list></t>
    </list></t>

    <t><list style="symbols">
      <t>path-in-segment: A YANG container that contains a list of label restrictions
that have to be taken into considerations when crossing domains. This 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 crossing domains. The TE
tunnel segment in this case is being stitched to the downstream TE tunnel segment.</t>
    </list></t>
  </list></t>
</list></t>

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

<t>The ‘tunnels’ container holds the list of TE Tunnels that are provisioned on
devices in the network as shown in <xref target="fig-te-tunnel"/>.</t>

<figure title="TE Tunnel list YANG subtree structure" anchor="fig-te-tunnel"><artwork><![CDATA[
     +--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?                         te-types:te-node-id
     |     +--rw destination?                    te-types:te-node-id
     |     +--rw src-tunnel-tp-id?               binary
     |     +--rw dst-tunnel-tp-id?               binary
     |     +--rw bidirectional?                  boolean
     |     +--rw controller
     |     |  +--rw protocol-origin?        identityref
     |     |  +--rw controller-entity-id?   string
     |     +--rw reoptimize-timer?               uint16
     |     +--rw association-objects
     |     |  +--rw association-object* [association-key]
     |     |  |     ...
     |     |  +--rw association-object-extended* [association-key]
     |     |        ...
     |     +--rw protection
     |     |  +--rw enable?                         boolean
     |     |  +--rw protection-type?                identityref
     |     |  +--rw protection-reversion-disable?   boolean
     |     |  +--rw hold-off-time?                  uint32
     |     |  +--rw wait-to-revert?                 uint16
     |     |  +--rw aps-signal-id?                  uint8
     |     +--rw restoration
     |     |  +--rw enable?                          boolean
     |     |  +--rw restoration-type?                identityref
     |     |  +--rw restoration-scheme?              identityref
     |     |  +--rw restoration-reversion-disable?   boolean
     |     |  +--rw hold-off-time?                   uint32
     |     |  +--rw wait-to-restore?                 uint16
     |     |  +--rw wait-to-revert?                  uint16
     |     +--rw te-topology-identifier
     |     |  +--rw provider-id?   te-global-id
     |     |  +--rw client-id?     te-global-id
     |     |  +--rw topology-id?   te-topology-id
     |     +--rw te-bandwidth
     |     |  +--rw (technology)?
     |     |        ...
     |     +--rw link-protection?                identityref
     |     +--rw setup-priority?                 uint8
     |     +--rw hold-priority?                  uint8
     |     +--rw signaling-type?                 identityref
     |     +--rw hierarchy
     |     |  +--rw dependency-tunnels
     |     |  |     ...
     |     |  +--rw hierarchical-link
     |     |        ...
     |     +--rw primary-paths
     |     |  +--rw primary-path* [name]
     |     |        ...
     |     +--rw secondary-paths
     |     |  +--rw secondary-path* [name]
     |     |        ...
     |     +--rw secondary-reverse-paths
     |     |  +--rw secondary-reverse-path* [name]
     |     |        ...
     |     +---x tunnel-action
     |     |  +---w input
     |     |  |     ...
     |     |  +--ro output
     |     |        ...
     |     +---x protection-external-commands
     |        +---w input
     |              ...
]]></artwork></figure>

<t>When the model is used to manage a specific device, the ‘tunnels’ list contains
the TE Tunnels originating from the specific device. When the model is used to
manage a TE controller, the ‘tunnels’ list contains all TE Tunnels and TE
tunnel segments originating from device(s) 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>

<t><list style='empty'>
  <t>A YANG container of one or more TE LSPs established between the source and destination
TE Tunnel termination points.</t>
</list></t>

<t>TE Path:</t>

<t><list style='empty'>
  <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>
</list></t>

<t>TE LSP:</t>

<t><list style='empty'>
  <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>
</list></t>

<t>TE Tunnel Segment:</t>

<t><list style='empty'>
  <t>A part of a multi-domain TE Tunnel that is within a specific network domain.</t>
</list></t>

<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>operational-state:</t>

<t><list style='empty'>
  <t>A YANG leaf that holds the operational state of the tunnel.</t>
</list></t>

<t>name:</t>

<t><list style='empty'>
  <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 amongst all the TE
Tunnels present on devices and controllers.</t>
</list></t>

<t>alias:</t>

<t><list style='empty'>
  <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>
</list></t>

<t>identifier:</t>

<t><list style='empty'>
  <t>A YANG leaf that holds an identifier of the tunnel. This identifier is unique amongst tunnels
originated from the same ingress device.</t>
</list></t>

<t>color:</t>

<t><list style='empty'>
  <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 on to the TE tunnel as described in
<xref target="RFC9012"/>.</t>
</list></t>

<t>admin-state:</t>

<t><list style='empty'>
  <t>A YANG leaf that holds the tunnel administrative state. The administrative
status in state datastore transitions to ‘tunnel-admin-up’ when the tunnel used
by the client layer, and to ‘tunnel-admin-down’ when it is not used by the
client layer.</t>
</list></t>

<t>operational-state:</t>

<t><list style='empty'>
  <t>A YANG leaf that holds the tunnel operational state.</t>
</list></t>

<t>encoding/switching:</t>

<t><list style='empty'>
  <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>
</list></t>

<t>source/destination:</t>

<t><list style='empty'>
  <t>YANG leafs that define the tunnel source and destination node endpoints.</t>
</list></t>

<t>src-tunnel-tp-id/dst-tunnel-tp-id:</t>

<t><list style='empty'>
  <t>YANG leafs that hold the identifiers of source and destination TE Tunnel
 Termination Points (TTPs) <xref target="RFC8795"/> residing on the source and
 destination nodes. 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>

<t>bidirectional:</t>

<t><list style='empty'>
  <t>A YANG leaf that when present indicates the LSPs of a TE Tunnel are bidirectional and co-routed.</t>
</list></t>

<t>controller:</t>

<t><list style='empty'>
  <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 module(s), for example, to add data for PCEP initiated and/or
delegated tunnels.</t>
</list></t>

<t>reoptimize-timer:</t>

<t><list style='empty'>
  <t>A YANG leaf to set the interval period for tunnel reoptimization.</t>
</list></t>

<t>association-objects:</t>

<t><list style='empty'>
  <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>
</list></t>

<t>protection:</t>

<t><list style='empty'>
  <t>A YANG container that holds the TE Tunnel protection properties.</t>
</list></t>

<t>restoration:</t>

<t><list style='empty'>
  <t>A YANG container that holds the TE Tunnel restoration properties.</t>
</list></t>

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

<t><list style='empty'>
  <t>A YANG container that holds the topology identifier associated with the topology where paths for the TE tunnel are computed.</t>
</list></t>

<t>hierarchy:</t>

<t><list style='empty'>
  <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>
</list></t>

<t><list style='empty'>
  <t><list style='empty'>

    <t><list style="symbols">
      <t>dependency-tunnels: A set of hierarchical TE Tunnels provisioned or to be
provisioned in the immediate lower layer that this TE tunnel depends on for
multi-layer path computation. A dependency TE Tunnel is provisioned if and
only if it is used (selected by path computation) at least by one client
layer TE Tunnel. The TE link in the client layer network topology supported
by a dependent TE Tunnel is dynamically created only when the dependency TE
Tunnel is actually provisioned.</t>
      <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>
  </list></t>
</list></t>

<t>primary-paths:</t>

<t><list style='empty'>
  <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>
</list></t>

<t><list style='empty'>

  <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>
</list></t>

<t><list style='empty'>

  <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 path(s) reference path(s)  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>
</list></t>

<t><list style='empty'>
<t></t></list></t>

<t>secondary-paths:</t>

<t><list style='empty'>
  <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. A secondary path contains attributes similar to a primary path.</t>
</list></t>

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

<t><list style='empty'>
  <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 contains
attributes similar to a primary path.</t>
</list></t>

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

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

<t><list style='empty'>
  <t>A YANG leaf that specifies the method used for computing the TE path.</t>
</list></t>

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

<t><list style='empty'>
  <t>A YANG container that holds the path computation server properties when the path is
 externally queried.</t>
</list></t>

<t>compute-only:</t>

<t><list style='empty'>
  <t>A path of a TE Tunnel is, by default, provisioned so that it can instantiated
  in the forwarding plane so that it can carry traffic as soon as a valid path
  is computed. 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 a usual with the associated per path
  constraint(s) and properties on a device or TE controller. The device or TE
  controller computes the feasible path(s) 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 path(s) and
  whenever the path properties change.</t>
</list></t>

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

<t><list style='empty'>
  <t>A YANG leaf that indicates whether or not path computation is to
  be used for a specified path.</t>
</list></t>

<t>lockdown:</t>

<t><list style='empty'>
  <t>A YANG leaf that when set indicates the existing path should not be reoptimized
  after a failure on any of its traversed links.</t>
</list></t>

<t>path-scope:</t>

<t><list style='empty'>
  <t>A YANG leaf that specifies the path scope if segment or an end-to-end path.</t>
</list></t>

<t>preference:</t>

<t><list style='empty'>
  <t>A YANG leaf that specifies the preference for the path. The lower the number
 higher the preference.</t>
</list></t>

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

<t><list style='empty'>
  <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>
</list></t>

<t>association-objects:</t>

<t><list style='empty'>
  <t>A YANG container that holds a list of tunnel association properties.</t>
</list></t>

<t>optimizations:</t>

<t><list style='empty'>
  <t>A YANG container that holds the optimization objectives
  that path computation will use to select a path.</t>
</list></t>

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

<t><list style='empty'>
  <t>A YANG leafref that references an entry from the global list of named path constraints.</t>
</list></t>

<t>te-bandwidth:</t>

<t><list style='empty'>
  <t>A YANG container that holds the path bandwidth (see <xref target="RFC8776"/>).</t>
</list></t>

<t>link-protection:</t>

<t><list style='empty'>
  <t>A YANG leaf that specifies the link protection type required for the links to
be included the computed path (see <xref target="RFC8776"/>).</t>
</list></t>

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

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

<t>signaling-type:</t>

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

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

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

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

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

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

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

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

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

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

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

<t>disjointness:</t>

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

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

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

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

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

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

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

<t>computed-paths-properties:
&gt; A YANG container that holds properties for the list of computed paths.</t>

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

<t><list style='empty'>
  <t>A YANG container that holds a list of errors related to the path.</t>
</list></t>

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

<t><list style='empty'>
  <t>A YANG container that holds the list of LSP provisioning error information.</t>
</list></t>

<t>lsps:</t>

<t><list style='empty'>
  <t>A YANG container that holds a list of LSPs that have been instantiated for this specific path.</t>
</list></t>

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

<t>The ‘lsps’ container includes the set of TE LSP(s) 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
LSP(s) 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 all
TE LSP(s) that traverse all network devices (including ingressing, transiting and
egressing the device) that the TE controller manages.</t>

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

<t><xref target="fig-te-tree"/> shows the tree diagram of depth=4 for the generic TE YANG model defined in
modules ‘ietf-te.yang’. 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 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]
     |           ...
     +--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?                         te-types:te-node-id
     |     +--rw destination?                    te-types:te-node-id
     |     +--rw src-tunnel-tp-id?               binary
     |     +--rw dst-tunnel-tp-id?               binary
     |     +--rw bidirectional?                  boolean
     |     +--rw controller
     |     |     ...
     |     +--rw reoptimize-timer?               uint16
     |     +--rw association-objects
     |     |     ...
     |     +--rw protection
     |     |     ...
     |     +--rw restoration
     |     |     ...
     |     +--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 protection-group-ingress-node-id?
           |       te-types:te-node-id
           +--ro protection-group-egress-node-id?
           |       te-types:te-node-id
           +--ro lsp-record-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" title="YANG Module">

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

<t><list style="symbols">
  <t>ietf-yang-types and ietf-inet-types defined in <xref target="RFC6991"/></t>
  <t>ietf-te-types defined in <xref target="RFC8776"/></t>
</list></t>

<t>This module references the following documents:
<xref target="RFC6991"/>, <xref target="RFC4875"/>, <xref target="RFC7551"/>, <xref target="RFC4206"/>, <xref target="RFC4427"/>,
<xref target="RFC4872"/>, <xref target="RFC3945"/>, <xref target="RFC3209"/>, <xref target="RFC6780"/>, <xref target="RFC8800"/>, 
<xref target="RFC5441"/>, <xref target="RFC8685"/>, <xref target="RFC5440"/>, <xref target="RFC8306"/>, <xref target="RFC5557"/>,
<xref target="RFC5520"/>, <xref target="RFC7471"/>, <xref target="RFC9012"/>, <xref target="RFC8570"/>,
<xref target="RFC8232"/>, and <xref target="RFC7308"/>.</t>

<figure title="TE Tunnel data model YANG module" anchor="fig-basic-te"><artwork><![CDATA[
<CODE BEGINS> file "ietf-te@2022-07-11.yang"
module ietf-te {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-te";

  /* Replace with IANA when assigned */

  prefix te;

  /* Import TE generic types */

  import ietf-te-types {
    prefix te-types;
    reference
      "RFC8776: Common YANG Data Types for Traffic Engineering.";
  }
  import ietf-inet-types {
    prefix inet;
    reference
      "RFC6991: Common YANG Data Types.";
  }
  import ietf-yang-types {
    prefix yang;
    reference
      "RFC6991: Common YANG Data Types.";
  }

  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@juniper.net>

     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
    "YANG data module for TE configuration, state, and RPCs.
     The model fully conforms to the Network Management
     Datastore Architecture (NMDA).

     Copyright (c) 2022 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 2022-07-11 {
    description
      "Initial revision for the TE generic YANG module.";
    reference
      "RFCXXXX: A YANG Data Model for Traffic Engineering Tunnels
       and Interfaces.";
  }

  identity path-computation-error-reason {
    description
      "Base identity for path computation error reasons.";
  }

  identity path-computation-error-no-topology {
    base path-computation-error-reason;
    description
      "Path computation has failed because there is no topology
       with the provided topology-identifier.";
  }

  identity path-computation-error-no-dependent-server {
    base path-computation-error-reason;
    description
      "Path computation has failed because one or more dependent
       path computation servers are unavailable.
       The dependent path computation server could be
       a Backward-Recursive Path Computation (BRPC) downstream
       PCE or a child PCE.";
    reference
      "RFC5441, RFC8685";
  }

  identity path-computation-error-pce-unavailable {
    base path-computation-error-reason;
    description
      "Path computation has failed because PCE is not available.";
    reference
      "RFC5440";
  }

  identity path-computation-error-no-inclusion-hop {
    base path-computation-error-reason;
    description
      "Path computation has failed because there is no
       node or link provided by one or more inclusion hops.";
    reference
      "RFC8685";
  }

  identity path-computation-error-destination-unknown-in-domain {
    base path-computation-error-reason;
    description
      "Path computation has failed because the destination node is
       unknown in indicated destination domain.";
    reference
      "RFC8685";
  }

  identity path-computation-error-no-resource {
    base path-computation-error-reason;
    description
      "Path computation has failed because there is no
       available resource in one or more domains.";
    reference
      "RFC8685";
  }

  identity path-computation-error-child-pce-unresponsive {
    base path-computation-error-reason;
    description
      "Path computation has failed because child PCE is not
       responsive.";
    reference
      "RFC8685";
  }

  identity path-computation-error-destination-domain-unknown {
    base path-computation-error-reason;
    description
      "Path computation has failed because the destination domain
       was unknown.";
    reference
      "RFC8685";
  }

  identity path-computation-error-p2mp {
    base path-computation-error-reason;
    description
      "Path computation has failed because of P2MP reachability
       problem.";
    reference
      "RFC8306";
  }

  identity path-computation-error-no-gco-migration {
    base path-computation-error-reason;
    description
      "Path computation has failed because of no Global Concurrent
       Optimization (GCO) migration path found.";
    reference
      "RFC5557";
  }

  identity path-computation-error-no-gco-solution {
    base path-computation-error-reason;
    description
      "Path computation has failed because of no GCO solution
       found.";
    reference
      "RFC5557";
  }

  identity path-computation-error-path-not-found {
    base path-computation-error-reason;
    description
      "Path computation no path found error reason.";
    reference
      "RFC5440";
  }

  identity path-computation-error-pks-expansion {
    base path-computation-error-reason;
    description
      "Path computation has failed because of Path-Key Subobject
       (PKS)  expansion failure.";
    reference
      "RFC5520";
  }

  identity path-computation-error-brpc-chain-unavailable {
    base path-computation-error-reason;
    description
      "Path computation has failed because PCE BRPC chain
       unavailable.";
    reference
      "RFC5441";
  }

  identity path-computation-error-source-unknown {
    base path-computation-error-reason;
    description
      "Path computation has failed because source node is unknown.";
    reference
      "RFC5440";
  }

  identity path-computation-error-destination-unknown {
    base path-computation-error-reason;
    description
      "Path computation has failed because destination node is
       unknown.";
    reference
      "RFC5440";
  }

  identity path-computation-error-no-server {
    base path-computation-error-reason;
    description
      "Path computation has failed because path computation
       server is unavailable.";
    reference
      "RFC5440";
  }

  identity tunnel-actions-type {
    description
      "TE tunnel actions type.";
  }

  identity tunnel-action-reoptimize {
    base tunnel-actions-type;
    description
      "Reoptimize tunnel action type.";
  }

  identity tunnel-admin-auto {
    base te-types:tunnel-admin-state-type;
    description
      "Tunnel administrative auto state. The administrative status
       in state datastore transitions to 'tunnel-admin-up' when the
       tunnel used by the client layer, and to 'tunnel-admin-down'
       when it is not used by the client layer.";
  }

  identity association-type-diversity {
    base te-types:association-type;
    description
      "Association Type diversity used to associate LSPs whose paths
       are to be diverse from each other.";
    reference
      "RFC8800";
  }

  identity protocol-origin-type {
    description
      "Base identity for protocol origin type.";
  }
  identity protocol-origin-api {
    base protocol-origin-type;
    description
      "Protocol origin is via Application Programmable Interface
       (API).";
  }
  identity protocol-origin-pcep {
    base protocol-origin-type;
    description
      "Protocol origin is Path Computation Engine Protocol (PCEP).";
    reference "RFC5440";
  }
  identity protocol-origin-bgp {
    base protocol-origin-type;
    description
      "Protocol origin is Border Gateway Protocol (BGP).";
    reference "RFC9012";
  }

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

  typedef path-ref {
    type union {
      type leafref {
        path "/te:te/te:tunnels/te:tunnel/"
           + "te:primary-paths/te:primary-path/te:name";
      }
      type leafref {
        path "/te:te/te:tunnels/te:tunnel/"
           + "te:secondary-paths/te:secondary-path/te:name";
      }
    }
    description
      "This type is used by data models that need to reference
       configured primary or secondary path of a TE tunnel.";
  }

  typedef te-gen-node-id {
    type union {
      type te-types:te-node-id;
      type inet:ip-address;
    }
    description
      "Generic type that identifies a node in a TE topology.";
  }

  /**
   * TE tunnel generic groupings
   */

  grouping te-generic-node-id {
    description
      "A reusable grouping for a TE generic node identifier.";
    leaf id {
      type te-gen-node-id;
      description
        "The identifier of the node. Can be represented as IP
         address or dotted quad address.";
    }
    leaf type {
      type enumeration {
        enum ip {
          description
            "IP address representation of the node identifier.";
        }
        enum dotted-quad {
          description
            "Dotted quad address representation of the node
             identifier.";
        }
      }
      description
        "Type of node identifier representation.";
    }
  }

  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 path-computation server when the path is
           externally queried.";
      }
      uses te-generic-node-id;
      description
        "Address of the external path computation
         server.";
    }
    leaf compute-only {
      type empty;
      description
        "When present, the path is computed and updated whenever
         the topology is updated. No resources are committed
         or reserved in the network.";
    }
    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 no reoptimization to be attempted
         for this path.";
    }
    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
         of the full path., or is the an end-to-end path for
         the TE Tunnel.";
    }
  }

  /* This grouping is re-used in path-computation rpc */
  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 rpc */
  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 empty;
      description
        "Indicates whether the reverse path must to be co-routed
         with the primary.";
    }
  }

  /* This grouping is re-used in path-computation rpc */
  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. The value 0 all possible paths.";
    }
  }

  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-description {
          type string;
          description
            "A textual representation of the error occurred during
             path computation.";
        }
        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;
          default "0.0.0.0";
          description
            "Node identifier of node where error occurred.";
        }
        leaf error-link-id {
          type te-types:te-tp-id;
          default "0";
          description
            "Link ID where the error occurred.";
        }
        leaf lsp-id {
          type uint16;
          description
            "The LSP-ID for which path computation was performed.";
        }
      }
    }
    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/te:node";
          }
          description "The node where the LSP state resides on.";
        }
        leaf lsp-id {
          type leafref {
            path "/te:te/te:lsps/te:lsp/te:lsp-id";
          }
          description "The TE LSP identifier.";
        }
      }
    }
  }

  /* This grouping is re-used in path-computation rpc */
  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.";
            }
          }
        }
      }
    }
    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 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 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 enable {
        type boolean;
        default "false";
        description
          "A flag to specify if LSP protection is enabled.";
        reference
          "RFC4427";
      }
      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";
        default "0";
        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 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
          "RFC4427";
      }
    }
    container restoration {
      description
        "Restoration parameters.";
      leaf enable {
        type boolean;
        default "false";
        description
          "A flag to specify if LSP restoration is enabled.";
        reference
          "RFC4427";
      }
      leaf restoration-type {
        type identityref {
          base te-types:lsp-restoration-type;
        }
        default "te-types:lsp-restoration-restore-any";
        description
          "LSP restoration type.";
      }
      leaf restoration-scheme {
        type identityref {
          base te-types:restoration-scheme-type;
        }
        default "te-types:restoration-scheme-preconfigured";
        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-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-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";
        }
      }
    }
  }

  /* This grouping is re-used in path-computation rpc */
  grouping encoding-and-switching-type {
    description
      "Common grouping to define the LSP encoding and
      switching types";
    leaf encoding {
      type identityref {
        base te-types:lsp-encoding-types;
      }
      description
        "LSP encoding type.";
      reference
        "RFC3945";
    }
    leaf switching-type {
      type identityref {
        base te-types:switching-capabilities;
      }
      description
        "LSP switching type.";
      reference
        "RFC3945";
    }
  }

  /* This grouping is re-used in path-computation rpc */
  grouping tunnel-common-attributes {
    description
      "Common grouping to define the TE tunnel parameters";
    leaf source {
      type te-types:te-node-id;
      description
        "TE tunnel source node ID.";
    }
    leaf destination {
      type te-types:te-node-id;
      description
        "TE tunnel destination node identifier.";
    }
    leaf src-tunnel-tp-id {
      type binary;
      description
        "TE tunnel source termination point identifier.";
    }
    leaf dst-tunnel-tp-id {
      type binary;
      description
        "TE tunnel destination termination point identifier.";
    }
    leaf bidirectional {
      type boolean;
      default "false";
      description
        "Indicates a bidirectional co-routed LSP.";
    }
  }

  /* This grouping is re-used in path-computation rpc */
  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 leafref {
              path "/te:te/te:tunnels/te:tunnel/te:name";
              require-instance false;
            }
            description
              "Dependency tunnel name. The tunnel may not have been
               instantiated yet.";
          }
          uses encoding-and-switching-type;
        }
      }
      container hierarchical-link {
        description
          "Identifies a hierarchical link (in client layer)
           that this tunnel is associated with.";
        reference
          "RFC4206";
        leaf local-te-node-id {
          type te-types:te-node-id;
          default "0.0.0.0";
          description
            "The local TE node identifier.";
        }
        leaf local-te-link-tp-id {
          type te-types:te-tp-id;
          default "0";
          description
            "The local TE link termination point identifier.";
        }
        leaf remote-te-node-id {
          type te-types:te-node-id;
          default "0.0.0.0";
          description
            "Remote TE node identifier.";
        }
        uses te-types:te-topology-identifier {
          description
            "The 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 {
      description
        "The constraints applicable to the path. This includes:
         - The path bandwidth constraint
         - The path link protection type constraint
         - The path setup/hold priority constraint
         - path signaling type constraint
         - path metric bounds constraint. The unit of path metric
           bound is interpreted in the context of the metric-type.
           For example for metric-type 'path-metric-loss', the bound
           is multiples of the basic unit 0.000003% as described
           in RFC7471 for OSPF, and RFC8570 for ISIS.
         - path affinity constraints
         - path SRLG constraints";

    }
    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 {
    presence "Enable TE feature.";
    description
      "TE global container.";
    /* 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 string name that uniquely identifies a TE
               interface named admin-group.";
          }
          leaf bit-position {
            type uint32;
            description
              "Bit position representing the administrative group.";
            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 string name that uniquely identifies a TE
               interface named SRLG.";
          }
          leaf value {
            type te-types:srlg;
            description
              "An SRLG value.";
          }
          leaf cost {
            type uint32;
            description
              "SRLG associated cost. Used during path to append
               the path cost when traversing 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 string 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.";
        }
        uses 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 protocol-origin-type;
            }
            description
              "The protocol origin for instantiating the tunnel."; 
          }
          leaf controller-entity-id {
            type string;
            description
              "An identifier unique within the scope of visibility
               that associated with the entity that controls the
               tunnel.";
            reference "RFC8232";
          }
        }
        leaf reoptimize-timer {
          type uint16;
          units "seconds";
          description
            "Frequency of reoptimization of a traffic engineered
             LSP.";
        }
        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.";
            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 = 'false'";
              description
                "The reverse primary path properties.";
              uses path-common-properties;
              uses path-compute-info;
              uses path-state;
              container candidate-secondary-reverse-paths {
                when "../../../../te:bidirectional = 'false'";
                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-path";
                  ordered-by user;
                  description
                    "List of candidate secondary reverse path(s)";
                  leaf secondary-path {
                    type leafref {
                      path "../../../../../../"
                         + "te:secondary-reverse-paths/"
                         + "te:secondary-reverse-path/te:name";
                    }
                    description
                      "A reference to the secondary reverse path that
                       should be utilised when the containing primary
                       reverse path option is in use.";
                  }
                }
              }
            }
            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 path options
                 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 option 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 should be
                     utilised when the containing primary path option
                     is
                     in use.";
                }
                leaf active {
                  type boolean;
                  config false;
                  description
                    "Indicates the current active path option that
                     has been selected of 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;
            uses path-forward-properties;
            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;
            uses path-compute-info;
            uses protection-restoration-properties;
            uses path-state;
          }
        }
        action tunnel-action {
          description
            "Tunnel action.";
          input {
            leaf action-type {
              type identityref {
                base tunnel-actions-type;
              }
              description
                "Tunnel action type.";
            }
          }
          output {
            leaf action-result {
              type identityref {
                base te-types:te-action-result;
              }
              description
                "The result of the tunnel action operation.";
            }
          }
        }
        action protection-external-commands {
          input {
            leaf protection-external-command {
              type identityref {
                base te-types:protection-external-commands;
              }
              description
                "Protection external command.";
            }
            leaf protection-group-ingress-node {
              type boolean;
              default "true";
              description
                "When 'true', indicates that the action is
                 applied on ingress node.
                 By default, the action applies to the ingress node
                 only.";
            }
            leaf protection-group-egress-node {
              type boolean;
              default "false";
              description
                "When set to 'true', indicates that the action is
                 applied on egress node.
                 By default, the action applies to the ingress node
                 only.";
            }
            leaf path-ref {
              type path-ref;
              description
                "Indicates to which path 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 TE LSP state resides on.";
        }
        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.";
            }
          }
          default "ingress";
          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.";
            }
          }
          default "primary";
          description
            "LSP resource allocation state.";
          reference
            "RFC4872, section 4.2.1";
        }
        leaf lockout-of-normal {
          type boolean;
          default "false";
          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;
          default "false";
          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.";
            }
          }
          default "working";
          description
            "LSP role type.";
          reference
            "RFC4872, section 4.2.1";
        }
        leaf lsp-protection-state {
          type identityref {
            base te-types:lsp-protection-state;
          }
          default "te-types:normal";
          description
            "The state of the APS state machine controlling which
             tunnels are using the resources of the protecting LSP.";
          reference
            "RFC7271 and RFC8234";
        }
        leaf protection-group-ingress-node-id {
          type te-types:te-node-id;
          default "0.0.0.0";
          description
            "Indicates the te-node-id of the protection group
             ingress node when the APS state represents an external
             command (LoP, SF, MS) applied to it or a WTR timer
             running on it. If the external command is not applied to
             the ingress node or the WTR timer is not running on it,
             this attribute is not specified. A value 0.0.0.0 is used
             when the te-node-id of the protection group ingress node
             is unknown (e.g., because the ingress node is outside
             the scope of control of the server)";
        }
        leaf protection-group-egress-node-id {
          type te-types:te-node-id;
          default "0.0.0.0";
          description
            "Indicates the te-node-id of the protection group egress
             node when the APS state represents an external command
             (LoP, SF, MS) applied to it or a WTR timer running on
             it. If the external command is not applied to the
             ingress node or the WTR timer is not running on it, this
             attribute is not specified. A value 0.0.0.0 is used when
             the te-node-id of the protection group ingress node is
             unknown (e.g., because the ingress node is outside the
             scope of control of the server)";
        }
        container lsp-record-route-information {
          description
            "RSVP recorded route object information.";
          list lsp-record-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
      "TE tunnels RPC nodes.";
    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
      "TE tunnels actions RPC";
    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 tunnel-actions-type;
          }
          description
            "The action type.";
        }
        leaf disruptive {
          when "derived-from-or-self(../action, "
             + "'te:tunnel-action-reoptimize')";
          type empty;
          description
            "When present, specifies whether or not the
             reoptimization
             action is allowed to be disruptive.";
        }
      }
    }
    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" title="TE Device YANG Model">

<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" title="Module Structure">

<section anchor="te-interfaces" title="TE Interfaces">

<t>This branch of the model manages TE interfaces that are present on a device. 
Examples of TE interface properties are:</t>

<t><list style="symbols">
  <t>Maximum reservable bandwidth, bandwidth constraints (BC)</t>
  <t>Flooding parameters
  <list style="symbols">
      <t>Flooding intervals and threshold values</t>
    </list></t>
  <t>Interface attributes
  <list style="symbols">
      <t>(Extended) administrative groups</t>
      <t>SRLG values</t>
      <t>TE metric value</t>
    </list></t>
  <t>Fast reroute backup tunnel properties (such as static, auto-tunnel)</t>
</list></t>

<t>The derived state associated with interfaces is grouped under the interface
“state” sub-container as shown in <xref target="fig-if-te-state"/>.  This covers state data
such as:</t>

<t><list style="symbols">
  <t>Bandwidth information: maximum bandwidth, available bandwidth at different
priorities and for each class-type (CT)</t>
  <t>List of admitted LSPs
  <list style="symbols">
      <t>Name, bandwidth value and pool, time, priority</t>
    </list></t>
  <t>Statistics: state counters, flooding counters, admission counters
(accepted/rejected), preemption counters</t>
  <t>Adjacency information
  <list style="symbols">
      <t>Neighbor address</t>
      <t>Metric value</t>
    </list></t>
</list></t>

<figure title="TE interface state YANG subtree" anchor="fig-if-te-state"><artwork><![CDATA[
module: ietf-te-device
  augment /te:te:
      +--rw interfaces
         .
         +-- rw te-dev:te-attributes
                <<intended configuration>>
             .
             +-- ro state
                <<derived state associated with the TE interface>>
]]></artwork></figure>

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

<t><xref target="fig-te-dev-tree"/> shows the tree diagram of the device TE YANG model defined in
modules ‘ietf-te-device.yang’.</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* [interface]
    |     +--rw interface                           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 state
    |        +--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
    +--rw performance-thresholds
  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 life-time?         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" title="YANG Module">

<t>The device TE YANG module ‘ietf-te-device’ imports the following module(s):</t>

<t><list style="symbols">
  <t>ietf-yang-types and ietf-inet-types defined in <xref target="RFC6991"/></t>
  <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="RFC8776"/></t>
  <t>ietf-te defined in this document</t>
</list></t>

<figure title="TE device data model YANG module" anchor="fig-te-device-types"><artwork><![CDATA[
<CODE BEGINS> file "ietf-te-device@2022-07-11.yang"
module ietf-te-device {
  yang-version 1.1;
  namespace "urn:ietf:params:xml:ns:yang:ietf-te-device";

  /* Replace with IANA when assigned */

  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
      "RFC8776: 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@juniper.net>

     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) 2022 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 2022-07-11 {
    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 "interface";
        description
          "TE interfaces.";
        leaf interface {
          type if:interface-ref;
          description
            "TE interface name.";
        }
        /* 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
                "choice 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 state {
          config false;
          description
            "State parameters for interface TE metric.";
          container te-advertisements-state {
            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 a existing LSP to be deleted
           from forwarding.";
      }
    }
    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: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: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" title="Notifications">

<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" title="IANA Considerations">

<t>This document registers the following URIs in the IETF XML registry
<xref target="RFC3688"/>.
Following the format in <xref target="RFC3688"/>, the following 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" title="Security Considerations">

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

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

<t>There are a number of data nodes defined in 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 to interruption to services
carried over the network.</t>

<t>“/te/tunnels-path-compute”: using this RPC, an attacker can retrieve secured
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" title="Acknowledgement">

<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" title="Contributors">

<figure><artwork><![CDATA[
   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>
<section anchor="AppendixA" title="Appendix A: Data Tree Examples">

<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[
 10.0.0.1         10.0.0.2      10.0.0.4
 +-----+         +------+      +------+
 |     |         |      |      |      |
 |  A  +---------+  B   +------+  D   |
 +--+--+         +------+      +--+---+
    |                             |
    |            +-------+        |
    |            |       |        |
    +------------+   C   +--------+
                 |       |
                 +-------+
                 10.0.0.3
]]></artwork></figure>

<section anchor="TeTunnel" title="Basic Tunnel Setup">

<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",
      "encoding": "te-types:lsp-encoding-packet",
      "admin-state": "te-types:tunnel-state-up",
      "source": "10.0.0.1",
      "destination": "10.0.0.4",
      "signaling-type": "te-types:path-setup-rsvp"
    }
  ]
}
]]></artwork></figure>

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

<t>This example uses the YANG data model to create a ‘named path constraint’ that can be reference 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": "te-types:path-metric-hop",
              "upper-bound": "3"
    }
   }
  }
}
]]></artwork></figure>

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

<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:ietf-tunnel": [
    {
      "name": "Example_LSP_Tunnel_A_4_1",
      "encoding": "te-types:lsp-encoding-packet",
      "description": "Simple_LSP_with_named_path",
      "admin-state": "te-types:tunnel-state-up",
      "source": "10.0.0.1",
      "destination": "10.0.0.4",
      "signaling-type": "path-setup-rsvp",
      "primary-paths": [
        {
          "primary-path": {
            "name": "Simple_LSP_1",
            "use-path-computation": "true",
            "named-path-constraint": "max-hop-3"
          }
        }
      ]
    }
  ]
}
]]></artwork></figure>

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

<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",
      "encoding": "te-types:lsp-encoding-packet",
      "admin-state": "te-types:tunnel-state-up",
      "source": "10.0.0.1",
      "destination": "10.0.0.4",
      "signaling-type": "te-types:path-setup-rsvp",
      "primary-paths": {
        "primary-path": [
          {
            "name": "path1",
            "path-metric-bounds": {
              "path-metric-bound": [ 
                {
                  "metric-type": "te-types:path-metric-hop",
                  "upper-bound": "3"
                }
              ]
            }
          }
        ]
      }
    }
  ]
}
]]></artwork></figure>

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

<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"
     /p2p-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-paths": {
    "primary-path": [
      {
        "name": "path1",
        "path-computation-method": "te-types:path-locally-computed",
        "computed-paths-properties": {
          "computed-path-properties": [
            {
              "k-index": "1",
              "path-properties": {
                "path-route-objects": {
                  "path-route-object": [
                    {
                      "index": "1",
                      "numbered-node-hop": {
                        "node-id": "10.0.0.2"
                      }
                    },
                    {
                      "index": "2",
                      "numbered-node-hop": {
                        "node-id": "10.0.0.4"
                      }
                    }
                  ]
                }
              }
            }
          ]
        },
        "lsps": {
          "lsp": [
            {
              "tunnel-name": "Example_LSP_Tunnel_A_4_1",
              "node": "10.0.0.1 ",
              "lsp-id": "25356"
            }
          ]
        }
      }
    ]
  }
}
]]></artwork></figure>

</section>
</section>
<section anchor="AppendixB" title="Appendix B: Full Model Tree Diagram">

<t><xref target="fig-te-tree-full"/> shows the full tree diagram of the TE YANG model defined in
module ‘ietf-te.yang’.</t>

<figure title="Full tree diagram of TE Tunnel YANG data model" anchor="fig-te-tree-full"><artwork><![CDATA[
module: ietf-te
  +--rw te!
     +--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
     |     +---u 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]
     |     |     +---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-path]
     |     |     |        +--rw secondary-path    leafref
     |     |     +--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
     |     |     +---u path-forward-properties
     |     |     +---u path-compute-info
     |     |     +---u protection-restoration-properties
     |     |     +---u path-state
     |     +--rw secondary-reverse-paths
     |     |  +--rw secondary-reverse-path* [name]
     |     |     +---u path-common-properties
     |     |     +---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 protection-group-ingress-node-id?
     |           |       te-types:te-node-id
     |           +---w protection-group-egress-node-id?
     |           |       te-types:te-node-id
     |           +---w path-ref?                           path-ref
     |           +---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 protection-group-ingress-node-id?
           |       te-types:te-node-id
           +--ro protection-group-egress-node-id?
           |       te-types:te-node-id
           +--ro lsp-record-route-information
              +--ro lsp-record-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 te-generic-node-id:
    +-- id?     te-gen-node-id
    +-- type?   enumeration
  grouping path-common-properties:
    +-- name?                      string
    +-- path-computation-method?   identityref
    +-- path-computation-server
    |  +---u 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?    empty
  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-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?          -> /te/lsps/lsp/node
          +--ro lsp-id?        -> /te/lsps/lsp/lsp-id
  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
    |  +-- enable?                         boolean
    |  +-- protection-type?                identityref
    |  +-- protection-reversion-disable?   boolean
    |  +-- hold-off-time?                  uint32
    |  +-- wait-to-revert?                 uint16
    |  +-- aps-signal-id?                  uint8
    +-- restoration
       +-- enable?                          boolean
       +-- 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-generic-node-id
       +-- association-object-extended* [association-key]
          +-- association-key?   string
          +-- type?              identityref
          +-- id?                uint16
          +-- source
          |  +---u te-generic-node-id
          +-- global-source?     uint32
          +-- extended-id?       yang:hex-string
  grouping encoding-and-switching-type:
    +-- encoding?         identityref
    +-- switching-type?   identityref
  grouping tunnel-common-attributes:
    +-- source?             te-types:te-node-id
    +-- destination?        te-types:te-node-id
    +-- src-tunnel-tp-id?   binary
    +-- dst-tunnel-tp-id?   binary
    +-- bidirectional?      boolean
  grouping tunnel-hierarchy-properties:
    +-- hierarchy
       +-- dependency-tunnels
       |  +-- dependency-tunnel* [name]
       |     +-- name?
       |     |       -> /te/tunnels/tunnel/name
       |     +---u encoding-and-switching-type
       +-- hierarchical-link
          +-- local-te-node-id?                  te-types:te-node-id
          +-- local-te-link-tp-id?               te-types:te-tp-id
          +-- remote-te-node-id?                 te-types:te-node-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

module: ietf-te-types

  grouping te-bandwidth:
    +-- te-bandwidth
       +-- (technology)?
          +--:(generic)
             +-- generic?   te-bandwidth
  grouping te-label:
    +-- te-label
       +-- (technology)?
       |  +--:(generic)
       |     +-- generic?   rt-types:generalized-label
       +-- direction?       te-label-direction
  grouping te-topology-identifier:
    +-- te-topology-identifier
       +-- provider-id?   te-global-id
       +-- client-id?     te-global-id
       +-- topology-id?   te-topology-id
  grouping performance-metrics-one-way-delay-loss:
    +-- one-way-delay?             uint32
    +-- one-way-delay-normality?
            te-types:performance-metrics-normality
  grouping performance-metrics-two-way-delay-loss:
    +-- two-way-delay?             uint32
    +-- two-way-delay-normality?
            te-types:performance-metrics-normality
  grouping performance-metrics-one-way-bandwidth:
    +-- one-way-residual-bandwidth?
    |       rt-types:bandwidth-ieee-float32
    +-- one-way-residual-bandwidth-normality?
    |       te-types:performance-metrics-normality
    +-- one-way-available-bandwidth?
    |       rt-types:bandwidth-ieee-float32
    +-- one-way-available-bandwidth-normality?
    |       te-types:performance-metrics-normality
    +-- one-way-utilized-bandwidth?
    |       rt-types:bandwidth-ieee-float32
    +-- one-way-utilized-bandwidth-normality?
            te-types:performance-metrics-normality
  grouping one-way-performance-metrics:
    +-- one-way-delay?                 uint32
    +-- one-way-residual-bandwidth?
    |       rt-types:bandwidth-ieee-float32
    +-- one-way-available-bandwidth?
    |       rt-types:bandwidth-ieee-float32
    +-- one-way-utilized-bandwidth?
            rt-types:bandwidth-ieee-float32
  grouping two-way-performance-metrics:
    +-- two-way-delay?   uint32
  grouping performance-metrics-thresholds:
    +---u one-way-performance-metrics
    +---u two-way-performance-metrics
  grouping performance-metrics-attributes:
    +-- performance-metrics-one-way
    |  +---u performance-metrics-one-way-delay-loss
    |  +---u performance-metrics-one-way-bandwidth
    +-- performance-metrics-two-way
       +---u performance-metrics-two-way-delay-loss
  grouping performance-metrics-throttle-container:
    +-- throttle
       +-- one-way-delay-offset?                  uint32
       +-- measure-interval?                      uint32
       +-- advertisement-interval?                uint32
       +-- suppression-interval?                  uint32
       +-- threshold-out
       |  +---u performance-metrics-thresholds
       +-- threshold-in
       |  +---u performance-metrics-thresholds
       +-- threshold-accelerated-advertisement
          +---u performance-metrics-thresholds
  grouping explicit-route-hop:
    +-- (type)?
       +--:(numbered-node-hop)
       |  +-- numbered-node-hop
       |     +-- node-id     te-node-id
       |     +-- hop-type?   te-hop-type
       +--:(numbered-link-hop)
       |  +-- numbered-link-hop
       |     +-- link-tp-id    te-tp-id
       |     +-- hop-type?     te-hop-type
       |     +-- direction?    te-link-direction
       +--:(unnumbered-link-hop)
       |  +-- unnumbered-link-hop
       |     +-- link-tp-id    te-tp-id
       |     +-- node-id       te-node-id
       |     +-- hop-type?     te-hop-type
       |     +-- direction?    te-link-direction
       +--:(as-number)
       |  +-- as-number-hop
       |     +-- as-number    inet:as-number
       |     +-- hop-type?    te-hop-type
       +--:(label)
          +-- label-hop
             +---u te-label
  grouping record-route-state:
    +-- index?                       uint32
    +-- (type)?
       +--:(numbered-node-hop)
       |  +-- numbered-node-hop
       |     +-- node-id    te-node-id
       |     +-- flags*     path-attribute-flags
       +--:(numbered-link-hop)
       |  +-- numbered-link-hop
       |     +-- link-tp-id    te-tp-id
       |     +-- flags*        path-attribute-flags
       +--:(unnumbered-link-hop)
       |  +-- unnumbered-link-hop
       |     +-- link-tp-id    te-tp-id
       |     +-- node-id?      te-node-id
       |     +-- flags*        path-attribute-flags
       +--:(label)
          +-- label-hop
             +---u te-label
             +-- flags*      path-attribute-flags
  grouping label-restriction-info:
    +-- restriction?    enumeration
    +-- index?          uint32
    +-- label-start
    |  +---u te-label
    +-- label-end
    |  +---u te-label
    +-- label-step
    |  +-- (technology)?
    |     +--:(generic)
    |        +-- generic?   int32
    +-- range-bitmap?   yang:hex-string
  grouping label-set-info:
    +-- label-restrictions
       +-- label-restriction* [index]
          +---u label-restriction-info
  grouping optimization-metric-entry:
    +-- metric-type?                      identityref
    +-- weight?                           uint8
    +-- explicit-route-exclude-objects
    |  +---u path-route-exclude-objects
    +-- explicit-route-include-objects
       +---u path-route-include-objects
  grouping common-constraints:
    +---u te-bandwidth
    +-- link-protection?   identityref
    +-- setup-priority?    uint8
    +-- hold-priority?     uint8
    +-- signaling-type?    identityref
  grouping tunnel-constraints:
    +---u te-topology-identifier
    +---u common-constraints
  grouping path-constraints-route-objects:
    +-- explicit-route-objects-always
       +-- route-object-exclude-always* [index]
       |  +-- index?                uint32
       |  +---u explicit-route-hop
       +-- route-object-include-exclude* [index]
          +-- explicit-route-usage?   identityref
          +-- index?                  uint32
          +---u explicit-route-hop
  grouping path-route-include-objects:
    +-- route-object-include-object* [index]
       +-- index?                uint32
       +---u explicit-route-hop
  grouping path-route-exclude-objects:
    +-- route-object-exclude-object* [index]
       +-- index?                uint32
       +---u explicit-route-hop
  grouping generic-path-metric-bounds:
    +-- path-metric-bounds
       +-- path-metric-bound* [metric-type]
          +-- metric-type?   identityref
          +-- upper-bound?   uint64
  grouping generic-path-optimization:
    +-- optimizations
       +-- (algorithm)?
          +--:(metric) {path-optimization-metric}?
          |  +-- optimization-metric* [metric-type]
          |  |  +---u optimization-metric-entry
          |  +-- tiebreakers
          |     +-- tiebreaker* [tiebreaker-type]
          |        +-- tiebreaker-type?   identityref
          +--:(objective-function)
                   {path-optimization-objective-function}?
             +-- objective-function
                +-- objective-function-type?   identityref
  grouping generic-path-affinities:
    +-- path-affinities-values
    |  +-- path-affinities-value* [usage]
    |     +-- usage?   identityref
    |     +-- value?   admin-groups
    +-- path-affinity-names
       +-- path-affinity-name* [usage]
          +-- usage?           identityref
          +-- affinity-name* [name]
             +-- name?   string
  grouping generic-path-srlgs:
    +-- path-srlgs-lists
    |  +-- path-srlgs-list* [usage]
    |     +-- usage?    identityref
    |     +-- values*   srlg
    +-- path-srlgs-names
       +-- path-srlgs-name* [usage]
          +-- usage?   identityref
          +-- names*   string
  grouping generic-path-disjointness:
    +-- disjointness?   te-path-disjointness
  grouping common-path-constraints-attributes:
    +---u common-constraints
    +---u generic-path-metric-bounds
    +---u generic-path-affinities
    +---u generic-path-srlgs
  grouping generic-path-constraints:
    +-- path-constraints
       +---u common-path-constraints-attributes
       +---u generic-path-disjointness
  grouping generic-path-properties:
    +--ro path-properties
       +--ro path-metric* [metric-type]
       |  +--ro metric-type?          identityref
       |  +--ro accumulative-value?   uint64
       +---u generic-path-affinities
       +---u generic-path-srlgs
       +--ro path-route-objects
          +--ro path-route-object* [index]
             +--ro index?                uint32
             +---u explicit-route-hop
]]></artwork></figure>

</section>


  </middle>

  <back>

    <references title='Normative References'>





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



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



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



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



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



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



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



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



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



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



<reference anchor='RFC8776' target='https://www.rfc-editor.org/info/rfc8776'>
<front>
<title>Common YANG Data Types for Traffic Engineering</title>
<author fullname='T. Saad' initials='T.' surname='Saad'><organization/></author>
<author fullname='R. Gandhi' initials='R.' surname='Gandhi'><organization/></author>
<author fullname='X. Liu' initials='X.' surname='Liu'><organization/></author>
<author fullname='V. Beeram' initials='V.' surname='Beeram'><organization/></author>
<author fullname='I. Bryskin' initials='I.' surname='Bryskin'><organization/></author>
<date month='June' year='2020'/>
<abstract><t>This document defines a collection of common data types and groupings in YANG data modeling language. These derived common types and groupings are intended to be imported by modules that model Traffic Engineering (TE) configuration and state capabilities.</t></abstract>
</front>
<seriesInfo name='RFC' value='8776'/>
<seriesInfo name='DOI' value='10.17487/RFC8776'/>
</reference>



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



<reference anchor='RFC8342' target='https://www.rfc-editor.org/info/rfc8342'>
<front>
<title>Network Management Datastore Architecture (NMDA)</title>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<author fullname='J. Schoenwaelder' initials='J.' surname='Schoenwaelder'><organization/></author>
<author fullname='P. Shafer' initials='P.' surname='Shafer'><organization/></author>
<author fullname='K. Watsen' initials='K.' surname='Watsen'><organization/></author>
<author fullname='R. Wilton' initials='R.' surname='Wilton'><organization/></author>
<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' target='https://www.rfc-editor.org/info/rfc9012'>
<front>
<title>The BGP Tunnel Encapsulation Attribute</title>
<author fullname='K. Patel' initials='K.' surname='Patel'><organization/></author>
<author fullname='G. Van de Velde' initials='G.' surname='Van de Velde'><organization/></author>
<author fullname='S. Sangli' initials='S.' surname='Sangli'><organization/></author>
<author fullname='J. Scudder' initials='J.' surname='Scudder'><organization/></author>
<date month='April' year='2021'/>
<abstract><t>This document defines a BGP path attribute known as the &quot;Tunnel Encapsulation attribute&quot;, 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='RFC3945' target='https://www.rfc-editor.org/info/rfc3945'>
<front>
<title>Generalized Multi-Protocol Label Switching (GMPLS) Architecture</title>
<author fullname='E. Mannie' initials='E.' role='editor' surname='Mannie'><organization/></author>
<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='RFC8795' target='https://www.rfc-editor.org/info/rfc8795'>
<front>
<title>YANG Data Model for Traffic Engineering (TE) Topologies</title>
<author fullname='X. Liu' initials='X.' surname='Liu'><organization/></author>
<author fullname='I. Bryskin' initials='I.' surname='Bryskin'><organization/></author>
<author fullname='V. Beeram' initials='V.' surname='Beeram'><organization/></author>
<author fullname='T. Saad' initials='T.' surname='Saad'><organization/></author>
<author fullname='H. Shah' initials='H.' surname='Shah'><organization/></author>
<author fullname='O. Gonzalez de Dios' initials='O.' surname='Gonzalez de Dios'><organization/></author>
<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='RFC4875' target='https://www.rfc-editor.org/info/rfc4875'>
<front>
<title>Extensions to Resource Reservation Protocol - Traffic Engineering (RSVP-TE) for Point-to-Multipoint TE Label Switched Paths (LSPs)</title>
<author fullname='R. Aggarwal' initials='R.' role='editor' surname='Aggarwal'><organization/></author>
<author fullname='D. Papadimitriou' initials='D.' role='editor' surname='Papadimitriou'><organization/></author>
<author fullname='S. Yasukawa' initials='S.' role='editor' surname='Yasukawa'><organization/></author>
<date month='May' year='2007'/>
<abstract><t>This document describes extensions to Resource Reservation Protocol - Traffic Engineering (RSVP-TE) for the set up of Traffic Engineered (TE) point-to-multipoint (P2MP) Label Switched Paths (LSPs) in Multi- Protocol Label Switching (MPLS) and Generalized MPLS (GMPLS) networks.  The solution relies on RSVP-TE without requiring a multicast routing protocol in the Service Provider core.  Protocol elements and procedures for this solution are described.</t><t>There can be various applications for P2MP TE LSPs such as IP multicast.  Specification of how such applications will use a P2MP TE LSP is outside the scope of this document.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='4875'/>
<seriesInfo name='DOI' value='10.17487/RFC4875'/>
</reference>



<reference anchor='RFC7551' target='https://www.rfc-editor.org/info/rfc7551'>
<front>
<title>RSVP-TE Extensions for Associated Bidirectional Label Switched Paths (LSPs)</title>
<author fullname='F. Zhang' initials='F.' role='editor' surname='Zhang'><organization/></author>
<author fullname='R. Jing' initials='R.' surname='Jing'><organization/></author>
<author fullname='R. Gandhi' initials='R.' role='editor' surname='Gandhi'><organization/></author>
<date month='May' year='2015'/>
<abstract><t>This document describes Resource Reservation Protocol (RSVP) extensions to bind two point-to-point unidirectional Label Switched Paths (LSPs) into an associated bidirectional LSP.  The association is achieved by defining new Association Types for use in ASSOCIATION and in Extended ASSOCIATION Objects. One of these types enables independent provisioning of the associated bidirectional LSPs on both sides, while the other enables single-sided provisioning.  The REVERSE_LSP Object is also defined to enable a single endpoint to trigger creation of the reverse LSP and to specify parameters of the reverse LSP in the single-sided provisioning case.</t></abstract>
</front>
<seriesInfo name='RFC' value='7551'/>
<seriesInfo name='DOI' value='10.17487/RFC7551'/>
</reference>



<reference anchor='RFC4206' target='https://www.rfc-editor.org/info/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'><organization/></author>
<author fullname='Y. Rekhter' initials='Y.' surname='Rekhter'><organization/></author>
<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='RFC4427' target='https://www.rfc-editor.org/info/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'><organization/></author>
<author fullname='D. Papadimitriou' initials='D.' role='editor' surname='Papadimitriou'><organization/></author>
<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>



<reference anchor='RFC4872' target='https://www.rfc-editor.org/info/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'><organization/></author>
<author fullname='Y. Rekhter' initials='Y.' role='editor' surname='Rekhter'><organization/></author>
<author fullname='D. Papadimitriou' initials='D.' role='editor' surname='Papadimitriou'><organization/></author>
<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' target='https://www.rfc-editor.org/info/rfc6780'>
<front>
<title>RSVP ASSOCIATION Object Extensions</title>
<author fullname='L. Berger' initials='L.' surname='Berger'><organization/></author>
<author fullname='F. Le Faucheur' initials='F.' surname='Le Faucheur'><organization/></author>
<author fullname='A. Narayanan' initials='A.' surname='Narayanan'><organization/></author>
<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='RFC8800' target='https://www.rfc-editor.org/info/rfc8800'>
<front>
<title>Path Computation Element Communication Protocol (PCEP) Extension for Label Switched Path (LSP) Diversity Constraint Signaling</title>
<author fullname='S. Litkowski' initials='S.' surname='Litkowski'><organization/></author>
<author fullname='S. Sivabalan' initials='S.' surname='Sivabalan'><organization/></author>
<author fullname='C. Barth' initials='C.' surname='Barth'><organization/></author>
<author fullname='M. Negi' initials='M.' surname='Negi'><organization/></author>
<date month='July' year='2020'/>
<abstract><t>This document introduces a simple mechanism to associate a group of Label Switched Paths (LSPs) via an extension to the Path Computation Element Communication Protocol (PCEP) with the purpose of computing diverse (disjointed) paths for those LSPs.  The proposed extension allows a Path Computation Client (PCC) to advertise to a Path Computation Element (PCE) that a particular LSP belongs to a particular Disjoint Association Group; thus, the PCE knows that the LSPs in the same group need to be disjoint from each other.</t></abstract>
</front>
<seriesInfo name='RFC' value='8800'/>
<seriesInfo name='DOI' value='10.17487/RFC8800'/>
</reference>



<reference anchor='RFC5441' target='https://www.rfc-editor.org/info/rfc5441'>
<front>
<title>A Backward-Recursive PCE-Based Computation (BRPC) Procedure to Compute Shortest Constrained Inter-Domain Traffic Engineering Label Switched Paths</title>
<author fullname='JP. Vasseur' initials='JP.' role='editor' surname='Vasseur'><organization/></author>
<author fullname='R. Zhang' initials='R.' surname='Zhang'><organization/></author>
<author fullname='N. Bitar' initials='N.' surname='Bitar'><organization/></author>
<author fullname='JL. Le Roux' initials='JL.' surname='Le Roux'><organization/></author>
<date month='April' year='2009'/>
<abstract><t>The ability to compute shortest constrained Traffic Engineering Label Switched Paths (TE LSPs) in Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS) networks across multiple domains has been identified as a key requirement.  In this context, a domain is a collection of network elements within a common sphere of address management or path computational responsibility such as an IGP area or an Autonomous Systems.  This document specifies a procedure relying on the use of multiple Path Computation Elements (PCEs) to compute such inter-domain shortest constrained paths across a predetermined sequence of domains, using a backward-recursive path computation technique.  This technique preserves confidentiality across domains, which is sometimes required when domains are managed by different service providers.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5441'/>
<seriesInfo name='DOI' value='10.17487/RFC5441'/>
</reference>



<reference anchor='RFC8685' target='https://www.rfc-editor.org/info/rfc8685'>
<front>
<title>Path Computation Element Communication Protocol (PCEP) Extensions for the Hierarchical Path Computation Element (H-PCE) Architecture</title>
<author fullname='F. Zhang' initials='F.' surname='Zhang'><organization/></author>
<author fullname='Q. Zhao' initials='Q.' surname='Zhao'><organization/></author>
<author fullname='O. Gonzalez de Dios' initials='O.' surname='Gonzalez de Dios'><organization/></author>
<author fullname='R. Casellas' initials='R.' surname='Casellas'><organization/></author>
<author fullname='D. King' initials='D.' surname='King'><organization/></author>
<date month='December' year='2019'/>
<abstract><t>The Hierarchical Path Computation Element (H-PCE) architecture is defined in RFC 6805.  It provides a mechanism to derive an optimum end-to-end path in a multi-domain environment by using a hierarchical relationship between domains to select the optimum sequence of domains and optimum paths across those domains.</t><t>This document defines extensions to the Path Computation Element Communication Protocol (PCEP) to support H-PCE procedures.</t></abstract>
</front>
<seriesInfo name='RFC' value='8685'/>
<seriesInfo name='DOI' value='10.17487/RFC8685'/>
</reference>



<reference anchor='RFC5440' target='https://www.rfc-editor.org/info/rfc5440'>
<front>
<title>Path Computation Element (PCE) Communication Protocol (PCEP)</title>
<author fullname='JP. Vasseur' initials='JP.' role='editor' surname='Vasseur'><organization/></author>
<author fullname='JL. Le Roux' initials='JL.' role='editor' surname='Le Roux'><organization/></author>
<date month='March' year='2009'/>
<abstract><t>This document specifies the Path Computation Element (PCE) Communication Protocol (PCEP) for communications between a Path Computation Client (PCC) and a PCE, or between two PCEs.  Such interactions include path computation requests and path computation replies as well as notifications of specific states related to the use of a PCE in the context of Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS) Traffic Engineering.  PCEP is designed to be flexible and extensible so as to easily allow for the addition of further messages and objects, should further requirements be expressed in the future.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5440'/>
<seriesInfo name='DOI' value='10.17487/RFC5440'/>
</reference>



<reference anchor='RFC8306' target='https://www.rfc-editor.org/info/rfc8306'>
<front>
<title>Extensions to the Path Computation Element Communication Protocol (PCEP) for Point-to-Multipoint Traffic Engineering Label Switched Paths</title>
<author fullname='Q. Zhao' initials='Q.' surname='Zhao'><organization/></author>
<author fullname='D. Dhody' initials='D.' role='editor' surname='Dhody'><organization/></author>
<author fullname='R. Palleti' initials='R.' surname='Palleti'><organization/></author>
<author fullname='D. King' initials='D.' surname='King'><organization/></author>
<date month='November' year='2017'/>
<abstract><t>Point-to-point Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS) Traffic Engineering Label Switched Paths (TE LSPs) may be established using signaling techniques, but their paths may first need to be determined.  The Path Computation Element (PCE) has been identified as an appropriate technology for the determination of the paths of point-to-multipoint (P2MP) TE LSPs.</t><t>This document describes extensions to the PCE Communication Protocol (PCEP) to handle requests and responses for the computation of paths for P2MP TE LSPs.</t><t>This document obsoletes RFC 6006.</t></abstract>
</front>
<seriesInfo name='RFC' value='8306'/>
<seriesInfo name='DOI' value='10.17487/RFC8306'/>
</reference>



<reference anchor='RFC5557' target='https://www.rfc-editor.org/info/rfc5557'>
<front>
<title>Path Computation Element Communication Protocol (PCEP) Requirements and Protocol Extensions in Support of Global Concurrent Optimization</title>
<author fullname='Y. Lee' initials='Y.' surname='Lee'><organization/></author>
<author fullname='JL. Le Roux' initials='JL.' surname='Le Roux'><organization/></author>
<author fullname='D. King' initials='D.' surname='King'><organization/></author>
<author fullname='E. Oki' initials='E.' surname='Oki'><organization/></author>
<date month='July' year='2009'/>
<abstract><t>The Path Computation Element Communication Protocol (PCEP) allows Path Computation Clients (PCCs) to request path computations from Path Computation Elements (PCEs), and lets the PCEs return responses.  When computing or reoptimizing the routes of a set of Traffic Engineering Label Switched Paths (TE LSPs) through a network, it may be advantageous to perform bulk path computations in order to avoid blocking problems and to achieve more optimal network-wide solutions. Such bulk optimization is termed Global Concurrent Optimization (GCO). A GCO is able to simultaneously consider the entire topology of the network and the complete set of existing TE LSPs, and their respective constraints, and look to optimize or reoptimize the entire network to satisfy all constraints for all TE LSPs.  A GCO may also be applied to some subset of the TE LSPs in a network.  The GCO application is primarily a Network Management System (NMS) solution.</t><t>This document provides application-specific requirements and the PCEP extensions in support of GCO applications.  [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5557'/>
<seriesInfo name='DOI' value='10.17487/RFC5557'/>
</reference>



<reference anchor='RFC5520' target='https://www.rfc-editor.org/info/rfc5520'>
<front>
<title>Preserving Topology Confidentiality in Inter-Domain Path Computation Using a Path-Key-Based Mechanism</title>
<author fullname='R. Bradford' initials='R.' role='editor' surname='Bradford'><organization/></author>
<author fullname='JP. Vasseur' initials='JP.' surname='Vasseur'><organization/></author>
<author fullname='A. Farrel' initials='A.' surname='Farrel'><organization/></author>
<date month='April' year='2009'/>
<abstract><t>Multiprotocol Label Switching (MPLS) and Generalized MPLS (GMPLS) Traffic Engineering (TE) Label Switched Paths (LSPs) may be computed by Path Computation Elements (PCEs).  Where the TE LSP crosses multiple domains, such as Autonomous Systems (ASes), the path may be computed by multiple PCEs that cooperate, with each responsible for computing a segment of the path.  However, in some cases (e.g., when ASes are administered by separate Service Providers), it would break confidentiality rules for a PCE to supply a path segment to a PCE in another domain, thus disclosing AS-internal topology information.  This issue may be circumvented by returning a loose hop and by invoking a new path computation from the domain boundary Label Switching Router (LSR) during TE LSP setup as the signaling message enters the second domain, but this technique has several issues including the problem of maintaining path diversity.</t><t>This document defines a mechanism to hide the contents of a segment of a path, called the Confidential Path Segment (CPS).  The CPS may be replaced by a path-key that can be conveyed in the PCE Communication Protocol (PCEP) and signaled within in a Resource Reservation Protocol TE (RSVP-TE) explicit route object.   [STANDARDS-TRACK]</t></abstract>
</front>
<seriesInfo name='RFC' value='5520'/>
<seriesInfo name='DOI' value='10.17487/RFC5520'/>
</reference>



<reference anchor='RFC7471' target='https://www.rfc-editor.org/info/rfc7471'>
<front>
<title>OSPF Traffic Engineering (TE) Metric Extensions</title>
<author fullname='S. Giacalone' initials='S.' surname='Giacalone'><organization/></author>
<author fullname='D. Ward' initials='D.' surname='Ward'><organization/></author>
<author fullname='J. Drake' initials='J.' surname='Drake'><organization/></author>
<author fullname='A. Atlas' initials='A.' surname='Atlas'><organization/></author>
<author fullname='S. Previdi' initials='S.' surname='Previdi'><organization/></author>
<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 &quot;Traffic                                           Engineering (TE) Extensions to OSPF Version 2&quot; and RFC 5329 &quot;Traffic                                     Engineering Extensions to OSPF Version 3&quot; 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' target='https://www.rfc-editor.org/info/rfc8570'>
<front>
<title>IS-IS Traffic Engineering (TE) Metric Extensions</title>
<author fullname='L. Ginsberg' initials='L.' role='editor' surname='Ginsberg'><organization/></author>
<author fullname='S. Previdi' initials='S.' role='editor' surname='Previdi'><organization/></author>
<author fullname='S. Giacalone' initials='S.' surname='Giacalone'><organization/></author>
<author fullname='D. Ward' initials='D.' surname='Ward'><organization/></author>
<author fullname='J. Drake' initials='J.' surname='Drake'><organization/></author>
<author fullname='Q. Wu' initials='Q.' surname='Wu'><organization/></author>
<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' target='https://www.rfc-editor.org/info/rfc8232'>
<front>
<title>Optimizations of Label Switched Path State Synchronization Procedures for a Stateful PCE</title>
<author fullname='E. Crabbe' initials='E.' surname='Crabbe'><organization/></author>
<author fullname='I. Minei' initials='I.' surname='Minei'><organization/></author>
<author fullname='J. Medved' initials='J.' surname='Medved'><organization/></author>
<author fullname='R. Varga' initials='R.' surname='Varga'><organization/></author>
<author fullname='X. Zhang' initials='X.' surname='Zhang'><organization/></author>
<author fullname='D. Dhody' initials='D.' surname='Dhody'><organization/></author>
<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='RFC7308' target='https://www.rfc-editor.org/info/rfc7308'>
<front>
<title>Extended Administrative Groups in MPLS Traffic Engineering (MPLS-TE)</title>
<author fullname='E. Osborne' initials='E.' surname='Osborne'><organization/></author>
<date month='July' year='2014'/>
<abstract><t>MPLS Traffic Engineering (MPLS-TE) advertises 32 administrative groups (commonly referred to as &quot;colors&quot; or &quot;link colors&quot;) 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, &quot;Extended Administrative Group&quot;.  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' target='https://www.rfc-editor.org/info/rfc8343'>
<front>
<title>A YANG Data Model for Interface Management</title>
<author fullname='M. Bjorklund' initials='M.' surname='Bjorklund'><organization/></author>
<date month='March' year='2018'/>
<abstract><t>This document defines a YANG data model for the management of network interfaces.  It is expected that interface-type-specific data models augment the generic interfaces data model defined in this document. The data model includes definitions for configuration and system state (status information and counters for the collection of statistics).</t><t>The YANG data model in this document conforms to the Network Management Datastore Architecture (NMDA) defined in RFC 8342.</t><t>This document obsoletes RFC 7223.</t></abstract>
</front>
<seriesInfo name='RFC' value='8343'/>
<seriesInfo name='DOI' value='10.17487/RFC8343'/>
</reference>



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



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



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



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



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



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




    </references>

    <references title='Informative References'>




<reference anchor='I-D.ietf-spring-segment-routing-policy'>
   <front>
      <title>Segment Routing Policy Architecture</title>
      <author fullname='Clarence Filsfils'>
	 <organization>Cisco Systems</organization>
      </author>
      <author fullname='Ketan Talaulikar'>
	 <organization>Cisco Systems</organization>
      </author>
      <author fullname='Daniel Voyer'>
	 <organization>Bell Canada</organization>
      </author>
      <author fullname='Alex Bogdanov'>
	 <organization>British Telecom</organization>
      </author>
      <author fullname='Paul Mattes'>
	 <organization>Microsoft</organization>
      </author>
      <date day='22' month='March' 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 a 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.

   This document updates RFC8402 as it details the concepts of SR Policy
   and steering into an SR Policy.

	 </t>
      </abstract>
   </front>
   <seriesInfo name='Internet-Draft' value='draft-ietf-spring-segment-routing-policy-22'/>
   <format target='https://www.ietf.org/archive/id/draft-ietf-spring-segment-routing-policy-22.txt' type='TXT'/>
</reference>




    </references>



  </back>

<!-- ##markdown-source:
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
iysD1Y1LPtusudLyy0jf+5NJniuPKK7iineiRMqmuAPJOe5uT31JpuzaDFYE
BmSasmtJiYZ6hl+/TZ+sz29FSTYrd9O3jGgfbG16Mm0uSVz/u/EgC1gLl6cV
eWinbCeMUD0hh5ep1Hv0QESKQtrIo3DHHBrAAxeLGHMOC8fHvAJVJ2g4aBbH
FiKgbe+jnK+6nAaTWIufbzZU2PWYRxk92fa3xvR/W4NwfxYYkoxties/bYg6
JdlYhzplWUkjPgzlJ+i0+viBoBizSQ+aklUhwo9zCQxbbM4rPgIE8MzmqhuR
too+dSBxcPumEdLGe0+qXEN6HJ+7etAWViww1LRflVf5Fq0zU0QhuF5mNOnK
Yd5FwlJc58CIyB6rxPgJ1WIkivzX6SkjT731l9qbhHY+0NZGvwsr/kiQm0ES
QQ3EztipHTujXOZTiupMUkb3azD1tRCP+GEN6iZX4ACT9i9zufSP6UGXTCuZ
E5W8jP+v5RO3OTuzY26+Y+93Jb/v2r5+0szE0LKnQfzOp+Wb4fs5SM8Zbl+B
l5aYXw4WmK9GrQhJqx1apTJWI8cegPxQbkKvRD009hHySSe1sqCi6HNzL3rl
93e9dprd5DbqsREkSZ2b4qD5VtBoK9htXVQBuhTTaSV3o5ALLJGEQYOuXepO
PBWdKMtvR6urcwZr55RgrTU4mq/u93XQI7UH1lND+KSV5y0bgaBHGkd9crIr
2u3Mb6e6Vs0eeipZ1bLRrlDugz5XF6sLqU5a+2ShJ24pkq6LSgUf3j1JfPwn
c8Qo7u6jGCHgDe4ZQM1Hy+j3EYenlY3ORLyby7PIIVHdXAbKtOtcYCLh/Ste
XY7/X7u4zIomEUAolvi1yHlhqgqztPkdP0P9X8NBe+bzkpHQNULiQNgBCorT
M1QOKpficJDV8YWr8MBWEVXUN7I9qFdZ1+1t745TZYcjcGZl5soD3q5I8PKl
7l+0z9erDof56aygsHjO30yVUsWWYHCC45lH9y4/kZNRzu6TmDknMgmKbdYu
QHA+9XKX/7wTJAPTTzyaseJnnqDjai5/lEMuTD5BnOtm3xzZkon/giPgF1m8
BwJXoWYHxSW9lDQq/iHj4UtpLevTU5IzIYKcVNehsZqj8W/roprNKqlP12wl
0L+1HnVSEHDIk7K9LG1J28msWFrZC0rg0ff4Cnb0ADcVa1haSJhsGVyafWbL
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
HvE0uSTqxM3+AcQ8FVcvNQIA

-->

</rfc>

