RFC 4736

Reoptimization of Multiprotocol Label Switching (MPLS) Traffic Engineering (TE) Loosely Routed Label Switched Path (LSP)

πŸ“… published November 2006, from ietf

Reoptimization of Multiprotocol Label Switching (MPLS) Traffic Engineering (TE) Loosely Routed Label Switched Path (LSP) πŸ¦‹

Okay bestie, let's get into it! πŸ’– This is RFC 4736, an Informational doc from the IETF, and it dropped in November 2006. πŸŽ€ It was written by JP. Vasseur (who edited it πŸ‘‘), Y. Ikejiri from NTT Communications Corporation 🌸, and R. Zhang from BT Infonet 🧚. JP. Vasseur is from Cisco Systems, Inc. ✨ This one doesn't obsolete or update any other RFCs, so it's a clean slate. πŸ’… It's "for the Internet community" and it is not an Internet standard of any kind, so just vibes and info, no cap. 🫢

Status of This Memo

This memo provides information for the Internet community. It does not specify an Internet standard of any kind. Distribution of this memo is unlimited. 🌈

Copyright Notice

Copyright (C) The IETF Trust (2006). πŸ’œ

Abstract ✨

Okay so the big idea is a mechanism for reoptimizing loosely routed MPLS and GMPLS TE LSPs that get signaled with RSVP-TE. πŸ”₯ The head-end LSR can kick off a new path re-evaluation on every hop whose next hop is a loose or abstract hop, and a mid-point LSR can tell the head-end that a better path exists, or that the TE LSP needs reoptimizing because of maintenance on its path. 🧚 It applies to intra- and inter-domain packet and non-packet TE LSPs that follow a loosely routed path (intra-domain means inside one IGP area or AS, inter-domain means across them). πŸ’–

Table of Contents πŸ“

1. Introduction ....................................................3
2. Terminology .....................................................3
   2.1. Requirements Language ......................................4
3. Establishment of a Loosely Routed TE LSP ........................4
4. Reoptimization of a Loosely Routed TE LSP Path ..................6
5. Signaling Extensions ............................................7
   5.1. Path Re-Evaluation Request .................................7
   5.2. New Error Value Sub-Codes ..................................7
6. Mode of Operation ...............................................7
   6.1. Head-End Reoptimization Control ............................7
   6.2. Reoptimization Triggers ....................................8
   6.3. Head-End Request versus Mid-Point Explicit
        Notification Functions .....................................8
        6.3.1. Head-End Request Function ...........................8
        6.3.2. Mid-Point Explicit Notification ....................10
        6.3.3. ERO Caching ........................................10
7. Applicability and Interoperability .............................11
8. IANA Considerations ............................................11
9. Security Considerations ........................................11
10. Acknowledgements ..............................................12
11. References ....................................................12
   11.1. Normative References .....................................12
   11.2. Informative References ...................................12

1. Introduction 🌸

Okay so this doc defines the reoptimization mechanism for loosely routed MPLS and GMPLS TE LSPs signaled with RSVP-TE (see [RFC3209] and [RFC3473]). πŸ’… A loosely routed LSP is one that doesn't have a full, explicit route listing every LSR along its path when the ingress LSR signals it. 😭 So it gets signaled with no Explicit Route Object (ERO), or with an ERO that has at least one loose hop, or with an ERO that has an abstract node that isn't a simple abstract node (aka an abstract node that stands for more than one LSR). πŸ™ˆ

The TE Working Group already wrote down requirements for inter-area and inter-AS MPLS Traffic Engineering (see [RFC4105] and [RFC4216]). ✨ Both of those docs say the head-end LSR needs some way to control reoptimization when a better path exists in a downstream domain (IGP area or AS). πŸ‘‘ This doc is the answer to that, and it proposes two mechanisms: πŸ¦‹

