RFC 7471

OSPF Traffic Engineering (TE) Metric Extensions

πŸ“… published March 2015, from ietf

RFC 7471: OSPF Traffic Engineering (TE) Metric Extensions πŸŽ€

Okay bestie, the title block is giving very organised πŸ“‹. This is an IETF Standards Track document from March 2015, with ISSN 2070-1721. It was written by S. Giacalone (Unaffiliated), D. Ward (Cisco Systems), J. Drake and A. Atlas (both Juniper Networks), and S. Previdi (Cisco Systems). The header has no Obsoletes or Updates entries, so it doesn't replace or change any earlier RFC πŸ’….

Abstract ✨

Okay so in some networks, like financial information networks (think stock market data providers, but not only those πŸ“ˆ), network performance information such as link propagation delay is becoming super critical for picking the data path.

This doc describes common extensions to RFC 3630 "Traffic Engineering (TE) Extensions to OSPF Version 2" and RFC 5329 "Traffic Engineering Extensions to OSPF Version 3" so that network performance info can be shared in a scalable way πŸ¦‹. The info shared with OSPF TE Metric Extensions can then be used to make path selection decisions based on how the network is actually performing.

Note that this document only covers how network performance info gets distributed 🫢. How you measure that info, or what you do with it once it's shared, is outside the scope here.

Status of This Memo πŸ“œ

This is an Internet Standards Track document.

This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 5741.

Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc7471.

Copyright (c) 2015 IETF Trust and the persons identified as the document authors. All rights reserved.

This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.

Table of Contents πŸ—‚οΈ

   1. Introduction ....................................................3
   2. Conventions Used in This Document ...............................4
   3. TE Metric Extensions to OSPF TE .................................4
   4. Sub-TLV Details .................................................6
      4.1. Unidirectional Link Delay Sub-TLV ..........................6
           4.1.1. Type ................................................6
           4.1.2. Length ..............................................6
           4.1.3. Anomalous (A) Bit ...................................7
           4.1.4. Reserved ............................................7
           4.1.5. Delay Value .........................................7
      4.2. Min/Max Unidirectional Link Delay Sub-TLV ..................7
           4.2.1. Type ................................................7
           4.2.2. Length ..............................................7
           4.2.3. Anomalous (A) Bit ...................................8
           4.2.4. Reserved ............................................8
           4.2.5. Min Delay ...........................................8
           4.2.6. Reserved ............................................8
           4.2.7. Max Delay ...........................................8
      4.3. Unidirectional Delay Variation Sub-TLV .....................9
           4.3.1. Type ................................................9
           4.3.2. Length ..............................................9
           4.3.3. Reserved ............................................9
           4.3.4. Delay Variation .....................................9
      4.4. Unidirectional Link Loss Sub-TLV ...........................9
           4.4.1. Type ...............................................10
           4.4.2. Length .............................................10
           4.4.3. Anomalous (A) Bit ..................................10
           4.4.4. Reserved ...........................................10
           4.4.5. Link Loss ..........................................10

      4.5. Unidirectional Residual Bandwidth Sub-TLV .................10
           4.5.1. Type ...............................................11
           4.5.2. Length .............................................11
           4.5.3. Residual Bandwidth .................................11
      4.6. Unidirectional Available Bandwidth Sub-TLV ................11
           4.6.1. Type ...............................................12
           4.6.2. Length .............................................12
           4.6.3. Available Bandwidth ................................12
      4.7. Unidirectional Utilized Bandwidth Sub-TLV .................12
           4.7.1. Type ...............................................12
           4.7.2. Length .............................................13
           4.7.3. Utilized Bandwidth .................................13
   5. Announcement Thresholds and Filters ............................13
   6. Announcement Suppression .......................................14
   7. Network Stability and Announcement Periodicity .................14
   8. Enabling and Disabling Sub-TLVs ................................15
   9. Static Metric Override .........................................15
   10. Compatibility .................................................15
   11. Security Considerations .......................................15
   12. IANA Considerations ...........................................16
   13. References ....................................................16
      13.1. Normative References .....................................16
      13.2. Informative References ...................................17
   Acknowledgments ...................................................18
   Authors' Addresses ................................................19

