<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd">
<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="3"?>
<?rfc tocindent="yes"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc compact="yes"?>
<?rfc subcompact="no"?>
<rfc category="std" docName="draft-ietf-lsr-isis-rfc7810bis-05"
     ipr="trust200902" obsoletes="7810">
  <front>
    <title abbrev="IS-IS TE Metric Extensions">IS-IS Traffic Engineering (TE)
    Metric Extensions</title>

    <author fullname="Les Ginsberg" initials="L." role="editor"
            surname="Ginsberg">
      <organization>Cisco Systems, Inc.</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <code/>

          <country/>
        </postal>

        <email>ginsberg@cisco.com</email>
      </address>
    </author>

    <author fullname="Stefano Previdi" initials="S." role="editor"
            surname="Previdi">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <email>stefano@previdi.net</email>
      </address>
    </author>

    <author fullname="Spencer Giacolone" initials="S" surname="Giacolone">
      <organization>Microsoft</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <phone/>

        <facsimile/>

        <email>spencer.giacalone@gmail.com</email>

        <uri/>
      </address>
    </author>

    <author fullname="Dave Ward" initials="D" surname="Ward">
      <organization>Cisco Systems, Inc.</organization>

      <address>
        <postal>
          <street/>

          <city/>

          <region/>

          <code/>

          <country/>
        </postal>

        <phone/>

        <facsimile/>

        <email>wardd@cisco.com</email>

        <uri/>
      </address>
    </author>

    <author fullname="John Drake" initials="J" surname="Drake">
      <organization>Juniper Networks</organization>

      <address>
        <postal>
          <street>1194 N. Matilda Ace.</street>

          <city>Sunnyvale</city>

          <region>C</region>

          <code>94089</code>

          <country>United States</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>jdrake@juniper.net</email>

        <uri/>
      </address>
    </author>

    <author fullname="Qin Wu" initials="Q" surname="Wu">
      <organization>Huawei</organization>

      <address>
        <postal>
          <street>101 Software Avenue, Yuhua District</street>

          <city>Nanjing</city>

          <region>Jiangsu</region>

          <code>210012</code>

          <country>China</country>
        </postal>

        <phone/>

        <facsimile/>

        <email>sunseawq@huawei.com</email>

        <uri/>
      </address>
    </author>

    <date day="20" month="December" year="2018"/>

    <area>Routing</area>

    <workgroup>Link State Routing</workgroup>

    <keyword>IGP</keyword>

    <keyword>IS-IS</keyword>

    <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) such that network-performance information can be
      distributed and collected 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>

    <note 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>
    </note>
  </front>

  <middle>
    <section title="Introduction">
      <t>In certain networks, such as, but not limited to, financial
      information networks (e.g., stock market data providers), network-
      performance information (e.g., latency) is becoming as critical to
      data-path selection as other metrics.</t>

      <t>In these networks, extremely large amounts of money rest on the
      ability to access market data in "real time" and to predictably make
      trades faster than the competition. Because of this, using metrics such
      as hop count or cost as routing metrics is becoming only tangentially
      important. Rather, it would be beneficial to be able to make
      path-selection decisions based on performance data (such as latency) in
      a cost-effective and scalable way.</t>

      <t>This document describes extensions (hereafter called "IS-IS TE Metric
      Extensions") to the IS-IS Extended Reachability TLV defined in
      [RFC5305], that can be used to distribute network-performance
      information (such as link delay, delay variation, packet loss, residual
      bandwidth, and available bandwidth).</t>

      <t>The data distributed by the IS-IS TE Metric Extensions proposed in
      this document is meant to be used as part of the operation of the
      routing protocol (e.g., by replacing cost with latency or considering
      bandwidth as well as cost), to enhance Constrained-SPF (CSPF), or for
      other uses such as supplementing the data used by an ALTO server
      [RFC7285]. With respect to CSPF, the data distributed by IS-IS TE Metric
      Extensions can be used to set up, fail over, and fail back data paths
      using protocols such as RSVP-TE [RFC3209].</t>

      <t>Note that the mechanisms described in this document only disseminate
      performance information. The methods for initially gathering that
      performance information, such as described in [RFC6375], or acting on it
      once it is distributed are outside the scope of this document. Example
      mechanisms to measure latency, delay variation, and loss in an MPLS
      network are given in [RFC6374]. While this document does not specify how
      the performance information should be obtained, the measurement of delay
      SHOULD NOT vary significantly based upon the offered traffic load. Thus,
      queuing delays SHOULD NOT be included in the delay measurement. For
      links such as Forwarding Adjacencies, care must be taken that
      measurement of the associated delay avoids significant queuing delay;
      that could be accomplished in a variety of ways, including either by
      measuring with a traffic class that experiences minimal queuing or by
      summing the measured link delays of the components of the link's
      path.</t>
    </section>

    <section title="TE Metric Extensions to IS-IS">
      <t>This document registers new IS-IS TE sub-TLVs that can be announced
      in the "Sub-TLVs for TLVs 22, 23, 141, 222, and 223" registry in order
      to distribute network-performance information. The extensions in this
      document build on the ones provided in IS-IS TE [RFC5305] and GMPLS
      [RFC4203].</t>

      <t>IS-IS Extended Reachability TLV 22 (defined in [RFC5305]), Inter-AS
      Reachability Information TLV 141 (defined in [RFC5316]), and MT-ISIS TLV
      222 (defined in [RFC5120]) have nested sub-TLVs that permit the TLVs to
      be readily extended. This document registers several sub- TLVs:</t>

      <t><figure>
          <artwork><![CDATA[ Type    Description
 ----------------------------------------------------
  33     Unidirectional Link Delay

  34     Min/Max Unidirectional Link Delay

  35     Unidirectional Delay Variation

  36     Unidirectional Link Loss

  37     Unidirectional Residual Bandwidth

  38     Unidirectional Available Bandwidth

  39     Unidirectional Utilized Bandwidth

]]></artwork>
        </figure>As can be seen in the list above, the sub-TLVs described in
      this document carry different types of network-performance information.
      The new sub-TLVs include a bit called the Anomalous (or "A") bit. When
      the A bit is clear (or when the sub-TLV does not include an A bit), the
      sub-TLV describes steady-state link performance. This information could
      conceivably be used to construct a steady-state performance topology for
      initial tunnel-path computation, or to verify alternative failover
      paths.</t>

      <t>When network performance violates configurable link-local thresholds,
      a sub-TLV with the A bit set is advertised. These sub-TLVs could be used
      by the receiving node to determine whether to fail traffic to a backup
      path or whether to calculate an entirely new path. From an MPLS
      perspective, the intent of the A bit is to permit label switched path
      ingress nodes to determine whether the link referenced in the sub-TLV
      affects any of the label switched paths for which it is ingress. If they
      are affected, then they can determine whether those label switched paths
      still meet end-to-end performance objectives. If not, then the node
      could conceivably move affected traffic to a pre-established protection
      label switched path or establish a new label switched path and place the
      traffic in it.</t>

      <t>If link performance then improves beyond a configurable minimum value
      (reuse threshold), that sub-TLV can be re-advertised with the A bit
      cleared. In this case, a receiving node can conceivably do whatever
      re-optimization (or failback) it wishes to do (including nothing).</t>

      <t>Note that when a sub-TLV does not include the A bit, that sub-TLV
      cannot be used for failover purposes. The A bit was intentionally
      omitted from some sub-TLVs to help mitigate oscillations. See Section 5
      for more information.</t>

      <t>Consistent with existing IS-IS TE specification [RFC5305], the
      bandwidth advertisements defined in this document MUST be encoded as
      IEEE floating-point values <xref target="IEEE754"/>. The delay and
      delay-variation advertisements defined in this document MUST be encoded
      as integer values. Delay values MUST be quantified in units of
      microseconds, packet loss MUST be quantified as a percentage of packets
      sent, and bandwidth MUST be sent as bytes per second. All values (except
      residual bandwidth) MUST be calculated as rolling averages where the
      averaging period MUST be a configurable period of time. See Section 5
      for more information.</t>
    </section>

    <section title="Interface and Neighbor Addresses">
      <t>The use of IS-IS TE Metric Extensions sub-TLVs is not confined to the
      TE context. In other words, IS-IS TE Metric Extensions sub-TLVs defined
      in this document can also be used for computing paths in the absence of
      a TE subsystem.</t>

      <t>However, as for the TE case, Interface Address and Neighbor Address
      sub-TLVs (IPv4 or IPv6) MUST be present. The encoding is defined in
      [RFC5305] for IPv4 and in [RFC6119] for IPv6.</t>
    </section>

    <section title="Sub-TLV Details">
      <t/>

      <section title="Unidirectional Link Delay Sub-TLV">
        <t>This sub-TLV advertises the average link delay between two directly
        connected IS-IS neighbors. The delay advertised by this sub-TLV MUST
        be the delay from the local neighbor to the remote one (i.e., the
        forward-path latency). The format of this sub-TLV is shown in the
        following diagram:</t>

        <t><figure title="Figure 1">
            <artwork><![CDATA[ 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Type        |     Length    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|A|  RESERVED   |                   Delay                       |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>where:</t>

        <t>Type: 33</t>

        <t>Length: 4</t>

        <t>A bit: The A bit represents the Anomalous (A) bit. The A bit is set
        when the measured value of this parameter exceeds its configured
        maximum threshold. The A bit is cleared when the measured value falls
        below its configured reuse threshold. If the A bit is clear, the
        sub-TLV represents steady-state link performance.</t>

        <t>RESERVED: This field is reserved for future use. It MUST be set to
        0 when sent and MUST be ignored when received.</t>

        <t>Delay: This 24-bit field carries the average link delay over a
        configurable interval in microseconds, encoded as an integer value.
        When set to the maximum value 16,777,215 (16.777215 sec), then the
        delay is at least that value and may be larger.</t>
      </section>

      <section title="Min/Max Unidirectional Link Delay Sub-TLV">
        <t>This sub-TLV advertises the minimum and maximum delay values
        between two directly connected IS-IS neighbors. The delay advertised
        by this sub-TLV MUST be the delay from the local neighbor to the
        remote one (i.e., the forward-path latency). The format of this
        sub-TLV is shown in the following diagram:</t>

        <t><figure title="Figure 2">
            <artwork><![CDATA[ 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Type        |     Length    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|A| RESERVED    |                   Min Delay                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   RESERVED    |                   Max Delay                   |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>where:</t>

        <t>Type: 34</t>

        <t>Length: 8</t>

        <t>A bit: This field represents the Anomalous (A) bit. The A bit is
        set when one or more measured values exceed a configured maximum
        threshold. The A bit is cleared when the measured value falls below
        its configured reuse threshold. If the A bit is clear, the sub-TLV
        represents steady-state link performance.</t>

        <t>RESERVED: This field is reserved for future use. It MUST be set to
        0 when sent and MUST be ignored when received.</t>

        <t>Min Delay: This 24-bit field carries the minimum measured link
        delay value (in microseconds) over a configurable interval, encoded as
        an integer value.</t>

        <t>Max Delay: This 24-bit field carries the maximum measured link
        delay value (in microseconds) over a configurable interval, encoded as
        an integer value.</t>

        <t>Implementations MAY also permit the configuration of an offset
        value (in microseconds) to be added to the measured delay value, to
        facilitate the communication of operator-specific delay
        constraints.</t>

        <t>It is possible for the Min and Max delay to be the same value.</t>

        <t>When the delay value (Min or Max) is set to the maximum value
        16,777,215 (16.777215 sec), then the delay is at least that value and
        may be larger.</t>
      </section>

      <section title="Unidirectional Delay Variation Sub-TLV">
        <t>This sub-TLV advertises the average link delay variation between
        two directly connected IS-IS neighbors. The delay variation advertised
        by this sub-TLV MUST be the delay from the local neighbor to the
        remote one (i.e., the forward-path latency). The format of this sub-
        TLV is shown in the following diagram:</t>

        <t><figure title="Figure 3">
            <artwork><![CDATA[  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   Type        |     Length    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  RESERVED     |               Delay Variation                 |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure></t>

        <t>where</t>

        <t>Type: 35</t>

        <t>Length: 4</t>

        <t>RESERVED: This field is reserved for future use. It MUST be set to
        0 when sent and MUST be ignored when received.</t>

        <t>Delay Variation: This 24-bit field carries the average link delay
        variation over a configurable interval in microseconds, encoded as an
        integer value. When set to 0, it has not been measured. When set to
        the maximum value 16,777,215 (16.777215 sec), then the delay is at
        least that value and may be larger.</t>
      </section>

      <section title="Unidirectional Link Loss Sub-TLV">
        <t>This sub-TLV advertises the loss (as a packet percentage) between
        two directly connected IS-IS neighbors. The link loss advertised by
        this sub-TLV MUST be the packet loss from the local neighbor to the
        remote one (i.e., the forward-path loss). The format of this sub-TLV
        is shown in the following diagram:</t>

        <t><figure title="Figure 4">
            <artwork><![CDATA[  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   Type        |     Length    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |A|  RESERVED   |                    Link Loss                  |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>where:</t>

        <t>Type: 36</t>

        <t>Length: 4</t>

        <t>A bit: The A bit represents the Anomalous (A) bit. The A bit is set
        when the measured value of this parameter exceeds its configured
        maximum threshold. The A bit is cleared when the measured value falls
        below its configured reuse threshold. If the A bit is clear, the
        sub-TLV represents steady-state link performance.</t>

        <t>RESERVED: This field is reserved for future use. It MUST be set to
        0 when sent and MUST be ignored when received.</t>

        <t>Link Loss: This 24-bit field carries link packet loss as a
        percentage of the total traffic sent over a configurable interval. The
        basic unit is 0.000003%, where (2^24 - 2) is 50.331642%. This value is
        the highest packet-loss percentage that can be expressed (the
        assumption being that precision is more important on high-speed links
        than the ability to advertise loss rates greater than this, and that
        high- speed links with over 50% loss are unusable). Therefore,
        measured values that are larger than the field maximum SHOULD be
        encoded as the maximum value.</t>
      </section>

      <section title="Unidirectional Residual Bandwidth Sub-TLV">
        <t>This sub-TLV advertises the residual bandwidth between two directly
        connected IS-IS neighbors. The residual bandwidth advertised by this
        sub-TLV MUST be the residual bandwidth from the system originating the
        Link State Advertisement (LSA) to its neighbor.</t>

        <t><figure title="Figure 5">
            <artwork><![CDATA[  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |   Type        |     Length    |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |                          Residual Bandwidth                   |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>where:</t>

        <t>Type: 37</t>

        <t>Length: 4</t>

        <t>Residual Bandwidth: This field carries the residual bandwidth on a
        link, forwarding adjacency [RFC4206], or bundled link in IEEE
        floating-point format with units of bytes per second. For a link or
        forwarding adjacency, residual bandwidth is defined to be the Maximum
        Bandwidth [RFC5305] minus the bandwidth currently allocated to RSVP-
        TE label switched paths. For a bundled link, residual bandwidth is
        defined to be the sum of the component link residual bandwidths.</t>

        <t>The calculation of residual bandwidth is different than that of
        unreserved bandwidth [RFC5305]. Residual bandwidth subtracts tunnel
        reservations from maximum bandwidth (i.e., the link capacity)
        [RFC5305] and provides an aggregated remainder across priorities.
        Unreserved bandwidth, on the other hand, is subtracted from the
        maximum reservable bandwidth (the bandwidth that can theoretically be
        reserved) and provides per-priority remainders. Residual bandwidth and
        unreserved bandwidth [RFC5305] can be used concurrently and each has a
        separate use case (e.g., the former can be used for applications like
        Weighted ECMP while the latter can be used for call admission
        control).</t>
      </section>

      <section title="Unidirectional Available Bandwidth Sub-TLV">
        <t>This sub-TLV advertises the available bandwidth between two
        directly connected IS-IS neighbors. The available bandwidth advertised
        by this sub-TLV MUST be the available bandwidth from the system
        originating this sub-TLV. The format of this sub-TLV is shown in the
        following diagram:</t>

        <t><figure title="Figure 6">
            <artwork><![CDATA[ 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Type        |     Length    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                      Available Bandwidth                      |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>where:</t>

        <t>Type: 38</t>

        <t>Length: 4</t>

        <t>Available Bandwidth: This field carries the available bandwidth on
        a link, forwarding adjacency, or bundled link in IEEE floating-point
        format with units of bytes per second. For a link or forwarding
        adjacency, available bandwidth is defined to be residual bandwidth
        (see Section 4.5) minus the measured bandwidth used for the actual
        forwarding of non-RSVP-TE label switched path packets. For a bundled
        link, available bandwidth is defined to be the sum of the component
        link available bandwidths.</t>
      </section>

      <section title="Unidirectional Utilized Bandwidth Sub-TLV">
        <t>This sub-TLV advertises the bandwidth utilization between two
        directly connected IS-IS neighbors. The bandwidth utilization
        advertised by this sub-TLV MUST be the bandwidth from the system
        originating this sub-TLV. The format of this sub-TLV is shown in the
        following diagram:</t>

        <t><figure title="Figure 7">
            <artwork><![CDATA[ 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|   Type        |     Length    |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                     Utilized Bandwidth                        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>where:</t>

        <t>Type: 39</t>

        <t>Length: 4</t>

        <t>Utilized Bandwidth: This field carries the bandwidth utilization on
        a link, forwarding adjacency, or bundled link in IEEE floating-point
        format with units of bytes per second. For a link or forwarding
        adjacency, bandwidth utilization represents the actual utilization of
        the link (i.e., as measured by the advertising node). For a bundled
        link, bandwidth utilization is defined to be the sum of the component
        link bandwidth utilizations.</t>
      </section>
    </section>

    <section title="Announcement Thresholds and Filters">
      <t>The values advertised in all sub-TLVs (except min/max delay and
      residual bandwidth) MUST represent an average over a period or be
      obtained by a filter that is reasonably representative of an average.
      For example, a rolling average is one such filter.</t>

      <t>Min and max delay MUST each be derived in one of the following ways:
      by taking the lowest and/or highest measured value over a measurement
      interval or by making use of a filter or other technique to obtain a
      reasonable representation of a min and max value representative of the
      interval, with compensation for outliers.</t>

      <t>The measurement interval, any filter coefficients, and any
      advertisement intervals MUST be configurable per sub-TLV.</t>

      <t>In addition to the measurement intervals governing re-advertisement,
      implementations SHOULD provide configurable accelerated advertisement
      thresholds per sub-TLV, such that:<list style="numbers">
          <t>If the measured parameter falls outside a configured upper bound
          for all but the minimum delay metric (or lower bound for minimum
          delay metric only) and the advertised sub-TLV is not already outside
          that bound or,</t>

          <t>If the difference between the last advertised value and current
          measured value exceeds a configured threshold then,</t>

          <t>The advertisement is made immediately.</t>

          <t>For sub-TLVs that include an A bit, an additional threshold
          SHOULD be included corresponding to the threshold for which the
          performance is considered anomalous (and sub-TLVs with the A bit are
          sent). The A bit is cleared when the sub-TLV's performance has been
          below (or re-crosses) this threshold for an advertisement
          interval(s) to permit fail back.</t>
        </list></t>

      <t>To prevent oscillations, only the high threshold or the low threshold
      (but not both) may be used to trigger any given sub-TLV that supports
      both.</t>

      <t>Additionally, once outside the bounds of the threshold, any
      re-advertisement of a measurement within the bounds would remain
      governed solely by the measurement interval for that sub-TLV.</t>
    </section>

    <section title="Announcement Suppression">
      <t>When link-performance values change by small amounts that fall under
      thresholds that would cause the announcement of a sub-TLV,
      implementations SHOULD suppress sub-TLV re-advertisement and/or lengthen
      the period within which they are refreshed.</t>

      <t>Only the accelerated advertisement threshold mechanism described in
      Section 5 may shorten the re-advertisement interval. All suppression and
      re-advertisement interval backoff timer features SHOULD be
      configurable.</t>
    </section>

    <section title="Network Stability and Announcement Periodicity">
      <t>Sections 5 and 6 provide configurable mechanisms to bound the number
      of re-advertisements. Instability might occur in very large networks if
      measurement intervals are set low enough to overwhelm the processing of
      flooded information at some of the routers in the topology. Therefore,
      care should be taken in setting these values.</t>

      <t>Additionally, the default measurement interval for all sub-TLVs
      SHOULD be 30 seconds.</t>

      <t>Announcements MUST also be able to be throttled using configurable
      inter-update throttle timers. The minimum announcement periodicity is 1
      announcement per second. The default value SHOULD be set to 120
      seconds.</t>

      <t>Implementations SHOULD NOT permit the inter-update timer to be lower
      than the measurement interval.</t>

      <t>Furthermore, it is RECOMMENDED that any underlying performance-
      measurement mechanisms not include any significant buffer delay, any
      significant buffer-induced delay variation, or any significant loss due
      to buffer overflow or due to active queue management.</t>
    </section>

    <section title="Enabling and Disabling Sub-TLVs">
      <t>Implementations MUST make it possible to individually enable or
      disable each sub-TLV based on configuration.</t>
    </section>

    <section title="Static Metric Override">
      <t>Implementations SHOULD permit static configuration and/or manual
      override of dynamic measurements for each sub-TLV in order to simplify
      migration and to mitigate scenarios where dynamic measurements are not
      possible.</t>
    </section>

    <section title="Compatibility">
      <t>As per [RFC5305], unrecognized sub-TLVs should be silently
      ignored.</t>
    </section>

    <section title="Security Considerations">
      <t>The sub-TLVs introduced in this document allow an operator to
      advertise state information of links (bandwidth, delay) that could be
      sensitive and that an operator may not want to disclose.</t>

      <t>Section 7 describes a mechanism to ensure network stability when the
      new sub-TLVs defined in this document are advertised. Implementation
      SHOULD follow the described guidelines to mitigate the instability
      risk.</t>

      <t>[RFC5304] describes an authentication method for IS-IS Link State
      PDUs that allows cryptographic authentication of IS-IS Link State
      PDUs.</t>

      <t>It is anticipated that in most deployments, the IS-IS protocol is
      used within an infrastructure entirely under control of the same
      operator. However, it is worth considering that the effect of sending
      IS-IS Traffic Engineering sub-TLVs over insecure links could result in a
      man-in-the-middle attacker delaying real-time data to a given site or
      destination, which could negatively affect the value of the data for
      that site or destination. The use of Link State PDU cryptographic
      authentication allows mitigation the risk of man-in- the-middle
      attack.</t>
    </section>

    <section anchor="IANA" title="IANA Considerations">
      <t>IANA maintains the registry for the sub-TLVs. IANA has registered the
      following sub-TLVs in the "Sub-TLVs for TLVs 22, 23, 141, 222, and 223"
      registry:</t>

      <t><figure>
          <artwork><![CDATA[ Type   Description
 ----------------------------------------------------
  33    Unidirectional Link Delay

  34    Min/Max Unidirectional Link Delay

  35    Unidirectional Delay Variation

  36    Unidirectional Link Loss

  37    Unidirectional Residual Bandwidth

  38    Unidirectional Available Bandwidth

  39    Unidirectional Utilized Bandwidth
 ]]></artwork>
        </figure></t>
    </section>

    <section anchor="Acknowledgements" title="Acknowledgements">
      <t>In <xref target="RFC7810"/> the authors recognized Ayman Soliman,
      Nabil Bitar, David McDysan, Edward Crabbe, Don Fedyk, Hannes Gredler,
      Uma Chunduri, Alvaro Retana, Brian Weis, and Barry Leiba for their
      contribution and review of this document.</t>

      <t>The authors also recognized Curtis Villamizar for significant
      comments and direct content collaboration.</t>

      <t>For this document the authors thank Jeff Haas for identifying and
      reporting the incorrect encoding of the bandwidth related sub-TLVs.</t>
    </section>

    <section title="Contributors">
      <t>The following people contributed substantially to the content of this
      document and should be considered co-authors:</t>

      <t><figure>
          <artwork><![CDATA[   Alia Atlas
   Juniper Networks
   United States

   Email: akatlas@juniper.net


   Clarence Filsfils
   Cisco Systems Inc.
   Belgium

   Email: cfilsfil@cisco.com
]]></artwork>
        </figure></t>
    </section>
  </middle>

  <back>
    <references title="Normative References">
      <reference anchor="IEEE754">
        <front>
          <title>IEEE Standard for Floating-Point Arithmetic. IEEE Std
          754-2008</title>

          <author>
            <organization abbrev="IEEE">Institute of Electrical and
            Electronics Engineers Computer Society</organization>
          </author>

          <date month="Aug" year="2008"/>
        </front>

        <seriesInfo name="IEEESTD" value="2008.4610935"/>
      </reference>

      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?>

      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.4206.xml"?>

      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.5120.xml"?>

      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.5304.xml"?>

      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.5305.xml"?>

      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.5316.xml"?>

      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.6119.xml"?>

      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.7471.xml"?>

      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.7810.xml"?>

      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml"?>
    </references>

    <references title="Informative References">
      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.3209.xml"?>

      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.4203.xml"?>

      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.6374.xml"?>

      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.6375.xml"?>

      <?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.7285.xml"?>

      <?rfc include="reference.I-D.ietf-idr-te-pm-bgp.xml"?>
    </references>

    <section title="Changes from RFC 7810">
      <t>Errata ID: 5293
      (https://www.rfc-editor.org/errata_search.php?rfc=7810) correctly
      identified that in [RFC7810] the length associated with the following
      sub-TLVs did not match the figures associated with each:</t>

      <t><figure>
          <artwork><![CDATA[    37    Unidirectional Residual Bandwidth

    38    Unidirectional Available Bandwidth

    39    Unidirectional Utilized Bandwidth
 ]]></artwork>
        </figure>The length specified was 4 which did not include the RESERVED
      field shown in the figures. Subsequent investigation revealed that some
      implementations had used the specified length (4) and omitted the
      RESERVED field while other implementations included the specified
      RESERVED field and used a length of 5.</t>

      <t>Because these different implementation choices are not interoperable,
      it was decided that a bis version should be generated which resolved the
      ambiguity.</t>

      <t>The choice made here is to omit the unused RESERVED field from these
      sub-TLVs and use the length of 4. This matches the corresponding
      advertisements specified in the equivalent OSPF specification [RFC7471]
      and the corresponding BGP-LS specification <xref
      target="I-D.ietf-idr-te-pm-bgp"/>.</t>

      <t>Some minor editorial corrections have also been made.</t>

      <t>Errata ID: 5486 (https://www.rfc-editor.org/errata/eid5486)
      identified that in [RFC7810] Section 4.6 the definition of available
      bandwidth on bundled links used a circular definition i.e., it used "sum
      of the component link available bandwidths" when it should have used
      "sum of the component link residual bandwidths". This has been corrected
      and clarified.</t>
    </section>
  </back>
</rfc>