(1) The first one lets a head-end LSR trigger a new path re-evaluation on every hop with a next hop that's a loose hop or abstract node, and get a notification from the mid-point about whether a better path exists. πŸ’–

(2) The second one lets a mid-point LSR explicitly signal to the head-end LSR either that a better path exists to reach a loose/abstract hop (compared to the current path), or that the TE LSP must be reoptimized because of some maintenance on the TE LSP path. πŸ”₯ Here the mid-point LSR sends the notification without the head-end LSR polling for it first. 🧚

A better path is defined as a lower cost path, where the cost is determined by the metric used to compute the path. πŸ’…

2. Terminology πŸŽ€

Okay, the vocab you need, bestie: 🫢

ABR: Area Border Router. 🌈

ERO: Explicit Route Object. πŸ’œ

LSR: Label Switching Router. ✨

TE LSP: Traffic Engineering Label Switched Path. πŸ”₯

TE LSP head-end: head/source of the TE LSP. πŸ‘‘

TE LSP tail-end: tail/destination of the TE LSP. 🌸

Interior Gateway Protocol Area (IGP Area): OSPF Area or IS-IS level. 🧚

Intra-area TE LSP: A TE LSP whose path does not transit across areas. πŸ’–

Inter-area TE LSP: A TE LSP whose path transits across at least two different IGP areas. πŸ¦‹

Inter-AS MPLS TE LSP: A TE LSP whose path transits across at least two different Autonomous Systems (ASes) or sub-ASes (BGP confederations). πŸ’…

2.1. Requirements Language πŸ™ˆ

Okay so the key words in this doc are "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL", and they're interpreted as described in RFC 2119 [RFC2119]. ✨

3. Establishment of a Loosely Routed TE LSP 🧚

Okay so this section is just a quick recap of how a loosely routed TE LSP gets set up, as specified in [RFC3209]. πŸ’– If you want the full deep dive, go read RFC 3209 itself. 🌸

Quick reminder of the definition: a loosely routed LSP is one that doesn't have a full, explicit route listing each LSR along the path at signaling time. 😭 It's signaled with no ERO, with an ERO that has at least one loose hop, or with an ERO that has an abstract node that isn't a simple abstract node (an abstract node that identifies more than one LSR). πŸ™ˆ As [RFC3209] says, loose hops show up in the ERO object of the RSVP Path message with the L flag of the IPv4 or IPv6 prefix sub-object set. πŸ‘‘

Every LSR along the path whose next hop is a loose hop or a non-specific abstract node kicks off a path computation (also called an ERO expansion) before it forwards the RSVP Path message downstream. πŸ”₯ The computed path can be partial (up to the next loose hop) or complete (a set of strict hops all the way to the TE LSP destination). πŸ¦‹

This doc's examples are in the context of MPLS inter-area TE, but the mechanism works just as well for loosely routed paths inside a single routing domain and across multiple Autonomous Systems. πŸ’… The examples use OSPF as the IGP, but the same mechanisms apply to IS-IS too. 🌈

Here's an example of explicit loosely routed TE LSP signaling. πŸŽ€

<---area 1--><-area 0--><-area 2->

 R1---R2----R3---R6    R8---R10
  |          |    |   / | \  |
  |          |    |  /  |  \ |
  |          |    | /   |   \|
 R4---------R5---R7----R9---R11

Assumptions πŸ’œ

  • R3, R5, R8, and R9 are ABRs. 🧚
  • The path of an inter-area TE LSP T1 from R1 (head-end LSR) to R11 (tail-end LSR) is defined on R1 as the following loosely routed path: R1-R3(loose)-R8(loose)-R11(loose). R3, R8, and R11 are defined as loose hops. 🌸

Step 1: R1 sees that the next hop (R3) is a loose hop (not directly connected to R1), so it does an ERO expansion to reach the next loose hop, R3. πŸ’– The new ERO becomes: R2(S)-R3(S)-R8(L)-R11(L), where S is a strict hop (L=0) and L is a loose hop (L=1). ✨