1. Introduction 🌸

Okay so in certain networks, like financial information networks (e.g., stock market data providers), network performance information (e.g., link propagation delay) is becoming as critical to data path selection as other metrics πŸ“Š.

Because of this, using stuff like hop count or cost as routing metrics is becoming only tangentially important πŸ™ˆ. It would be super beneficial to be able to pick paths based on network performance info (like link propagation delay) in a cost-effective and scalable way πŸ’œ.

This document describes extensions to OSPFv2 and OSPFv3 TE (hereafter called "OSPF TE Metric Extensions") that can be used to distribute network performance information. That includes link propagation delay, delay variation, link loss, residual bandwidth, available bandwidth, and utilized bandwidth 🧚.

The data distributed by OSPF TE Metric Extensions is meant to be used as part of how the routing protocol operates. For example, you can replace cost with link propagation delay, or look at bandwidth as well as cost πŸ“. It can also be used by enhancing Constrained Shortest Path First (CSPF), or by a PCE [RFC4655] or an Application-Layer Traffic Optimization (ALTO) server [RFC7285]. With CSPF in the picture, the data can help set up, fail over, and fail back data paths using protocols like RSVP-TE [RFC3209] ✨.

Note that the mechanisms in this document only distribute network performance information. The methods for measuring that info, or acting on it once it's distributed, are outside the scope of this document. A method for measuring loss and delay in an MPLS network is described in [RFC6374] πŸ”₯.

While this document doesn't specify how to measure network performance information, any measurement of link propagation delay SHOULD NOT vary significantly based upon the offered traffic load and, hence, SHOULD NOT include queuing delays πŸ™ˆ. For a forwarding adjacency (FA) [RFC4206], you have to be careful that measuring link propagation delay avoids significant queuing delay. You can do this in a variety of ways, e.g., measuring with a traffic class that experiences minimal queuing, or summing the measured link propagation delay of the links on the FA's path πŸ’….

2. Conventions Used in This Document πŸŽ€

Okay this part is important, so pay attention πŸ‘€. The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119] πŸ’–.

In this document, these words should convey that interpretation only when in ALL CAPS. Lowercase uses of these words are not to be interpreted as carrying this significance 🫢. So "should" in regular lowercase is just a normal word, no cap, no big deal πŸ’….

3. TE Metric Extensions to OSPF TE ✨

okay so this is where the fun starts πŸ’… This document adds new OSPF TE sub-TLVs for sharing network performance info, and it builds on the stuff already in OSPFv2 TE [RFC3630] and OSPFv3 TE [RFC5329]. bestie, it's giving "extension pack" energy πŸŽ€

OSPFv2 TE LSAs [RFC3630] are opaque LSAs [RFC5250] with area flooding scope. OSPFv3 Intra-Area-TE-LSAs get their own LSA type, also with area flooding scope. Both hold a single TLV with one or more nested sub-TLVs, and the Link TLV is the one they share. It describes the characteristics of a link between OSPF neighbors πŸ¦‹

This document adds several more sub-TLVs to the Link TLV:

   Type  Length   Value

   27    4        Unidirectional Link Delay

   28    8        Min/Max Unidirectional Link Delay

   29    4        Unidirectional Delay Variation

   30    4        Unidirectional Link Loss

   31    4        Unidirectional Residual Bandwidth

   32    4        Unidirectional Available Bandwidth

   33    4        Unidirectional Utilized Bandwidth