The R1-R2-R3 path satisfies T1's set of constraints. πŸ¦‹

Step 2: R1 forwards the RSVP Path message along the path in the ERO object, and it reaches R3 with this content: R8(L)-R11(L). πŸ”₯

Step 3: R3 sees that the next hop (R8) is a loose hop (not directly connected to R3), so it does an ERO expansion to reach the next loose hop, R8. πŸ‘‘ The new ERO becomes: R6(S)-R7(S)-R8(S)-R11(L). πŸ’…

Note: In this example, the path is computed on a per-loose-hop basis, which is also called a partial route computation. πŸ™ˆ Other path computation techniques may give complete paths (a set of strict hops up to the final destination). 🌈

Step 4: R8 repeats the same procedure to reach T1's destination (R11). πŸŽ€

Part 1 of 3 is done, bestie! 🫢 Sections 4 onwards are coming next, so stay tuned. ✨

4. Reoptimization of a Loosely Routed TE LSP Path πŸ¦‹

okay so once a loosely routed, explicit TE LSP is set up, it gets maintained through the normal RSVP procedures πŸ’… During the TE LSP lifetime, a more optimal path might show up between an LSR and its next loose hop. For the sake of illustration, say that in the example above a link between R6 and R8 gets added or restored. That gives a better path between R3 and R8 (R3-R6-R8) than the existing R3-R6-R7-R8 path πŸ‘€

Here's the tea: a preferable (e.g., shorter) path might not be visible from the head-end LSR through the IGP if the head-end LSR isn't in the same IGP area where the topology change happened. So the head-end can't use that shorter path (and reroute the LSP with a make-before-break technique as described in [RFC3209]) when it would make sense. That's why a new mechanism specified in this document is required to detect that a preferable path exists and to notify the head-end LSR 🫢

This document defines a mechanism that allows:

  • a head-end LSR to trigger, on every LSR whose next hop is a loose hop or an abstract node, a re-evaluation of the current path to detect a potentially more optimal path; and
  • a mid-point LSR whose next hop is a loose-hop or an abstract node to signal (using a new Error Value sub-code carried in an RSVP PathErr message) to the head-end LSR that a preferable path exists (a path with a lower cost, where the cost definition is determined by some metric).

Once the head-end LSR has been notified of such a preferable path, it can decide (depending on the TE LSP characteristics) whether to perform a TE LSP graceful reoptimization, such as the "make-before-break" procedure. πŸ’–

There's another scenario where telling the head-end LSR about a better path is desirable: when the current path is about to fail due to some (link or node) required maintenance πŸ”§

Basically, this mechanism lets the head-end LSR reoptimize a TE LSP by using the non-disruptive make-before-break procedure, but only if a preferable path exists and such a reoptimization is desired. No surprise reroutes, bestie 🌸

5. Signaling Extensions ✨

A new flag in the SESSION ATTRIBUTE object and new Error Value sub-codes in the ERROR SPEC object are proposed in this document. Two new things, one cute little flag and a few new error codes πŸŽ€

5.1. Path Re-Evaluation Request πŸ“

The following new flag of the SESSION_ATTRIBUTE object (C-Type 1 and 7) is defined:

Path re-evaluation request: 0x20

This flag says that a path re-evaluation (of the current path in use) is requested. Note that this does not trigger any LSP Reroute. It just signals a request to check whether a preferable path exists πŸ”

Note: In case of link bundling, for instance, although the resulting ERO might be identical, this might give the opportunity for a mid-point LSR to locally select another link within a bundle. However, strictly speaking, the ERO has not changed. 🧚

5.2. New Error Value Sub-Codes πŸ’œ

As defined in [RFC3209], Error Code 25 in the ERROR SPEC object corresponds to a Notify Error.

This document adds three new Error Value sub-codes:

  • 6 Preferable path exists
  • 7 Local link maintenance required
  • 8 Local node maintenance required