As you can see, these sub-TLVs each carry a different kind of performance info 🌈 Lots of them (but not all) have a bit called the Anomalous (or A) bit. When the A bit is clear, or when the sub-TLV doesn't have an A bit at all, the sub-TLV is describing steady state link performance. ngl this is super useful for building a steady state performance topology for initial tunnel path computation, or for checking backup failover paths 🧚

Now the A bit gets spicy ⭐ When network performance breaks a configurable link-local threshold, a sub-TLV with the A bit set gets advertised. The receiving node can use that to decide whether to shift traffic onto a backup path or to work out a whole new path. From the MPLS side, the point of the A bit is to let LSP ingress nodes do this:

  • A) Figure out whether the link in the sub-TLV affects any of the LSPs they're the ingress for. If it does, then:
  • B) The node checks whether those LSPs still meet their end-to-end performance objectives. If they don't, then:
  • C) The node could move the affected traffic onto a pre-established protection LSP, or spin up a new LSP and put the traffic there 🫢

If link performance then gets better than a configurable minimum value (the reuse threshold), that sub-TLV can get re-advertised with the Anomalous bit cleared. At that point the receiving node can conceivably do whatever re-optimization (or failback) it wants, including nothing at all πŸ’œ

The A bit was intentionally left out of some sub-TLVs to help stop oscillations πŸ™ˆ See Section 7.1 for more info.

Here's the important bit πŸ‘‘ Link delay, delay variation, and link loss MUST be encoded as integers. To stay consistent with the existing OSPF TE specs [RFC3630], residual, available, and utilized bandwidth MUST be encoded in IEEE single precision floating point [IEEE754]. Link delay and delay variation MUST be in microseconds, link loss MUST be a percentage, and bandwidth MUST be in bytes per second. All values (except residual bandwidth) MUST be calculated as rolling averages, and the averaging period MUST be a configurable period of time. See Section 5 for more info πŸ“


4. Sub-TLV Details πŸŽ€

This sub-TLV advertises the average link delay between two directly connected OSPF neighbors. The delay it advertises MUST be the delay from the advertising node to its neighbor (i.e., the forward path delay). Here's the layout πŸ‘‡

     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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |              27               |               4               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |A|  RESERVED   |                     Delay                     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

4.1.1. Type

This sub-TLV has a type of 27. 🧁

4.1.2. Length

The length is 4.

4.1.3. Anomalous (A) Bit

This is the Anomalous (A) bit. It gets set when the measured value of this parameter goes above its configured maximum threshold. It gets cleared when the measured value drops below its configured reuse threshold. If the A bit is clear, the sub-TLV is showing steady state link performance πŸ¦‹

4.1.4. Reserved

This field is reserved for future use. It MUST be set to 0 when sent and MUST be ignored when received. πŸ™ˆ

4.1.5. Delay Value

This 24-bit field carries the average link delay over a configurable interval, in microseconds, encoded as an integer. When it's set to the maximum value 16,777,215 (16.777215 sec), the delay is at least that value, and it may be larger 🌸

This sub-TLV advertises the minimum and maximum delay values between two directly connected OSPF neighbors. The delay it advertises MUST be the delay from the advertising node to its neighbor (i.e., the forward path delay). The layout is below ✨

     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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |              28               |               8               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |A|  RESERVED   |                   Min Delay                   |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |   RESERVED    |                   Max Delay                   |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

4.2.1. Type

This sub-TLV has a type of 28. πŸ’œ

4.2.2. Length

The length is 8.

4.2.3. Anomalous (A) Bit

This is the Anomalous (A) bit. It gets set when one or more measured values go above a configured maximum threshold. It gets cleared when the measured value drops below its configured reuse threshold. If the A bit is clear, the sub-TLV is showing steady state link performance 🌈

4.2.4. Reserved

This field is reserved for future use. It MUST be set to 0 when sent and MUST be ignored when received.

4.2.5. Min Delay

This 24-bit field carries the minimum measured link delay (in microseconds) over a configurable interval, encoded as an integer.

Implementations MAY also let you configure an offset value (in microseconds) that gets added to the measured delay, so you can advertise operator specific delay constraints πŸŽ€

When it's set to the maximum value 16,777,215 (16.777215 sec), the delay is at least that value, and it may be larger.

4.2.6. Reserved

This field is reserved for future use. It MUST be set to 0 when sent and MUST be ignored when received.

4.2.7. Max Delay

This 24-bit field carries the maximum measured link delay (in microseconds) over a configurable interval, encoded as an integer.

Implementations may also let you configure an offset value (in microseconds) that gets added to the measured delay, to advertise operator specific delay constraints.

It's possible for min delay and max delay to be the same value πŸ™Œ

When the delay value is set to the maximum value 16,777,215 (16.777215 sec), the delay is at least that value, and it may be larger.

4.3. Unidirectional Delay Variation Sub-TLV 🌊

This sub-TLV advertises the average link delay variation between two directly connected OSPF neighbors. The delay variation it advertises MUST be the delay from the advertising node to its neighbor (i.e., the forward path delay variation). Here's the diagram πŸ¦‹

      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
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |              29               |               4               |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
      |    RESERVED   |              Delay Variation                  |
      +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

4.3.1. Type

This sub-TLV has a type of 29.

4.3.2. Length

The length is 4.

4.3.3. Reserved

This field is reserved for future use. It MUST be set to 0 when sent and MUST be ignored when received.

4.3.4. Delay Variation

This 24-bit field carries the average link delay variation over a configurable interval, in microseconds, encoded as an integer. When it's set to 0, it hasn't been measured 🫠 When it's set to the maximum value 16,777,215 (16.777215 sec), the delay is at least that value, and it may be larger.

This sub-TLV advertises the loss (as a packet percentage) between two directly connected OSPF neighbors. The link loss it advertises MUST be the packet loss from the advertising node to its neighbor (i.e., the forward path loss). The layout is here πŸ’…

     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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |              30               |               4               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |A|  RESERVED   |                 Link Loss                     |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

4.4.1. Type

This sub-TLV has a type of 30

4.4.2. Length

The length is 4.

4.4.3. Anomalous (A) Bit

This is the Anomalous (A) bit. It gets set when the measured value of this parameter goes above its configured maximum threshold. It gets cleared when the measured value drops below its configured reuse threshold. If the A bit is clear, the sub-TLV is showing steady state link performance 🌸

4.4.4. Reserved

This field is reserved for future use. It MUST be set to 0 when sent and MUST be ignored when received.

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%, and (2^24 - 2) works out to 50.331642%. That's the highest packet loss percentage that can be expressed. The reasoning is that precision matters more on high speed links than being able to advertise loss rates above this, and high speed links with over 50% loss are unusable anyway πŸ™ƒ

Measured values that are larger than the field maximum SHOULD be encoded as the maximum value. ⚠️

4.5. Unidirectional Residual Bandwidth Sub-TLV ✨

okay bestie, this sub-TLV is all about the residual bandwidth between two directly connected OSPF neighbors πŸ¦‹ The residual bandwidth advertised here MUST be the residual bandwidth from the advertising node to its neighbor πŸ’…

here's the layout πŸ‘‡

     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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |              31               |               4               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                       Residual Bandwidth                      |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

4.5.1. Type

this sub-TLV has a type of 31 πŸŽ€

4.5.2. Length

the length is 4 🌸

4.5.3. Residual Bandwidth

this field carries the residual bandwidth on a link, a forwarding adjacency [RFC4206], or a bundled link. it's written in IEEE floating point format with units of bytes per second 🧚 For a link or forwarding adjacency, residual bandwidth is defined as Maximum Bandwidth [RFC3630] minus the bandwidth currently allocated to RSVP-TE LSPs. For a bundled link, it's defined as the sum of the component link residual bandwidths πŸ’–