The details about the local maintenance required modes are in Section 6.3.2. Go check it out, it's giving important πŸ‘‘

6. Mode of Operation 🌈

6.1. Head-End Reoptimization Control πŸŽ€

The notification process for a preferable path (a shorter path, or a new path due to some maintenance required on the current path) is by nature de-correlated from the reoptimization operation. In other words, the location where a potentially preferable path is discovered does not have to be where the TE LSP is actually reoptimized. This document applies to the context of a head-end LSR reoptimization. πŸ’…

6.2. Reoptimization Triggers ⭐

There are several possible reoptimization triggers:

  • Timer-based: A reoptimization is triggered (a process evaluating whether a more optimal path can be found) when a configurable timer expires.
  • Event-driven: A reoptimization is triggered when a particular network event occurs (such as a "Link-UP" event).
  • Operator-driven: A reoptimization is manually triggered by the Operator.

It is RECOMMENDED that an implementation supporting the extensions proposed in this document support the aforementioned modes as path re-evaluation triggers. Yes, please, support all the triggers πŸ™Œ

6.3. Head-End Request versus Mid-Point Explicit Notification Functions πŸ¦‹

This document defines two functions:

  1. "Head-end requesting function": The request for a new path evaluation of a loosely routed TE LSP is made by the head-end LSR.
  2. "Mid-point explicit notification function": Having determined that a preferable path (other than the current path) exists, or having the need to perform a link/node local maintenance, a mid-point LSR explicitly notifies the head-end LSR, which will in turn decide whether to perform a reoptimization.

6.3.1. Head-End Request Function πŸš€

When a timer-based reoptimization is triggered on the head-end LSR, or the operator manually requests a reoptimization, the head-end LSR immediately sends an RSVP Path message with the "Path re-evaluation request" bit of the SESSION-ATTRIBUTE object set. This bit is then cleared in subsequent RSVP path messages sent downstream. To handle the case of a lost Path message, the solution relies on the reliable messaging mechanism described in [RFC2961].

Upon receiving a Path message with the "Path re-evaluation request" bit set, every LSR for which the next abstract node contained in the ERO is defined as a loose hop/abstract node performs the following set of actions:

A path re-evaluation is triggered, and the newly computed path is compared to the existing path:

  • If a preferable path can be found, the LSR performing the path re-evaluation MUST immediately send an RSVP PathErr to the head-end LSR (Error code 25 (Notify), Error sub-code=6 (better path exists)). At this point, the LSR MAY decide not to propagate this bit in subsequent RSVP Path messages sent downstream for the re-evaluated TE LSP. This mode is the RECOMMENDED mode, for the reasons described below.

The sending of an RSVP PathErr Notify message "Preferable path exists" to the head-end LSR notifies the head-end LSR of the existence of a preferable path (e.g., in a downstream area/AS or in another location within a single domain). Therefore, triggering additional path re-evaluations on downstream nodes is unnecessary. The only motivation to forward subsequent RSVP Path messages with the "Path re-evaluation request" bit of the SESSION-ATTRIBUTE object set would be to trigger path re-evaluation on downstream nodes that could in turn cache some potentially better paths downstream, with the objective of reducing the signaling setup delay, should a reoptimization be performed by the head-end LSR. 🧠

  • If no preferable path can be found, the recommended mode is for an LSR to relay the request (by setting the "Path re-evaluation" bit of the SESSION-ATTRIBUTE object in the RSVP path message sent downstream).

Note that, by preferable path, we mean a path with a lower cost.

If the RSVP Path message with the "Path re-evaluation request" bit set is lost, then the next request will be sent when the next reoptimization trigger occurs on the head-end LSR. The solution for handling RSVP reliable messaging has been defined in [RFC2961].

The network administrator may decide to establish some local policy specifying to ignore such requests, or not to consider those requests more frequently than at a certain rate. Admin's choice, no judgement 🫢