the calculation is different from Unreserved Bandwidth [RFC3630], so pay attention, babe πŸ‘€ Residual Bandwidth subtracts tunnel reservations from Maximum Bandwidth (aka the link capacity) [RFC3630] and gives you one aggregated remainder across priorities. Unreserved Bandwidth is subtracted from the Maximum Reservable Bandwidth (the bandwidth that can theoretically be reserved) and gives you per-priority remainders. Residual Bandwidth and Unreserved Bandwidth [RFC3630] can be used at the same time, and each one has its own use case. for example, the former can be used for applications like Weighted ECMP, while the latter can be used for call admission control 🫢

4.6. Unidirectional Available Bandwidth Sub-TLV ✨

this sub-TLV advertises the available bandwidth between two directly connected OSPF neighbors. The available bandwidth advertised here MUST be the available bandwidth from the advertising node to its neighbor. here's the layout πŸ‘‡

     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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |              32               |               4               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                      Available Bandwidth                      |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

4.6.1. Type

this sub-TLV has a type of 32 πŸ¦‹

4.6.2. Length

the length is 4 🌈

4.6.3. Available Bandwidth

this field carries the available bandwidth on a link, a forwarding adjacency, or a bundled link. It's in IEEE floating point format with units of bytes per second πŸ“ For a link or forwarding adjacency, available bandwidth is defined as residual bandwidth (see Section 4.5) minus the measured bandwidth used for the actual forwarding of non-RSVP-TE LSP packets. For a bundled link, available bandwidth is defined as the sum of the component link available bandwidths 🧠

4.7. Unidirectional Utilized Bandwidth Sub-TLV ✨

this Sub-TLV advertises the bandwidth utilization between two directly connected OSPF neighbors. The bandwidth utilization advertised here MUST be the bandwidth from the advertising node to its neighbor. here's the layout πŸ‘‡

     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
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |              33               |               4               |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
     |                      Utilized Bandwidth                       |
     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

4.7.1. Type

this sub-TLV has a type of 33 πŸ’œ

4.7.2. Length

the length is 4 🌸

4.7.3. Utilized Bandwidth

this field carries the bandwidth utilization on a link, a forwarding adjacency, or a bundled link. It's in IEEE floating-point format with units of bytes per second ⭐ For a link or forwarding adjacency, bandwidth utilization shows the actual utilization of the link (as measured by the advertising node). For a bundled link, bandwidth utilization is defined as the sum of the component link bandwidth utilizations πŸ”₯


5. Announcement Thresholds and Filters

okay this part is all about when a router is allowed to yell "hey, my numbers changed!" πŸ“£ 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's reasonably representative of an average. A rolling average is one example of that kind of filter 🧁

Min and max delay MAY be the lowest and/or highest measured value over a measurement interval. They MAY also make use of a filter, or some other technique, to get a reasonable representation of a min and max value for the interval, with compensation for outliers 🌈

The measurement interval, any filter coefficients, and any advertisement intervals MUST be configurable for each sub-TLV βš™οΈ

In addition to the measurement intervals that govern re-advertisement, implementations SHOULD provide each sub-TLV with configurable accelerated advertisement thresholds, such that:

  1. If the measured parameter falls outside a configured upper bound for all but the min delay metric (or a lower bound for the min delay metric only), and the advertised sub-TLV is not already outside that bound, or
  2. If the difference between the last advertised value and the current measured value exceeds a configured threshold, then
  3. The advertisement is made immediately ⚑
  4. For sub-TLVs which include an A bit (except min/max delay), an additional threshold SHOULD be included corresponding to the threshold at 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 πŸ”„

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 πŸ™…β€β™€οΈ

Also, 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 🫧


6. Announcement Suppression

when link performance values change by small amounts that fall under the thresholds that would cause a sub-TLV to be announced, implementations SHOULD suppress sub-TLV re-advertisement and/or lengthen the period within which they are refreshed 😴

only the accelerated advertisement threshold mechanism described in Section 5 may shorten the re-advertisement interval πŸƒβ€β™€οΈ

All suppression and re-advertisement interval back-off timer features SHOULD be configurable πŸŽ›οΈ


7. Network Stability and Announcement Periodicity

okay real talk, this is the stability section and it's giving responsibility πŸ₯Ή Sections 5 and 6 provide configurable mechanisms to bound the number of re-advertisements. Instability might happen 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. so care should be taken when setting these values πŸ’€

Additionally, the default measurement interval for all sub-TLVs should be 30 seconds ⏱️

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 πŸ§˜β€β™€οΈ

Implementations should not permit the inter-update timer to be lower than the measurement interval 🚫

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 🌊


8. Enabling and Disabling Sub-TLVs

okay the big one: Implementations MUST make it possible to individually enable or disable the advertisement of each sub-TLV πŸ”˜ no lumping them all together, bestie πŸ’…


9. Static Metric Override

Implementations SHOULD permit the static configuration and/or manual override of dynamic measurements for each sub-TLV. the goal is to simplify migration and to handle scenarios where dynamic measurements just aren't possible πŸ› οΈ


10. Compatibility

as per [RFC3630], an unrecognized TLV should be silently ignored. That means it should not be processed, but it should be included in LSAs sent to OSPF neighbors 🀫


11. Security Considerations

okay this section is serious but we're gonna make it cute πŸ” This document does not introduce any security issues beyond the ones discussed in [RFC3630]. OSPFv2 HMAC-SHA [RFC5709] provides additional protection for OSPFv2. OSPFv3 IPsec [RFC4552] and the OSPFv3 Authentication Trailer [RFC7166] provide additional protection for OSPFv3 πŸ›‘οΈ

OSPF Keying and Authentication for Routing Protocols (KARP) [RFC6863] provides an analysis of OSPFv2 and OSPFv3 routing security. OSPFv2 Security Extensions [OSPFSEC] provides extensions designed to address the gaps identified in OSPFv2 🚨


12. IANA Considerations

IANA maintains the registry for the Link TLV sub-TLVs πŸ“‹ For OSPF TE Metric Extensions, one new type code for each sub-TLV defined in this document has been registered, as follows:

Value  Sub-TLV

  27   Unidirectional Link Delay

  28   Min/Max Unidirectional Link Delay

  29   Unidirectional Delay Variation

  30   Unidirectional Link Loss

  31   Unidirectional Residual Bandwidth

  32   Unidirectional Available Bandwidth

  33   Unidirectional Utilized Bandwidth

13. References

13.1. Normative References

[RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119, March 1997,
           <http://www.rfc-editor.org/info/rfc2119>.

[RFC3630]  Katz, D., Kompella, K., and D. Yeung, "Traffic Engineering
           (TE) Extensions to OSPF Version 2", RFC 3630, September
           2003, <http://www.rfc-editor.org/info/rfc3630>.

[RFC5329]  Ishiguro, K., Manral, V., Davey, A., and A. Lindem, Ed.,
           "Traffic Engineering Extensions to OSPF Version 3", RFC
           5329, September 2008,
           <http://www.rfc-editor.org/info/rfc5329>.

[IEEE754]  Institute of Electrical and Electronics Engineers,
           "Standard for Floating-Point Arithmetic", IEEE Standard
           754, August 2008.

13.2. Informative References ✨

okay so bestie, this is the "further reading" list πŸ“šπŸ«Ά these ones aren't required to implement the spec, but they're the vibes-check for how OSPF, MPLS, and friends fit together. Here they are, exactly as written:

[RFC3209]  Awduche, D., Berger, L., Gan, D., Li, T., Srinivasan, V.,
           and G. Swallow, "RSVP-TE: Extensions to RSVP for LSP
           Tunnels", RFC 3209, December 2001,
           <http://www.rfc-editor.org/info/rfc3209>.

[RFC4206]  Kompella, K. and Y. Rekhter, "Label Switched Paths (LSP)
           Hierarchy with Generalized Multi-Protocol Label Switching
           (GMPLS) Traffic Engineering (TE)", RFC 4206, October 2005,
           <http://www.rfc-editor.org/info/rfc4206>.

[RFC4552]  Gupta, M. and N. Melam, "Authentication/Confidentiality
           for OSPFv3", RFC 4552, June 2006,
           <http://www.rfc-editor.org/info/rfc4552>.

[RFC4655]  Farrel, A., Vasseur, J.-P., and J. Ash, "A Path
           Computation Element (PCE)-Based Architecture", RFC 4655,
           August 2006, <http://www.rfc-editor.org/info/rfc4655>.

[RFC5250]  Berger, L., Bryskin, I., Zinin, A., and R. Coltun, "The
           OSPF Opaque LSA Option", RFC 5250, July 2008,
           <http://www.rfc-editor.org/info/rfc5250>.

[RFC5709]  Bhatia, M., Manral, V., Fanto, M., White, R., Barnes, M.,
           Li, T., and R. Atkinson, "OSPFv2 HMAC-SHA Cryptographic
           Authentication", RFC 5709, October 2009,
           <http://www.rfc-editor.org/info/rfc5709>.

[RFC6374]  Frost, D. and S. Bryant, "Packet Loss and Delay
           Measurement for MPLS Networks", RFC 6374, September 2011,
           <http://www.rfc-editor.org/info/rfc6374>.

[RFC6863]  Hartman, S. and D. Zhang, "Analysis of OSPF Security
           According to the Keying and Authentication for Routing
           Protocols (KARP) Design Guide", RFC 6863, March 2013,
           <http://www.rfc-editor.org/info/rfc6863>.

[RFC7166]  Bhatia, M., Manral, V., and A. Lindem, "Supporting
           Authentication Trailer for OSPFv3", RFC 7166, March 2014,
           <http://www.rfc-editor.org/info/rfc7166>.

[RFC7285]  Alimi, R., Ed., Penno, R., Ed., Yang, Y., Ed., Kiesel, S.,
           Previdi, S., Roome, W., Shalunov, S., and R. Woundy,
           "Application-Layer Traffic Optimization (ALTO) Protocol",
           RFC 7285, September 2014,
           <http://www.rfc-editor.org/info/rfc7285>.

[OSPFSEC]  Bhatia, M., Hartman, S., Zhang, D., and A. Lindem, Ed.,
           "Security Extension for OSPFv2 when Using Manual Key
           Management", Work in Progress, draft-ietf-ospf-security-
           extension-manual-keying, November 2014.

Acknowledgments

Huge shoutout πŸŽ€ to Nabil Bitar, Edward Crabbe, Don Fedyk, Acee Lindem, David McDysan, and Ayman Soliman for their contributions to this document. πŸ’–

The authors also want to give a massive thank-you 🧚 to Curtis Villamizar for his significant comments and direct content collaboration. He really showed up. πŸ‘‘

Authors' Addresses

Meet the squad who wrote this! πŸ¦‹ Here are their contact details, exactly as published:

Spencer Giacalone
Unaffiliated

EMail: spencer.giacalone@gmail.com


Dave Ward
Cisco Systems
170 West Tasman Dr.
San Jose, CA  95134
United States

EMail: dward@cisco.com


John Drake
Juniper Networks
1194 N. Mathilda Ave.
Sunnyvale, CA  94089
United States

EMail: jdrake@juniper.net


Alia Atlas
Juniper Networks
1194 N. Mathilda Ave.
Sunnyvale, CA  94089
United States

EMail: akatlas@juniper.net


Stefano Previdi
Cisco Systems
Via Del Serafico 200
00142 Rome
Italy

EMail: sprevidi@cisco.com
πŸ“¦ where this page comes from