The proposed mechanism does not make any assumption about the path computation method performed by the ERO expansion process.

6.3.2. Mid-Point Explicit Notification 🌸

By contrast with the head-end request function, in this case a mid-point LSR whose next hop is a loose hop or an abstract node can locally trigger a path re-evaluation when a configurable timer expires, when some specific events occur (e.g., a link-up event), or when the user explicitly requests it. If a preferable path is found, the LSR sends an RSVP PathErr to the head-end LSR (Error code 25 (Notify), Error sub-code=6 ("preferable path exists")).

There is another circumstance in which any mid-point LSR MAY send an RSVP PathErr message, with the objective of having the TE LSP rerouted by its head-end LSR: when a link or a node will go down for local maintenance reasons. In this case, the LSR where the local maintenance must be performed is responsible for sending an RSVP PathErr message with Error code 25 and Error sub-code=7 or 8, depending on the affected network element (link or node). Then the first upstream node that performed the ERO expansion MUST perform the following set of actions:

  • The link (sub-code=7) or the node (sub-code=8) MUST be locally registered for further reference (the TE database must be updated).
  • The RSVP PathErr message MUST be immediately forwarded upstream to the head-end LSR. Note that in the case of a TE LSP spanning multiple administrative domains, it may be desirable for the boundary LSR to modify the RSVP PathErr message and insert its own address for confidentiality. πŸ”

Upon receiving an RSVP PathErr message with Error code 25 and Error sub-code 7 or 8, the head-end LSR SHOULD perform a TE LSP reoptimization.

Note that the two functions (head-end and mid-point driven) are not exclusive of each other: both the timer and event-driven reoptimization triggers can be implemented on the head-end or on any mid-point LSR, with a potentially different timer value for the timer-driven reoptimization case. Mix and match, it's all good 🌈

A head-end LSR MAY decide, upon receiving an explicit mid-point notification, to delay its next path re-evaluation request. ⏳

6.3.3. ERO Caching πŸ’Ž

Once a mid-point LSR has determined that a preferable path exists (after a reoptimization request has been received by the head-end LSR, or the reoptimization timer on the mid-point has expired), the more optimal path MAY be cached on the mid-point LSR for a limited amount of time, to avoid having to recompute a path once the head-LSR performs a make-before-break. This mode is optional. A default value of 5 seconds for the caching timer is suggested. ⏱️

7. Applicability and Interoperability 🫢

The procedures described in this document are entirely optional within an MPLS or GMPLS network. Implementations that do not support the procedures described in this document will interoperate seamlessly with those that do. Further, an implementation that does not support the procedures described in this document will not be impacted or implicated by a neighboring implementation that does implement them. Live and let live πŸ¦‹

An ingress implementation that chooses not to support the procedures described in this document may still achieve re-optimization by periodically issuing a speculative make-before-break replacement of an LSP, without trying to discovery whether a more optimal path is available in a downstream domain. Such a procedure would not conflict with any mechanisms already documented in [RFC3209] and [RFC3473]. 🌷

An LSR not supporting the "Path re-evaluation request" bit of the SESSION-ATTRIBUTE object SHALL forward it unmodified. πŸŽ€

A head-end LSR not supporting an RSVP PathErr with Error code 25 message and Error sub-code = 6, 7, or 8 MUST just silently ignore such an RSVP PathErr message. Ignoring it is the move, no drama 🀫

8. IANA Considerations ✨

okay so IANA handed out three new error sub-code values for the RSVP PathErr Notify message (Error code=25) πŸŽ€

6 Preferable path exists
7 Local link maintenance required
8 Local node maintenance required

sub-code 6 is for when a better path exists, and 7 and 8 are for when a link or node needs maintenance πŸ”§βœ¨

9. Security Considerations πŸ”

bestie, this section is lowkey the most important part 😭 This document defines a way for a mid-point LSR to tell the head-end LSR that a preferable path exists, or that the TE LSP needs to be rerouted for maintenance πŸ¦‹ That means the TE LSP might cross multiple administrative domains, and in that case it may be desirable for a boundary LSR to modify the RSVP PathErr message (Code 25, Error sub-code = 6, 7, or 8) so that confidentiality is preserved across domains 🫢

also, a head-end LSR may decide to ignore explicit notifications coming from a mid-point that sits in another domain πŸ™…β€β™€οΈ Similarly, an LSR may decide to ignore path re-evaluation requests from a head-end LSR in another domain, or accept them only up to a pre-defined rate πŸ’… no cap, rate limiting is giving protection πŸ›‘οΈ

10. Acknowledgements 🌸

the authors thanked Carol Iturralde, Miya Kohno, Francois Le Faucheur, Philip Matthews, Jim Gibson, Jean-Louis Le Roux, Kenji Kumaki, Anca Zafir, and Dimitri Papadimitriou for their useful comments πŸ’– and a special thank-you goes to Adrian Farrel for his very valuable inputs πŸ‘‘

11. References πŸ“š

11.1. Normative References

[RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
           Requirement Levels", BCP 14, RFC 2119, March 1997.

[RFC2961]  Berger, L., Gan, D., Swallow, G., Pan, P., Tommasi, F.,
           and S. Molendini, "RSVP Refresh Overhead Reduction
           Extensions", RFC 2961, April 2001.

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

[RFC3473]  Berger, L., "Generalized Multi-Protocol Label Switching
           (GMPLS) Signaling Resource ReserVation Protocol-Traffic
           Engineering (RSVP-TE) Extensions", RFC 3473, January 2003.

11.2. Informative References

[RFC4105]  Le Roux, J.-L., Vasseur, J.-P., and J. Boyle,
           "Requirements for Inter-Area MPLS Traffic Engineering",
           RFC 4105, June 2005.

[RFC4216]  Zhang, R. and J.-P. Vasseur, "MPLS Inter-Autonomous System
           (AS) Traffic Engineering (TE) Requirements", RFC 4216,
           November 2005.

Authors' Addresses πŸ’Œ

three authors signed off on this one πŸ’œ

JP Vasseur (Editor)
Cisco Systems, Inc
1414 Massachusetts Avenue
Boxborough, MA  01719
USA

EMail: jpv@cisco.com


Yuichi Ikejiri
NTT Communications Corporation
1-1-6, Uchisaiwai-cho, Chiyoda-ku
Tokyo,   100-8019
Japan

EMail: y.ikejiri@ntt.com


Raymond Zhang
BT Infonet
2160 E. Grand Ave.
El Segundo, CA  90025
USA

EMail: raymond_zhang@bt.infonet.com

the IETF Trust holds the copyright on this one (2006) πŸ¦‹ This document is subject to the rights, licenses and restrictions in BCP 78, and except as set out there, the authors keep all their rights ✨

⚠️ the whole document and everything in it is provided "AS IS", and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST, AND THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.

Intellectual Property πŸ’…

the IETF takes no position on whether any Intellectual Property Rights claimed to cover this technology are valid, what their scope is, or whether a license is available, and it hasn't made any independent effort to find out πŸ™ˆ more on how RFC rights work is in BCP 78 and BCP 79 πŸ“–

copies of IPR disclosures sent to the IETF Secretariat, any assurances of licenses, and the results of attempts to get a general license for implementers or users are available from the IETF's online IPR repository at http://www.ietf.org/ipr πŸ”—

the IETF also invites anyone who knows about copyrights, patents, patent applications, or other proprietary rights that might cover technology needed to implement this standard to tell them, by emailing ietf-ipr@ietf.org πŸ“¬

Acknowledgement 🫢

funding for the RFC Editor function is currently provided by the Internet Society 🌈

πŸ“¦ where this page comes from