RFC 7812
An Architecture for IP/LDP Fast Reroute Using Maximally Redundant Trees (MRT-FRR)
1. Introduction โจ
Okay so, bestie, this is the document that defines the architecture for IP/LDP Fast Reroute using Maximally Redundant Trees (MRT-FRR) ๐ฆ It's giving "networks that heal themselves before anyone notices" and I am obsessed.
Let's get the title block sorted first, because it's the main character intro ๐
Internet Engineering Task Force (IETF) is the org behind this one. The document is RFC 7812, titled An Architecture for IP/LDP Fast Reroute Using Maximally Redundant Trees (MRT-FRR). It's dated June 2016 and it's a Standards Track document ๐ The authors are A. Atlas and C. Bowers from Juniper Networks, plus G. Enyedi from Ericsson ๐ธ ISSN is 2070-1721.
Nothing in the title block says it obsoletes or updates another RFC, so there's no drama there ๐
The Abstract is basically the TL;DR: MRT-FRR is a technology that gives link-protection and node-protection with 100% coverage in any network topology that is still connected after the failure. Iconic ๐
Status of This Memo
This is an Internet Standards Track document โจ It's a product of the IETF, it represents the consensus of the IETF community, it got public review, and the IESG approved it for publication. If you want more on Internet Standards, check Section 2 of RFC 7841 ๐ซถ
For the current status, any errata, and how to send feedback, go to http://www.rfc-editor.org/info/rfc7812 ๐
Copyright Notice
Copyright (c) 2016 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) as in effect on the date of publication. Please read these carefully, because they describe your rights and restrictions ๐ Code Components pulled out of this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions, and they come without warranty as described in that license ๐
Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Importance of 100% Coverage . . . . . . . . . . . . . . . 4
1.2. Partial Deployment and Backwards Compatibility . . . . . 5
2. Requirements Language . . . . . . . . . . . . . . . . . . . . 5
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 5
4. Maximally Redundant Trees (MRT) . . . . . . . . . . . . . . . 7
5. MRT and Fast Reroute . . . . . . . . . . . . . . . . . . . . 9
6. Unicast Forwarding with MRT Fast Reroute . . . . . . . . . . 9
6.1. Introduction to MRT Forwarding Options . . . . . . . . . 10
6.1.1. MRT LDP Labels . . . . . . . . . . . . . . . . . . . 10
6.1.1.1. Topology-Scoped FEC Encoded Using a Single Label
(Option 1A) . . . . . . . . . . . . . . . . . . . 10
6.1.1.2. Topology and FEC Encoded Using a Two-Label Stack
(Option 1B) . . . . . . . . . . . . . . . . . . . 11
6.1.1.3. Compatibility of MRT LDP Label Options 1A and 1B 12
6.1.1.4. Required Support for MRT LDP Label Options . . . 12
6.1.2. MRT IP Tunnels (Options 2A and 2B) . . . . . . . . . 12
6.2. Forwarding LDP Unicast Traffic over MRT Paths . . . . . . 13
6.2.1. Forwarding LDP Traffic Using MRT LDP Label Option 1A 13
6.2.2. Forwarding LDP Traffic Using MRT LDP Label Option 1B 14
6.2.3. Other Considerations for Forwarding LDP Traffic Using
MRT LDP Labels . . . . . . . . . . . . . . . . . . . 14
6.2.4. Required Support for LDP Traffic . . . . . . . . . . 14
6.3. Forwarding IP Unicast Traffic over MRT Paths . . . . . . 14
6.3.1. Tunneling IP Traffic Using MRT LDP Labels . . . . . . 15
6.3.1.1. Tunneling IP Traffic Using MRT LDP Label Option
1A . . . . . . . . . . . . . . . . . . . . . . . 15
6.3.1.2. Tunneling IP Traffic Using MRT LDP Label Option
1B . . . . . . . . . . . . . . . . . . . . . . . 15
6.3.2. Tunneling IP Traffic Using MRT IP Tunnels . . . . . . 16
6.3.3. Required Support for IP Traffic . . . . . . . . . . . 16
7. MRT Island Formation . . . . . . . . . . . . . . . . . . . . 16
7.1. IGP Area or Level . . . . . . . . . . . . . . . . . . . . 17
7.2. Support for a Specific MRT Profile . . . . . . . . . . . 17
7.3. Excluding Additional Routers and Interfaces from the MRT
Island . . . . . . . . . . . . . . . . . . . . . . . . . 18
7.3.1. Existing IGP Exclusion Mechanisms . . . . . . . . . . 18
7.3.2. MRT-Specific Exclusion Mechanism . . . . . . . . . . 19
7.4. Connectivity . . . . . . . . . . . . . . . . . . . . . . 19
7.5. Algorithm for MRT Island Identification . . . . . . . . . 19
8. MRT Profile . . . . . . . . . . . . . . . . . . . . . . . . . 19
8.1. MRT Profile Options . . . . . . . . . . . . . . . . . . . 19
8.2. Router-Specific MRT Parameters . . . . . . . . . . . . . 21
8.3. Default MRT Profile . . . . . . . . . . . . . . . . . . . 21
9. LDP Signaling Extensions and Considerations . . . . . . . . . 22
10. Inter-area Forwarding Behavior . . . . . . . . . . . . . . . 23
10.1. ABR Forwarding Behavior with MRT LDP Label Option 1A . . 23
10.1.1. Motivation for Creating the Rainbow-FEC . . . . . . 24
10.2. ABR Forwarding Behavior with IP Tunneling (Option 2) . . 24
10.3. ABR Forwarding Behavior with MRT LDP Label Option 1B . . 25
11. Prefixes Multiply Attached to the MRT Island . . . . . . . . 26
11.1. Protecting Multihomed Prefixes Using Tunnel Endpoint
Selection . . . . . . . . . . . . . . . . . . . . . . . 28
11.2. Protecting Multihomed Prefixes Using Named Proxy-Nodes . 29
11.3. MRT Alternates for Destinations outside the MRT Island . 31
12. Network Convergence and Preparing for the Next Failure . . . 32
12.1. Micro-loop Prevention and MRTs . . . . . . . . . . . . . 32
12.2. MRT Recalculation for the Default MRT Profile . . . . . 33
13. Operational Considerations . . . . . . . . . . . . . . . . . 34
13.1. Verifying Forwarding on MRT Paths . . . . . . . . . . . 34
13.2. Traffic Capacity on Backup Paths . . . . . . . . . . . . 34
13.3. MRT IP Tunnel Loopback Address Management . . . . . . . 36
13.4. MRT-FRR in a Network with Degraded Connectivity . . . . 36
13.5. Partial Deployment of MRT-FRR in a Network . . . . . . . 37
14. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 37
15. Security Considerations . . . . . . . . . . . . . . . . . . . 38
16. References . . . . . . . . . . . . . . . . . . . . . . . . . 38
16.1. Normative References . . . . . . . . . . . . . . . . . . 38
16.2. Informative References . . . . . . . . . . . . . . . . . 39
Appendix A. Inter-level Forwarding Behavior for IS-IS . . . . . 41
Appendix B. General Issues with Area Abstraction . . . . . . . . 42
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 43
Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 44
1. Introduction ๐
This document describes a solution for IP/LDP fast reroute [RFC5714]. MRT-FRR creates two alternate forwarding trees that are distinct from the primary next-hop forwarding used during stable operation ๐ฆ These two trees are maximally diverse from each other, which gives link and node protection for 100% of paths and failures, as long as the failure doesn't cut the network into multiple pieces. This document defines the architecture for IP/LDP fast reroute with MRT ๐
[RFC7811] describes how to compute maximally redundant trees using a specific algorithm: the MRT Lowpoint algorithm ๐ง The MRT Lowpoint algorithm is used by a router that supports the Default MRT Profile, as specified in this document.
Quick bestie check: the two trees are the whole trick. A primary next hop should be on only one of the diverse forwarding topologies, so the other one can be the alternate ๐ซถ
IP/LDP Fast Reroute using Maximally Redundant Trees (MRT-FRR) uses two maximally diverse forwarding topologies to provide alternates. A primary next hop should be on only one of the diverse forwarding topologies; thus, the other can be used to provide an alternate. Once traffic has been moved to one of the MRTs by one Point of Local Repair (PLR), that traffic is not subject to further repair actions by another PLR, even in the event of multiple simultaneous failures. Therefore, traffic repaired by MRT-FRR will not loop between different PLRs responding to different simultaneous failures ๐ฅ
Okay, the caveats are real though, so listen up ๐ While MRT provides 100% protection for a single link or node failure, it may not protect traffic in the event of multiple simultaneous failures, and it doesn't take Shared Risk Link Groups (SRLGs) into account. Also, while the MRT Lowpoint algorithm is computationally efficient, it's also new. For MRT-FRR to function properly, all of the other nodes in the network that support MRT must correctly compute next hops based on the same algorithm and install the corresponding forwarding state ๐ This is different from other FRR methods, where calculating backup paths generally involves repeated use of the simpler and widely deployed Shortest Path First (SPF) algorithm, and the backup paths reuse the forwarding state used for shortest path forwarding of normal traffic. Section 13 gives operational guidance on verifying MRT forwarding paths ๐ธ
In addition to supporting IP and LDP unicast fast reroute, the diverse forwarding topologies and the guarantee of 100% coverage let fast-reroute technology be applied to multicast traffic, as described in [MRT-ARCH]. However, this document doesn't cover the multicast applications of MRTs โจ
1.1. Importance of 100% Coverage ๐
Fast reroute is based on the single failure assumption: the time between single failures is long enough for a network to reconverge and start forwarding on the new shortest paths. That does not imply the network will only ever experience one failure or change ๐ฆ
It's straightforward to analyze a particular network topology for coverage. But a real network doesn't always keep the same topology ๐ For instance, maintenance events take links or nodes out of use, and simply costing out a link can have a big effect on which Loop-Free Alternates (LFAs) are available. Similarly, after a single failure has happened, the topology has changed and its coverage has changed too. Finally, lots of networks add and remove routers or links, and each of those changes can affect coverage for topology-sensitive methods such as LFA and Remote LFA. So if fast reroute matters for the services the network provides, a method that guarantees 100% coverage is important to handle natural topology changes ๐
When a network needs to use Ordered FIB [RFC6976] or Nearside Tunneling [RFC5715] as a micro-loop prevention mechanism [RFC5715], then the whole IGP area needs alternates available ๐ซถ This lets the micro-loop prevention mechanism, which needs slower network convergence, take the time it needs without hurting traffic. Without complete coverage, traffic to unprotected destinations will be dropped for significantly longer than with current convergence, where routers individually converge as fast as possible ๐ See Section 12.1 for more discussion of micro-loop prevention and MRTs ๐
Part 1 of 10 done, bestie. Part 2 is coming with Section 1.2 and onwards ๐ง๐
1.2. Partial Deployment and Backwards Compatibility
okay so MRT-FRR is totally fine with partial deployment ๐ซถ you don't need every router to be on board at once. routers just advertise that they can do MRT, and the MRT-capable group that's connected together is called an MRT Island ๐๏ธ. the MRTs get computed inside that island. for destinations outside the island, the alternates depend on having a loop-free neighbor of the island for that destination. the whole island thing is explained in detail in Section 7, and partial deployment gets more love in Section 13.5 โจ
2. Requirements Language โจ
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 [RFC2119]. ๐ the capital letters are doing serious work here, so read them carefully bestie ๐
3. Terminology
okay this section is the vocab list, and we're gonna need it all ๐
network graph: a graph that shows the network topology, where every link connects exactly two nodes and broadcast links have been turned into the standard pseudonode representation ๐ธ
cut-link: a link whose removal splits the network into pieces. a cut-link has to be connected between two cut-vertices, by definition ๐ฆ if there are parallel links, they count as cut-links in this document when removing the whole set of parallel links would partition the network graph.
cut-vertex: a vertex whose removal partitions the network graph ๐
2-connected: a graph with no cut-vertices. you'd have to remove two nodes before the network falls apart ๐ซถ
2-connected cluster: a maximal set of nodes that are 2-connected โจ
block: either a 2-connected cluster, a cut-edge, or a cut-vertex ๐งฉ
Redundant Trees (RT): a pair of trees where the path from any node X to the root R along the first tree is node-disjoint with the path from that same node X to the root along the second tree. redundant trees can always be computed in 2-connected graphs ๐
Maximally Redundant Trees (MRT): a pair of trees where the path from any node X to the root R along the first tree and the path from that same node X to the root along the second tree share the minimum number of nodes and the minimum number of links. each shared node is a cut-vertex, and any shared links are cut-links ๐ฅ in graphs that are not 2-connected, RTs can't be computed, but MRTs can! they're as redundant as possible given the constraints of the network graph. the MRT glow-up is real ๐
Directed Acyclic Graph (DAG): a graph where all links are directed and there are no cycles in it ๐
Almost Directed Acyclic Graph (ADAG): a graph with one node designated as the root. the graph has the property that if you removed all links incoming to the root, the result would be a DAG ๐ง
Generalized ADAG (GADAG): a graph that combines the ADAGs of all blocks ๐
MRT-Red: this describes one of the two MRTs. it's used to describe the associated forwarding topology and MPLS Multi-Topology IDentifier (MT-ID). specifically, MRT-Red is the decreasing MRT, where links in the GADAG are taken in the direction from a higher topologically ordered node to a lower one โค๏ธ
MRT-Blue: this describes the other MRT. it's used to describe the associated forwarding topology and MPLS MT-ID. specifically, MRT-Blue is the increasing MRT, where links in the GADAG are taken in the direction from a lower topologically ordered node to a higher one ๐
Rainbow MRT: it's useful to have an MPLS MT-ID that refers to the multiple MRT forwarding topologies and the default forwarding topology. this is the Rainbow MRT MPLS MT-ID ๐ LDP uses it to reduce signaling and to keep the same label always advertised to all peers for the same (MT-ID, Prefix) ๐ซถ
MRT Island: the set of routers that support a particular MRT profile, plus the links connecting them that support MRT ๐๏ธ
Island Border Router (IBR): a router in the MRT Island that's connected to a router that is not in the MRT Island, with both of them in a common area or level ๐ง
Island Neighbor (IN): a router that is not in the MRT Island but is adjacent to an IBR and in the same area/level as that IBR ๐
named proxy-node: a proxy-node can represent a destination prefix that can be attached to the MRT Island via at least two routers. it's named if there's a way that traffic can be encapsulated to reach that specific proxy node. this could be because there's an LDP FEC (Forwarding Equivalence Class) for the associated prefix, or because MRT-Red and MRT-Blue IP addresses are advertised in an undefined fashion for that proxy-node ๐
4. Maximally Redundant Trees (MRT)
okay the big idea ๐ง a pair of Maximally Redundant Trees is a pair of directed spanning trees that gives you maximally disjoint paths toward their common root. only the links or nodes whose failure would partition the network (cut-links and cut-vertices) are shared between the two trees, which is honestly so iconic โจ the MRT Lowpoint algorithm is given in [RFC7811]. it can be computed in O(e + n log n), and it's less than three SPFs ๐ฅ this document covers how MRTs get used, not how to compute them.
MRT provides destination-based trees for each destination. every router stores its normal primary next hop(s), plus its MRT-Blue next hop(s) and MRT-Red next hop(s) toward each destination ๐ฆ the alternate gets selected between MRT-Blue and MRT-Red.
the most important thing to understand about MRTs is this: for each pair of destination-routed MRTs, there's a path from every node X to the destination D on the Blue MRT that is as disjoint as possible from the path on the Red MRT. main character energy ๐
here's an example. Figure 1 shows a network graph that's 2-connected in (a), with its associated MRTs in (b) and (c). take the paths from B to R. on the Blue MRT, the paths are B->F->D->E->R or B->C->D->E->R. on the Red MRT, the path is B->A->R. these are clearly link and node-disjoint, which is why these MRTs count as redundant trees ๐ธ
[E]---[D]---| [E]<--[D]<--| [E]-->[D]---|
| | | | ^ | | |
| | | V | | V V
[R] [F] [C] [R] [F] [C] [R] [F] [C]
| | | ^ ^ ^ | |
| | | | | | V |
[A]---[B]---| [A]-->[B]---| [A]<--[B]<--|
(a) (b) (c)
a 2-connected graph Blue MRT towards R Red MRT towards R
Figure 1: A 2-Connected Network
now the plot twist ๐ณ in Figure 2, the network in (a) is not 2-connected. if C, G, or the link C<->G failed, the network would get partitioned. it's clearly impossible to have two link-disjoint or node-disjoint paths from G, J, or H to R. the MRTs in (b) and (c) still offer paths that are as disjoint as possible. for instance, the paths from B to R are the same as in Figure 1, and the path from G to R is G->C->D->E->R on the Blue MRT and G->C->B->A->R on the Red MRT ๐ฅน
[E]---[D]---| |---[J]
| | | | |
| | | | |
[R] [F] [C]---[G] |
| | | | |
| | | | |
[A]---[B]---| |---[H]
(a) a graph that is not 2-connected
[E]<--[D]<--| [J] [E]-->[D]---| |---[J]
| ^ | | | | | ^
V | | | V V V |
[R] [F] [C]<--[G] | [R] [F] [C]<--[G] |
^ ^ ^ | ^ | | |
| | | V | V | |
[A]-->[B]---| |---[H] [A]<--[B]<--| [H]
(b) Blue MRT towards R (c) Red MRT towards R
Figure 2: A Network That Is Not 2-Connected
5. MRT and Fast Reroute
quick recap of normal IGP routing: each router has its Shortest Path Tree (SPT) to all destinations ๐ณ from the perspective of one particular destination, D, that looks like a reverse SPT (rSPT). to use MRT, each destination D also gets two MRTs associated with it. by convention, these are called the MRT-Blue and MRT-Red ๐โค๏ธ MRT-FRR is realized by using multi-topology forwarding, so there's an MRT-Blue forwarding topology and an MRT-Red forwarding topology ๐
any IP/LDP fast-reroute technique that goes beyond LFA needs an extra dataplane procedure, like an additional forwarding mechanism. the well-known options are multi-topology forwarding (used by MRT-FRR), tunneling (e.g., [RFC6981] or [RFC7490]), and per-interface forwarding (e.g., Loop-Free Failure Insensitive Routing in [EnyediThesis]) ๐ง
when there's a link or node failure that affects the network but doesn't partition it, each node still has at least one path via one of the MRTs to reach destination D โจ for example, in Figure 2, B would normally forward traffic to R across B->A->R. if the B<->A link fails, B could use the MRT-Blue path B->F->D->E->R ๐ฆ
as always with fast-reroute tech, forwarding doesn't change until a local failure is detected ๐จ packets go along the shortest path, and the appropriate alternate to use is pre-computed. [RFC7811] describes exactly how to decide whether the MRT-Blue next hops or the MRT-Red next hops should be the MRT alternate next hops for a particular primary next hop to a particular destination ๐
MRT alternates are always available to use ๐ whether you use an MRT alternate, an LFA, or some other type of alternate is a local decision.
okay here's the part that makes me emotional ๐ฅบ as described in [RFC5286], when a worse failure than anticipated happens, using LFAs that aren't downstream neighbors can cause looping among alternates. Section 1.1 of [RFC5286] gives an example of link-protecting alternates causing a loop on node failure. but even if a worse failure than anticipated happens, using MRT alternates won't cause looping ๐ญ๐ซถ
6. Unicast Forwarding with MRT Fast Reroute
there are three possible types of routers involved in forwarding a packet along an MRT path ๐งโโ๏ธ at the MRT ingress router, the packet leaves the shortest path to the destination and follows an MRT path to the destination. in an FRR application, the MRT ingress router is the PLR. an MRT transit router takes a packet that already arrives associated with a particular MRT, and forwards it on that same MRT ๐ in some situations (we'll get to those later), the packet will need to leave the MRT path and return to the shortest path. that happens at the MRT egress router ๐ the MRT ingress and egress functionality may depend on the underlying type of packet being forwarded (LDP or IP), but the MRT transit functionality is independent of the packet type. we'll look at several MRT transit forwarding mechanisms first, and then at how those mechanisms can be applied to carrying LDP and IP traffic ๐
6.1. Introduction to MRT Forwarding Options ๐ฆ
okay so there are a few different ways MRT forwarding can actually work, and we're going to look at all of them ๐
- MRT LDP Labels
- A. Topology-scoped FEC encoded using a single label
- B. Topology and FEC encoded using a two-label stack
- MRT IP Tunnels
- A. MRT IPv4 Tunnels
- B. MRT IPv6 Tunnels
6.1.1. MRT LDP Labels ๐ท๏ธ
we're looking at two options for MRT forwarding using MRT LDP labels, and they're both giving main character energy ๐ธ
6.1.1.1. Topology-Scoped FEC Encoded Using a Single Label (Option 1A)
bestie, [RFC7307] is the mechanism that lets you distribute FEC-label bindings scoped to a particular MPLS topology (the one identified by an MPLS MT-ID) ๐ง. so to use multi-topology LDP to build MRT forwarding topologies, we link two MPLS MT-IDs to the MRT-Red and MRT-Blue forwarding topologies, on top of the default shortest path topology, which uses MT-ID=0. ๐
with this option, you get one label per topology-scoped FEC. say a FEC in the default topology is default-FEC-A. then we make two more topology-scoped FECs for the Red and Blue MRT topologies, called red-FEC-A and blue-FEC-A. a router doing MRT transit forwarding this way advertises a different FEC-label binding for each of those three topology-scoped FECs โจ. so when a packet shows up with the red-FEC-A label, the MRT transit router figures out the next hop for the MRT-Red topology for that FEC, swaps the incoming label for the outgoing label it learned for red-FEC-A from the MRT-Red next-hop router, and forwards the packet ๐
the cute part is that the FEC stays attached to the packet through its labels at every hop along the MRT. we're gonna use this when we explain how to carry LDP traffic on MRT paths with multi-topology LDP labels ๐ซถ
this is super simple for hardware to support ๐ . the downside is that it eats up more of the label space, needs more memory to store the labels, and makes LDP do more work to distribute FEC-label bindings ๐ญ. it also generally takes longer to install the FRR entries in the Forwarding Information Base (FIB), which means it takes longer before the next failure can be protected ๐
this forwarding option uses the LDP signaling extensions from [RFC7307]. the MRT-specific LDP extensions needed for this option will be described somewhere else ๐
6.1.1.2. Topology and FEC Encoded Using a Two-Label Stack (Option 1B)
this option uses a two-label stack to encode both the topology and the FEC of the packet ๐. the top label (the topology-id label) tells you which MRT forwarding topology you're on, and the second label (the FEC label) tells you which FEC it is. the top label is a new FEC type with two values, one for MRT Red and one for MRT Blue ๐
when an MRT transit router gets a packet with a topology-id label, it pops the top label and uses that to guide the next-hop selection together with the next label in the stack (the FEC label) ๐. then it swaps the FEC label, using the FEC-label bindings it learned through normal LDP mechanisms. after that, it pushes the topology-id label for the next hop ๐ฆ
just like Option 1A, the FEC stays with the packet in its labels at each hop along the MRT โจ
this one is light on extra labels, memory, and LDP communication, which is a huge plus ๐. the trade-off is that packets get bigger and the label operations and lookups get more complicated ๐
this forwarding option is consistent with context-specific label spaces, as described in [RFC5331]. however, the exact LDP behavior needed to support this option for MRT hasn't been specified yet ๐
6.1.1.3. Compatibility of MRT LDP Label Options 1A and 1B
MRT transit forwarding based on MRT LDP Label options 1A and 1B can coexist in the same network ๐ค. a packet can be forwarded along a single MRT path, using the single label of Option 1A for some hops and the two-label stack of Option 1B for others. however, to keep MRT Island formation simple, we require that all routers in the MRT Island support at least one common forwarding mechanism ๐ . for example, the Default MRT Profile requires support for the MRT LDP Label Option 1A forwarding mechanism. that way, routers in an MRT Island that support the Default MRT Profile can always set up MRT forwarding paths based on Option 1A ๐ซถ
a router that supports Option 1A may also support Option 1B. if the scaling or performance characteristics of the two options differ in that implementation, it may be desirable for a pair of adjacent routers to use Option 1B labels instead of Option 1A labels ๐ธ. if those two routers successfully negotiate Option 1B labels, they're free to use them, and none of the other routers in the MRT Island need to know about it โจ
note that this document only defines the Default MRT Profile, which requires support for the MRT LDP Label Option 1A forwarding mechanism ๐
6.1.1.4. Required Support for MRT LDP Label Options
if a router supports a profile that includes the MRT LDP Label Option 1A for the MRT transit forwarding mechanism, then it MUST support Option 1A, which encodes topology-scoped FECs using a single label. the router MAY also support Option 1B ๐
if a router supports a profile that includes the MRT LDP Label Option 1B for the MRT transit forwarding mechanism, then it MUST support Option 1B, which encodes the topology and FEC using a two-label stack. the router MAY also support Option 1A ๐
6.1.2. MRT IP Tunnels (Options 2A and 2B) ๐
IP tunneling can also be used as an MRT transit forwarding mechanism ๐ฆ. each router that supports this mechanism announces two extra loopback addresses, each with its associated MRT color. those addresses are used as destination addresses for MRT-blue and MRT-red IP tunnels, respectively ๐. the special loopback addresses let transit nodes tell that traffic is being forwarded along either the MRT-blue or the MRT-red topology to reach the tunnel destination โจ
for example, an MRT ingress router can send a packet down the MRT-red path to router X by encapsulating it with the MRT-red loopback address that router X advertised. when router X receives the packet, it removes the encapsulation header and forwards the packet based on the original destination address ๐
you can use either IPv4 (Option 2A) or IPv6 (Option 2B) as the tunneling mechanism ๐
the two LDP label options don't need extra loopbacks per router the way the IP tunneling mechanism does ๐. that's because LDP labels are used hop by hop to identify the MRT-blue and MRT-red forwarding topologies ๐ง
6.2. Forwarding LDP Unicast Traffic over MRT Paths ๐ฆ
in the last section, we looked at a few options for MRT transit forwarding, which doesn't depend on the type of traffic being carried ๐ . now we look at MRT ingress functionality, which does depend on the traffic type (IP or LDP). we'll start with LDP traffic ๐ซถ
we're also keeping things simple at first by assuming the network is a single IGP area and that every router in the network participates in MRT ๐ธ. other deployment scenarios that need MRT egress functionality get covered later in this document ๐
in principle, you can carry LDP traffic in MRT IP tunnels ๐ค. but for LDP traffic, it's really desirable to avoid tunneling ๐ โโ๏ธ. tunneling LDP traffic to a remote node means you need to know the remote FEC-label bindings so the LDP traffic keeps being forwarded properly when it comes out of the tunnel. that calls for targeted LDP sessions, which can make management more complicated ๐ญ. as described below, the two MRT forwarding mechanisms that use LDP labels don't need targeted LDP sessions โจ
6.2.1. Forwarding LDP Traffic Using MRT LDP Label Option 1A
the MRT LDP Label Option 1A forwarding mechanism uses topology-scoped FECs encoded with a single label, as described in Section 6.1.1.1 ๐. when a PLR gets an LDP packet that needs to go on the MRT-Red (for example), it does a label swap, replacing the usual LDP label for the FEC with the MRT-Red label for that FEC. that MRT-Red label was learned from the next-hop router on the MRT-Red, as computed by the PLR ๐. when the next-hop router on the MRT-Red gets the packet with the MRT-Red label for the FEC, MRT transit forwarding carries on as described in Section 6.1.1.1. this way, the original FEC stays attached to the packet at every hop along the MRT ๐ฆ
6.2.2. Forwarding LDP Traffic Using MRT LDP Label Option 1B
the MRT LDP Label Option 1B forwarding mechanism encodes the topology and the FEC with a two-label stack, as described in Section 6.1.1.2 ๐. when a PLR gets an LDP packet that needs to go on the MRT-Red, it first does a normal LDP label swap. it replaces the incoming normal LDP label for a given FEC with the outgoing normal LDP label for that FEC, which it learned from the next hop on the MRT-Red ๐ธ. on top of that, the PLR pushes the topology-id label associated with the MRT-Red, then forwards the packet to the right next hop on the MRT-Red ๐. when the next-hop router on the MRT-Red gets the packet with the MRT-Red label for the FEC, MRT transit forwarding carries on as described in Section 6.1.1.2. just like with Option 1A, the original FEC stays attached to the packet at every hop along the MRT โจ
6.2.3. Other Considerations for Forwarding LDP Traffic Using MRT LDP Labels
okay this one's a little extra ๐ค. forwarding LDP traffic with MRT LDP Labels can be done without targeted LDP sessions when you use an MRT path to the destination FEC. the alternates selected in [RFC7811] use the MRT path to the destination FEC, so targeted LDP sessions aren't needed ๐. but if you wanted the PLR to use an MRT to reach the primary next-next-hop for the FEC, and then keep forwarding the LDP packet along the shortest path from that primary next-next-hop, you'd need tunneling to that primary next-next-hop ๐ฌ. you'd also need a targeted LDP session so the PLR can learn the FEC-label binding for the primary next-next-hop and forward the packet correctly ๐
6.2.4. Required Support for LDP Traffic
for the best hardware compatibility, routers implementing MRT fast reroute of LDP traffic MUST support Option 1A of encoding the MT-ID in the labels (See Section 9) ๐
6.3. Forwarding IP Unicast Traffic over MRT Paths โจ
okay so for IPv4 traffic there's literally no practical option right now except tunneling ๐ bc you need extra bits to say "hey, use MRT-Blue or MRT-Red" and IPv4 just doesn't have room. for IPv6 you could, in theory, define bits in the IPv6 options header for that. BUT this doc said nope, we're not making a solution that only works for IPv6 and leaves IPv4 out ๐ซถ
the tunnel egress is super flexible, bestie. any router that's closer to the destination than the next hop works ๐ฆ the architecture assumes you pick the original destination in the area (check Section 11 for how multihomed prefixes get handled ๐). the other option is the next-next-hop toward the destination. like we talked about earlier, for LDP traffic, using the MRT to the original destination makes MRT-FRR way simpler bc you don't need targeted LDP sessions to the next-next-hop. for IP that whole thing doesn't even apply ๐
some situations need you to tunnel IP along an MRT to a tunnel endpoint that is NOT the actual destination. we'll get into those later, but quick heads up: an IP packet headed somewhere in a different IGP area/level from the PLR should get tunneled on the MRT to the Area Border Router (ABR) or Level Border Router (LBR) on the shortest path to the destination. and if the destination is outside the PLR's MRT Island, the packet should get tunneled on the MRT to a non-proxy-node right before the named proxy-node on that particular color MRT ๐
6.3.1. Tunneling IP Traffic Using MRT LDP Labels
an IP packet can be tunneled along an MRT path by pushing the right MRT LDP label(s) ๐ง tunneling with LDP labels instead of IP headers is lowkey amazing bc more of the installed routers can do line-rate encapsulation and decapsulation with LDP than with IP. and no extra IP addresses have to be allocated or signaled. zero extra paperwork, iconic ๐
6.3.1.1. Tunneling IP Traffic Using MRT LDP Label Option 1A
the MRT LDP Label Option 1A forwarding mechanism uses topology-scoped FECs encoded with a single label, as described in Section 6.1.1.1 ๐ when a PLR gets an IP packet that needs to go over the MRT-Red to a particular tunnel endpoint, it does a label push operation. the label it pushes is the MRT-Red label for a FEC that the tunnel endpoint originated, learned from the next hop on the MRT-Red. simple, clean, no drama โจ
6.3.1.2. Tunneling IP Traffic Using MRT LDP Label Option 1B
the MRT LDP Label Option 1B forwarding mechanism encodes the topology AND the FEC with a two-label stack, as described in Section 6.1.1.2 ๐ when a PLR gets an IP packet that needs the MRT-Red to a particular tunnel endpoint, the PLR pushes two labels onto the IP packet. the first (inner) label is the normal LDP label learned from the next hop on the MRT-Red, tied to a FEC the tunnel endpoint originated. the second (outer) label is the topology-id label for the MRT-Red ๐
for completeness (bc I'm thorough like that ๐), there's a possible variation that uses a single label instead of two. to tunnel an IP packet over an MRT to the actual destination of the packet (not some random tunnel endpoint), you could just push a topology-id label straight onto the packet. then an MRT transit router would pop the topology-id label, do an IP route lookup in the context of that topology-id label, and push the topology-id label back on ๐
6.3.2. Tunneling IP Traffic Using MRT IP Tunnels
to tunnel over the MRT to a particular tunnel endpoint, the PLR encapsulates the original IP packet with an additional IP header. that extra header uses the MRT-Blue or MRT-Red loopback address of the tunnel endpoint ๐ฆ very wrapped-up-in-a-gift-box energy ๐
6.3.3. Required Support for IP Traffic
okay this one's important, bestie ๐จ for the greatest hardware compatibility, AND to make it easier to remove the MRT-topology marking at area/level boundaries, routers that support MPLS and implement IP MRT fast reroute MUST support tunneling of IP traffic using MRT LDP Label Option 1A (topology-scoped FEC encoded using a single label). no skipping this one, fr fr ๐
7. MRT Island Formation ๐ฆ
so the whole point of saying you support MRT is to indicate that the MRT-Blue and MRT-Red forwarding topologies get created for transit traffic ๐ธ MRT allows for different options, and some of them are potentially incompatible with each other ๐ฌ to make consistent MRT forwarding topologies, all the routers in a particular MRT Island need to use the same set of options. those options get grouped into MRT profiles. also, all the routers in an MRT Island need to use the same set of nodes and links inside the Island when they compute the MRT forwarding topologies. this section explains how a router figures out which nodes and links to include in a particular MRT Island. some of that info already exists in the IGPs and can be used for Island formation, as long as you read it the way this doc defines โจ
other info still needs to be shared between routers, and there aren't protocol extensions for it yet. this new info has to be shared among all the routers in an IGP area, so it makes sense to define extensions to the existing IGPs to carry it ๐ง those new protocol extensions will be defined somewhere else.
deployment scenarios using multi-topology OSPF or IS-IS, or running both IS-IS and OSPF on the same routers, are out of scope for this specification ๐ โโ๏ธ and just like with LFA, MRT-FRR does not support OSPF Virtual Links.
at a high level, an MRT Island is defined as the set of routers supporting the same MRT profile, in the same IGP area/level, with bidirectional links connecting those routers. we'll go through the more detailed versions of these criteria below ๐
7.1. IGP Area or Level
all the links in an MRT Island are bidirectional and belong to the same IGP area or level ๐ for IS-IS, a link that belongs to both Level-1 and Level-2 would qualify to be in multiple MRT Islands. a given ABR or LBR can belong to multiple MRT Islands, one for each area or level it participates in. inter-area forwarding behavior is covered in Section 10 ๐
7.2. Support for a Specific MRT Profile
all the routers in an MRT Island support the same MRT profile ๐ a router advertises support for a given MRT profile using an 8-bit MRT Profile ID value. the "MRT Profile Identifier Registry" is defined in this document. the protocol extensions for advertising the MRT Profile ID value will be defined in a future specification. a given router can support multiple MRT profiles and take part in multiple MRT Islands. the options that make up an MRT Profile, plus the Default MRT Profile, are defined in Section 8 โจ
the MRT Island formation process runs independently for each MRT profile a given router advertises ๐ง for example, picture a network with 40 connected routers in the same area, all advertising support for MRT Profile A and MRT Profile B. two distinct MRT Islands get formed, one for Profile A and one for Profile B, and each island contains all 40 routers. a complete set of maximally redundant trees gets computed for each island, following the rules defined for each profile. now say we add a third MRT Profile to this example, Profile C, advertised by a connected subset of 30 routers. then there's a third MRT Island, made up of those 30 routers, and a third set of maximally redundant trees gets computed. so in this example, the 40 routers compute and install two sets of MRT transit forwarding entries (Profiles A and B), while the 30 routers compute and install three sets (Profiles A, B, and C) ๐ญ it's giving multi-tasking
7.3. Excluding Additional Routers and Interfaces from the MRT Island
MRT takes existing IGP mechanisms for discouraging traffic from using particular links and routers into account, and it adds an MRT-specific exclusion mechanism for links ๐ฅ
7.3.1. Existing IGP Exclusion Mechanisms
mechanisms for discouraging traffic from using particular links already exist in IS-IS and OSPF ๐ in IS-IS, an interface configured with a metric of 2^24-2 (0xFFFFFE) will only be used as a last resort. (an interface configured with a metric of 2^24-1 (0xFFFFFF) will not be advertised into the topology.) in OSPF, an interface configured with a metric of 2^16-1 (0xFFFF) will only be used as a last resort. these metrics can be configured manually to enforce administrative policy, or they can be set automatically, like with LDP IGP synchronization [RFC5443] ๐ธ
mechanisms also already exist in IS-IS and OSPF to discourage or prevent transit traffic from using a particular router ๐ in IS-IS, the overload bit prevents transit traffic from using a router.
for OSPFv2 and OSPFv3, [RFC6987] specifies setting all outgoing interface metrics to 0xFFFF to discourage transit traffic from using a router. ([RFC6987] defines the metric value 0xFFFF as MaxLinkMetric, a fixed architectural value for OSPF.) for OSPFv3, [RFC5340] specifies that a router be excluded from the intra-area SPT computation if the V6-bit or R-bit of the Link State Advertisement (LSA) options is not set in the Router LSA ๐ง
the following rules for MRT Island formation make sure that MRT FRR protection traffic does not use a link or router that existing IGP mechanisms discourage or prevent from carrying traffic ๐ก๏ธ
- A bidirectional link MUST be excluded from an MRT Island if either the forward or reverse cost on the link is
0xFFFFFE(for IS-IS) or0xFFFFfor OSPF. - A router MUST be excluded from an MRT Island if it is advertised with the overload bit set (for IS-IS), or if it is advertised with metric values of
0xFFFFon all of its outgoing interfaces (for OSPFv2 and OSPFv3). - A router MUST be excluded from an MRT Island if it is advertised with either the V6-bit or R-bit of the LSA options not set in the Router LSA.
7.3.2. MRT-Specific Exclusion Mechanism
this architecture also defines a way to exclude an otherwise usable link from MRT Islands ๐ฆ the protocol extensions for advertising that a link is MRT-Ineligible will be defined elsewhere. a link with either interface advertised as MRT-Ineligible MUST be excluded from an MRT Island. heads up: an interface advertised as MRT-Ineligible by a router is ineligible for ALL profiles that router advertises ๐
7.4. Connectivity
all of the routers in an MRT Island MUST be connected by bidirectional links to other routers in the MRT Island ๐ disconnected MRT Islands operate independently of one another ๐
7.5. Algorithm for MRT Island Identification
an algorithm that lets a computing router identify the routers and links in its local MRT Island, following all the rules above, is given in Section 5.2 of [RFC7811] ๐ง โจ
8. MRT Profile ๐
an MRT Profile is a set of values and options related to MRT behavior ๐ the complete set of options is designated by its corresponding 8-bit Profile ID value.
this document specifies the values and options that correspond to the Default MRT Profile (Profile ID = 0). future documents may define other MRT Profiles by specifying the MRT Profile Options below ๐ธ
8.1. MRT Profile Options โจ
okay so an MRT Profile is basically a bundle of choices that tells your router how to build its maximally redundant trees ๐ Let's go through the knobs one by one, bestie ๐
MRT Algorithm: this is the exact algorithm your router uses to compute the maximally redundant trees for this profile ๐ง
MRT-Red MT-ID: this is the MPLS MT-ID tied to the MRT-Red forwarding topology ๐ธ It gets pulled from the MPLS Multi-Topology Identifiers Registry, so it's not just vibes, it's officially registered ๐
MRT-Blue MT-ID: same deal but for the MRT-Blue forwarding topology ๐ฆ Also allocated from the MPLS Multi-Topology Identifiers Registry โจ
GADAG Root Selection Policy: okay this one is so important ๐ It decides how the GADAG root gets picked. Every router in the MRT Island has to end up using the same GADAG root when it does its math, or the trees won't line up, and that would be a whole mess ๐ญ So a valid policy MUST let every router independently land on the same GADAG root using only info that every router in the island has. GADAG Root Selection Priority values (the router-specific ones) MAY be part of the policy too ๐ซถ
MRT Forwarding Mechanism: this is how a router actually carries transit traffic along the MRT paths ๐ A router that supports a given mechanism MUST program the right next hops into its forwarding plane. The current options are MRT LDP Label Option 1A, MRT LDP Label Option 1B, IPv4 Tunneling, IPv6 Tunneling, and None ๐ If IPv4 is supported, the MRT-Red and MRT-Blue IPv4 loopback addresses SHOULD be specified ๐ Same energy for IPv6: if it's supported, both MRT-Red and MRT-Blue IPv6 loopback addresses SHOULD be specified โจ
Recalculation: this is the process and timing for computing fresh MRTs once the topology changes ๐
Area/Level Border Behavior: this spells out how traffic on MRT-Blue or MRT-Red should be handled when it crosses into another area ๐ฆ
Other Profile-Specific Behavior: depending on the use case, a profile can have extra behavior of its own ๐
When a brand new MRT Profile gets defined, it should get new, unique values allocated from the "MPLS Multi-Topology Identifiers Registry", matching the MRT-Red and MRT-Blue MT-ID values for that profile ๐ง
If a router advertises support for multiple MRT profiles, it MUST create the transit forwarding topologies for each one of them, unless the profile picks the None option for the MRT Forwarding Mechanism ๐ That's a must, no exceptions!
Here's the iconic part ๐ญ MRT-FRR can keep transit forwarding entries for multiple profiles at once, which makes switching from an existing profile to a new one super smooth ๐ซถ The new profile gets activated in parallel, its transit forwarding entries get installed without messing with the old profile's entries, and once the new state checks out, the router can be told to use the new profile's alternates when something fails ๐ Literally seamless.
8.2. Router-Specific MRT Parameters โจ
okay so some profiles need extra router-specific MRT parameters advertised ๐ธ Here's the tea: the set of options named by the MRT Profile ID MUST be identical for every router in an MRT Island, but these router-specific parameters are allowed to differ from router to router in the same island ๐ Here are a few of them:
GADAG Root Selection Priority: a GADAG Root Selection Policy MAY lean on the GADAG Root Selection Priority values each router advertises ๐ It lets operators make sure the GADAG root comes from a particular group of routers ๐ง There's an example of this in the Default MRT Profile below ๐ฆ
MRT-Red Loopback Address: this is the router's loopback address for reaching it over the MRT-Red forwarding topology ๐ It can be IPv4 or IPv6 ๐ Heads up, this one isn't needed for the Default MRT Profile ๐
MRT-Blue Loopback Address: this is the router's loopback address for reaching it over the MRT-Blue forwarding topology ๐ฆ It can be specified for either IPv4 and IPv6 โจ Also not needed for the Default MRT Profile ๐ซถ
Protocol extensions for advertising a router's GADAG Root Selection Priority value will be defined in other documents ๐ And protocol extensions for advertising MRT-Red and MRT-Blue loopback addresses will be defined elsewhere too ๐ง
8.3. Default MRT Profile โจ
The Default MRT Profile is the one indicated by MRT Profile ID value 0 ๐ Here's how it's set up:
MRT Algorithm: the MRT Lowpoint algorithm defined in [RFC7811] ๐
MRT-Red MPLS MT-ID: this is a temporary registration allocated from the "MPLS Multi-Topology Identifiers" registry ๐ธ The registration request is in [LDP-MRT] ๐
MRT-Blue MPLS MT-ID: also a temporary registration from the "MPLS Multi-Topology Identifiers" registry ๐ฆ The registration request is in [LDP-MRT] โจ
GADAG Root Selection Policy: among the routers in the MRT Island with the lowest numerical GADAG Root Selection Priority value, an implementation MUST pick the router with the highest Router ID to be the GADAG root ๐ Quick reminder: a lower number means a higher preference for selection ๐ซถ
Forwarding Mechanisms: MRT LDP Label Option 1A ๐
Recalculation: MRT recalculation SHOULD happen as described in Section 12.2 ๐ This lets the MRT forwarding topologies support IP/LDP fast-reroute traffic โก
Area/Level Border Behavior: as described in Section 10, ABRs/LBRs SHOULD make sure traffic leaving the area also exits the MRT-Red or MRT-Blue forwarding topology ๐
9. LDP Signaling Extensions and Considerations โจ
The protocol extensions for LDP will be defined in another document ๐ A router MUST indicate that it can support MRT ๐ Having that explicit signal lets the network do MRT-specific processing, like special handling of FECs sent with the Rainbow MRT MT-ID ๐
A FEC sent with the Rainbow MRT MT-ID means that FEC applies to all the MRT-Blue and MRT-Red MT-IDs in supported MRT profiles ๐ฆ The FEC-label bindings for the default shortest-path-based MT-ID 0 MUST still be sent ๐ (Even though you could infer them from the Rainbow FEC-label bindings ๐) This keeps normal LDP forwarding running smoothly โจ The Rainbow MRT MT-ID is there to give ABRs or LBRs an easy way to handle the special signaling they need ๐ง It also avoids the mess of sending different MPLS labels to different LDP neighbors for the same FEC ๐ And since only ABRs/LBRs or an LDP egress router use the Rainbow MRT MT-ID, it isn't tied to any particular MRT profile ๐
The value of the Rainbow MRT MPLS MT-ID has been temporarily allocated from the "MPLS Multi-Topology Identifiers" registry ๐ธ The registration request is in [LDP-MRT] ๐
10. Inter-area Forwarding Behavior ๐ฆ
okay this is where things get spicy ๐ถ๏ธ An ABR/LBR has two forwarding roles: it forwards traffic within areas, and it forwards traffic from one area into another ๐ These same two roles apply to MRT transit traffic too ๐ Traffic on MRT-Red or MRT-Blue that's headed somewhere inside the area needs to stay on MRT-Red or MRT-Blue in that area ๐ But traffic leaving the area should also exit MRT-Red or MRT-Blue and go back to shortest path forwarding โจ
For unicast MRT-FRR, the need to stay on an MRT forwarding topology ends at the ABR/LBR whose best route is via a different area/level ๐ซถ It's highly desirable to return to the default forwarding topology when leaving an area/level, and there are three basic reasons why ๐ง First, the default topology uses shortest paths, so the packet takes the shortest possible route to its destination ๐ Second, a single router failure that shows up in multiple areas (like an ABR/LBR failure) can be identified and repaired around separately ๐ฅ Third, the packet can be fast-rerouted again if needed, because of a second distinct failure in a different area ๐ช
In OSPF, an ABR that receives a packet on MRT-Red or MRT-Blue destined for Z SHOULD keep forwarding it along MRT-Red or MRT-Blue only if the best route to Z is in the same OSPF area as the interface the packet came in on ๐ Otherwise, the packet SHOULD be removed from MRT-Red or MRT-Blue and forwarded on the shortest-path default forwarding topology ๐ฆ
The above applies to OSPF, and the same essential behavior applies to IS-IS if you swap in IS-IS level for OSPF area ๐ธ But the analogy isn't exact ๐ An interface in OSPF can only be in one area, whereas an interface in IS-IS can be in both Level-1 and Level-2 ๐ So to avoid confusion, the IS-IS behavior is described explicitly in Appendix A ๐ The following sections only use OSPF terminology ๐
10.1. ABR Forwarding Behavior with MRT LDP Label Option 1A ๐
For LDP forwarding where a single label specifies a (MT-ID, FEC) pair, the ABR is responsible for advertising the proper label to each neighbor ๐ง Say an ABR has allocated three labels for a particular destination: L_primary, L_blue, and L_red ๐ฆ To routers in the same area as the best route to the destination, the ABR advertises L_primary for the default topology, L_blue for the MRT-Blue MT-ID, and L_red for the MRT-Red MT-ID, as expected โจ But to routers in other areas, it advertises L_primary for the default topology and L_primary for the Rainbow MRT MT-ID ๐ซถ Associating L_primary with the Rainbow MRT MT-ID makes the receiving routers use L_primary for both the MRT-Blue MT-ID and the MRT-Red MT-ID ๐
The ABR installs all next hops for the best area: primary next hops for L_primary, MRT-Blue next hops for L_blue, and MRT-Red next hops for L_red ๐ Because the ABR advertised (Rainbow MRT MT-ID, FEC) with L_primary to neighbors outside the best area, packets from those neighbors arrive at the ABR with label L_primary and get forwarded into the best area along the default topology ๐ So by controlling which labels get advertised, the ABR can enforce that packets exiting the area do so on the shortest-path default topology ๐ ๐
10.1.1. Motivation for Creating the Rainbow-FEC โจ
okay so the desired forwarding behavior could totally be achieved in the example above WITHOUT the Rainbow-FEC ๐ the ABR would advertise these FEC-label bindings to neighbors that aren't in the best area: L1_primary for the default topology, L1_primary for the MRT-Blue MT-ID, and L1_primary for the MRT-Red MT-ID. but ngl, doing that would need machinery to spoof the labels used in FEC-label binding advertisements on a per-neighbor basis. that label-spoofing machinery doesn't exist in most LDP implementations right now, and it doesn't have other obvious uses ๐
BUT here's the lowkey genius part ๐ lots of existing LDP implementations can filter FEC-label binding advertisements on a per-neighbor basis! ๐ฆ the Rainbow-FEC lets us reuse that existing per-neighbor FEC filtering machinery to get the result we want. so by introducing the Rainbow FEC, we can use per-neighbor FEC-filtering to advertise the FEC-label binding for the Rainbow-FEC (and filter out the ones for MRT-Blue and MRT-Red) to non-best-area neighbors of the ABR. iconic, no notes ๐
An ABR may choose to either distribute the Rainbow-FEC or distribute separate MRT-Blue and MRT-Red advertisements. this is a local choice, so it's totally up to the ABR ๐ซถ and a router that supports the MRT LDP Label Option 1A forwarding mechanism MUST be able to receive and correctly interpret the Rainbow-FEC. that's the non-negotiable part, bestie ๐ญ
10.2. ABR Forwarding Behavior with IP Tunneling (Option 2) ๐
okay so if IP tunneling is being used, the ABR's behavior depends on the outermost IP address ๐ง if the outermost IP address is an MRT loopback address of the ABR, then the packet gets decapsulated and forwarded based on the inner IP address, which should go on the default SPT topology. if the outermost IP address is not an MRT loopback address of the ABR, then the packet is simply forwarded along the associated forwarding topology. and a PLR sending traffic to a destination outside its local area/level will pick the MRT and use the associated MRT loopback address of the selected ABR that's advertising the lowest cost to the external destination. the way that routing decision is made is literally giving main character energy ๐
Thus, for these two MRT forwarding mechanisms (MRT LDP Label Option 1A and IP tunneling Option 2), there is no need for additional computation or per-area forwarding state. no extra work, no extra state, just vibes โจ๐ธ
10.3. ABR Forwarding Behavior with MRT LDP Label Option 1B ๐
the other MRT forwarding mechanism, the one described in Section 6, uses two labels: a topology-id label and a FEC-label. with this one, any router whose MRT-Red or MRT-Blue next hop is an ABR would need to figure out whether that ABR is going to forward the packet out of the area/level. if it is, then that router should pop off the topology-id label before forwarding the packet to the ABR ๐
For example, in Figure 3, if node H fails, node E has to put traffic towards prefix p onto MRT-Red. but since node D knows that ABR1 will use a best route from another area, it's safe for D to pop the topology-id label and just forward the packet to ABR1 along the MRT-Red next hop. ABR1 will use the shortest path in Area 10 ๐ฆ
In all cases for IS-IS and most cases for OSPF, the penultimate router can determine what decision the adjacent ABR will make. the one case where it can't be determined is when two ASBRs are in different non-backbone areas attached to the same ABR. then the ASBR's Area ID may be needed for tie-breaking (prefer the route with the largest OSPF area ID), and the Area ID isn't announced as part of the ASBR LSA. in this one case, suboptimal forwarding along the MRT in the other area would happen. if that becomes a realistic deployment scenario, protocol extensions could be developed to address this issue. so that's the one lil edge case ๐
+----[C]---- --[D]--[E] --[D]--[E]
| \ / \ / \
p--[A] Area 10 [ABR1] Area 0 [H]--p +-[ABR1] Area 0 [H]-+
| / \ / | \ / |
+----[B]---- --[F]--[G] | --[F]--[G] |
| |
| other |
+----------[p]-------+
area
(a) Example topology (b) Proxy node view in Area 0 nodes
+----[C]<--- [D]->[E]
V \ \
+-[A] Area 10 [ABR1] Area 0 [H]-+
| ^ / / |
| +----[B]<--- [F]->[G] V
| |
+------------->[p]<--------------+
(c) rSPT towards destination p
->[D]->[E] -<[D]<-[E]
/ \ / \
[ABR1] Area 0 [H]-+ +-[ABR1] [H]
/ | | \
[F]->[G] V V -<[F]<-[G]
| |
| |
[p]<------+ +--------->[p]
(d) MRT-Blue in Area 0 (e) MRT-Red in Area 0
Figure 3: ABR Forwarding Behavior and MRTs
11. Prefixes Multiply Attached to the MRT Island ๐
how a computing router S works out its local MRT Island for each supported MRT profile has already been covered in Section 7, so we're good there ๐
okay so there are two types of prefixes or FECs that can be multiply attached to an MRT Island ๐ the first type is multihomed prefixes that usually connect at a domain or protocol boundary. the second type represents routers that don't support the profile for the MRT Island.
The key difference is whether the traffic, once it's out of the MRT Island, might re-enter the MRT Island if a loop-free exit point isn't selected. that's the whole drama ๐ญ
FRR using LFA has the useful property that it's able to protect multihomed prefixes against ABR failure. for instance, if a prefix from the backbone is available via both ABR A and ABR B, and A fails, then the traffic should be redirected to B. this can be accomplished with MRT FRR as well ๐ธ
If ASBR protection is desired, this gets more complicated if the ASBRs are in different areas. similarly, protecting labeled BGP traffic in the event of an ASBR failure has additional complexities due to the per-ASBR label spaces involved ๐
As discussed in [RFC5286], a multihomed prefix could be:
- An out-of-area prefix announced by more than one ABR,
- An AS-External route announced by two or more ASBRs,
- A prefix with iBGP multipath to different ASBRs,
- etc.
See Appendix B for a discussion of a general issue with multihomed prefixes connected in two different areas. ๐ง
There are also two different approaches to protection ๐ฆ The first is tunnel endpoint selection, where the PLR picks a router to tunnel to where that router is loop-free with respect to the failure-point. conceptually, the set of candidate routers to provide LFAs expands to all routers that can be reached via an MRT alternate and are attached to the prefix. big brain stuff โจ
The second is to use a proxy-node, which can be named via MPLS label or IP address. the PLR picks the appropriate label or IP address to reach it on either MRT-Blue or MRT-Red as appropriate, to avoid the failure point. a proxy-node can represent a destination prefix that can be attached to the MRT Island via at least two routers. it's termed a named proxy-node if there's a way that traffic can be encapsulated to reach specifically that proxy-node. this could be because there is an LDP FEC for the associated prefix, or because MRT-Red and MRT-Blue IP addresses are advertised (in an as-yet undefined fashion) for that proxy-node. traffic to a named proxy-node may take a different path than traffic to the attaching router, and traffic is also explicitly forwarded from the attaching router along a predetermined interface towards the relevant prefixes ๐
For IP traffic, multihomed prefixes can use tunnel endpoint selection. for IP traffic destined to a router outside the MRT Island, if that router is the egress for a FEC advertised into the MRT Island, then the named proxy-node approach can be used ๐ซถ
For LDP traffic, there is always a FEC advertised into the MRT Island. the named proxy-node approach should be used, unless the computing router S knows the label for the FEC at the selected tunnel endpoint. ๐
If a FEC is advertised from outside the MRT Island into the MRT Island, and the forwarding mechanism specified in the profile includes LDP Label Option 1A, then the routers learning that FEC MUST also advertise labels for (MRT-Red, FEC) and (MRT-Blue, FEC) to neighbors inside the MRT Island. any router receiving a FEC corresponding to a router outside the MRT Island or to a multihomed prefix MUST compute and install the transit MRT-Blue and MRT-Red next hops for that FEC. and the FEC-label bindings for the topology-scoped FECs ((MT-ID 0, FEC), (MRT-Red, FEC), and (MRT-Blue, FEC)) MUST also be provided via LDP to neighbors inside the MRT Island. this part is a MUST-do, no cap ๐ฅ
11.1. Protecting Multihomed Prefixes Using Tunnel Endpoint Selection โจ
okay so tunnel endpoint selection is a totally local decision for a router in the MRT Island ๐ it's all about picking and using an alternate, and it doesn't touch the transit MRT-Red and MRT-Blue forwarding topologies at all ๐ฆ
let the computing router be S, and let the next hop F be the node whose failure we want to avoid ๐ซถ the destination is prefix p, and A is the router that p is attached to for S's shortest path to p ๐ธ
the candidates for tunnel endpoint selection are the routers where the destination prefix is attached in the area/level ๐ for a candidate B, we need to figure out if B is loop-free to reach p with respect to S and F (for node-protection), or at least with respect to S and the link (S, F) (for link-protection) ๐ญ if B will always prefer sending traffic to p via a different area/level, then that's just definitional ๐ otherwise we need distance-based computations, and an SPF from B's perspective may be necessary ๐ฅ the rationale is similar to [RFC5286], and in the inequalities below, D_opt(X,Y) means the shortest distance from node X to node Y, while D_opt(X,p) means the shortest distance from node X to prefix p ๐ง
Loop-Free for S: D_opt(B, p) < D_opt(B, S) + D_opt(S, p)
Loop-Free for F: D_opt(B, p) < D_opt(B, F) + D_opt(F, p)
the latter is equivalent to the following, which avoids the need to compute the shortest path from F to p ๐
Loop-Free for F: D_opt(B, p) < D_opt(B, F) + D_opt(S, p) - D_opt(S, F)
finally, here are the rules for endpoint selection ๐ the basic idea is to repair toward the prefix-advertising router picked for the shortest path, and to only select and tunnel to a different endpoint if it's actually necessary (e.g., A=F, or F is a cut-vertex, or the link (S,F) is a cut-link) ๐
- does S have a node-protecting alternate to A? if so, select that ๐
tunnel the packet to A along that alternate. for example, if LDP is the forwarding mechanism, push the label
(MRT-Red, A)or(MRT-Blue, A)onto the packet โจ - if not, is there a router B that is loop-free to reach p while avoiding both F and S? if so, select B as the endpoint ๐ then determine the MRT alternate to reach B while avoiding F, and tunnel the packet to B along that alternate. for example, with LDP, push the label
(MRT-Red, B)or(MRT-Blue, B)onto the packet ๐ - if not, does S have a link-protecting alternate to A? if so, select that ๐ฆ
- if not, is there a router B that is loop-free to reach p while avoiding S and the link from S to F? if so, select B as the endpoint, plus the MRT alternate for reaching B from S that avoids the link (S,F) ๐ฅ
the tunnel endpoint selected will receive a packet destined to itself, and since it's the egress, it will pop that MPLS label (or have signaled Implicit Null) and forward based on whatever is underneath ๐งโโ๏ธ this is enough for IP traffic, because the tunnel endpoint can use the IP header of the original packet to keep forwarding it ๐ซถ however, tunneling of LDP traffic requires targeted LDP sessions so the tunnel endpoint can learn the FEC-label binding ๐ญ
11.2. Protecting Multihomed Prefixes Using Named Proxy-Nodes ๐ธ
instead, the named proxy-node method works with LDP traffic without needing targeted LDP sessions ๐ it also has a clear advantage over tunnel endpoint selection, because it's possible to explicitly forward from the MRT Island along an interface to a loop-free island neighbor, even when that interface may not be a primary next hop ๐
a named proxy-node represents one or more destinations, and for LDP forwarding it has a FEC associated with it that gets signaled into the MRT Island โจ so it's possible to explicitly label packets to go to (MRT-Red, FEC) or (MRT-Blue, FEC), and at the border of the MRT Island, the label will swap to mean (MT-ID 0, FEC) ๐ฆ it would also be possible to have named proxy-nodes for IP forwarding, but that would need extensions to signal two IP addresses to be associated with MRT-Red and MRT-Blue for the proxy-node ๐ a named proxy-node can be uniquely represented by the two routers in the MRT Island that it's connected to ๐ the extensions to signal those IP addresses will be defined elsewhere, and the details of which label-bindings must be originated will be described in another document ๐ง
computing the MRT next hops to a named proxy-node, and the MRT alternate for the computing router S to avoid a particular failure node F, is straightforward ๐
the details of the simple constant-time functions, Select_Proxy_Node_NHs() and Select_Alternates_Proxy_Node(), are given in [RFC7811] ๐ฅ a key point is that these MRT next hops and alternates can be computed as new named proxy-nodes are added or removed, without needing a new MRT computation or impacting other existing MRT paths ๐ this maps super well to how OSPFv2 (see [RFC2328], Section 16.5) does incremental updates for new summary-LSAs ๐ซถ
the remaining question is how to attach the named proxy-node to the MRT Island, and all the routers in the MRT Island MUST do this consistently ๐ญ no more than two routers in the MRT Island can be selected, and one should only be selected if there are no others that meet the necessary criteria ๐ the named proxy-node is logically part of the area/level ๐
there are two sources for candidate routers in the MRT Island to connect to the named proxy-node ๐ the first set is made up of the routers in the MRT Island that are advertising the prefix, and the named-proxy-cost assigned to each prefix-advertising router is the announced cost to the prefix ๐ฆ the second set is made up of the routers in the MRT Island that are connected to routers outside the MRT Island but in the same area/level, and those routers get defined as Island Border Routers (IBRs) ๐ the routers connected to the IBRs that are not in the MRT Island but are in the same area/level as the MRT Island are Island Neighbors (INs) โจ
since packets sent to the named proxy-node along MRT-Red or MRT-Blue may come from any router inside the MRT Island, whatever router an IBR forwards the packet to has to be loop-free with respect to the whole MRT Island for the destination ๐
so an IBR is a candidate router only if it has at least one IN whose shortest path to the prefix does not enter the MRT Island ๐ฅ a method for identifying Loop-Free Island Neighbors (LFINs) is given in [RFC7811] ๐ the named-proxy-cost assigned to each (IBR, IN) pair is cost(IBR, IN) + D_opt(IN, prefix) ๐ง
from the set of prefix-advertising routers and the set of IBRs with at least one LFIN, the two routers with the lowest named-proxy-cost are selected ๐ ties are broken based on the lowest Router ID ๐ธ for ease of discussion, the two selected routers will be referred to as proxy-node attachment routers โจ
a proxy-node attachment router has a special forwarding role ๐ซถ when a packet is received destined to (MRT-Red, prefix) or (MRT-Blue, prefix), and the proxy-node attachment router is an IBR, it MUST swap to the shortest path forwarding topology (e.g., swap to the label for (MT-ID 0, prefix) or remove the outer IP encapsulation) and forward the packet to the IN whose cost was used in the selection ๐ญ if the proxy-node attachment router is not an IBR, then the packet MUST be removed from the MRT forwarding topology and sent along the interface(s) that caused the router to advertise the prefix, and this interface might be out of the area/level/AS ๐
11.3. MRT Alternates for Destinations outside the MRT Island ๐
a natural concern with new functionality is how it can be useful when it isn't deployed across an entire IGP area ๐ in the case of MRT FRR, where it provides alternates when appropriate LFAs aren't available, there are also deployment scenarios where it may make sense to only enable some routers in an area with MRT FRR โจ a simple example would be a ring of six or more routers that's connected via two routers to the rest of the area ๐ฆ
destinations inside the local island can obviously use MRT alternates ๐ destinations outside the local island can be treated like a multihomed prefix, so either endpoint selection or Named Proxy-Nodes can be used ๐ง named proxy-nodes MUST be supported when LDP forwarding is supported and a label-binding for the destination is sent to an IBR ๐ญ
naturally, there are more complicated options to improve coverage, such as connecting multiple MRT Islands across tunnels, but the need for that extra complexity has not been justified ๐
12. Network Convergence and Preparing for the Next Failure ๐ฅ
after a failure, MRT detours make sure packets reach their intended destination while the IGP has not reconverged onto the new topology ๐ as link-state updates reach the routers, the IGP process calculates the new shortest paths ๐ซถ two things need attention here: micro-loop prevention and MRT recalculation ๐
12.1. Micro-loop Prevention and MRTs โจ
okay so a micro-loop is a transient packet-forwarding loop between two or more routers that can pop up while IGP forwarding state is converging ๐ [RFC5715] goes through several techniques for preventing micro-loops, and this section is about how MRT-FRR vibes with two of them from that doc: Nearside and Farside Tunneling ๐
Nearside Tunneling goes like this: a router (PLR) right next to a failure does the local repair and tells the remote routers about the failure ๐ฃ The remote routers start by tunneling affected traffic to the nearest PLR, using tunnels that the failure didn't touch. Once normal shortest path forwarding has converged, the remote routers send the traffic back to shortest path forwarding. So why is MRT-FRR relevant here? ๐ Well, tunneling traffic to the PLRs and then waiting long enough for IGP convergence means traffic will usually stick with the local repair at the PLR for longer than it would without Nearside Tunneling. MRT-FRR gives 100% coverage for single link and node failures, so it's giving "perfect backup option" when Nearside Tunneling is in play ๐ซถ
MRT-FRR is also relevant to the Farside Tunneling micro-loop prevention technique ๐ฆ With Farside Tunneling, remote routers tunnel traffic affected by a failure to a node that's downstream of the failure with respect to the traffic's destination. That node is on the farside of the failure from the point of view of the node that started the tunnel. Quick note: the Farside Tunneling discussion in [RFC5715] focuses on the case where the farside node is immediately adjacent to a failed link or node. But the farside node can be any node downstream of the failure with respect to the destination, including the destination itself ๐คฏ The tunneling mechanism used to reach the farside node must be unaffected by the failure.
The alternate forwarding paths created by MRT-FRR can be used to forward traffic from the remote routers upstream of the failure all the way to the destination ๐ฃ๏ธ When a failure happens, either the MRT-Red or the MRT-Blue path from the remote upstream router to the destination is guaranteed to avoid a link failure or inferred node failure. The MRT forwarding paths are also guaranteed not to be subject to micro-loops, because they're locked to the topology from before the failure ๐ no cap, that's a whole main character move ๐
We note that the computations in [RFC7811] cover the case of a PLR adjacent to a failure working out which choice, MRT-Red or MRT-Blue, will avoid the failed link or node ๐ For an arbitrary remote upstream router to decide whether to choose MRT-Red or MRT-Blue for a given destination and failure, more computation may be required ๐ง
12.2. MRT Recalculation for the Default MRT Profile ๐
This section describes how the MRT recalculation SHOULD be performed for the Default MRT Profile ๐ It's meant to support FRR applications. Other approaches are possible, but they aren't specified in this document, so don't go looking for them here ๐
When a failure event happens, the PLRs put traffic onto the MRT topologies ๐ฆ After that, each router recomputes its SPT and moves traffic over to it. Only after all the PLRs have switched to their SPTs and the traffic has drained from the MRT topologies should each router install the recomputed MRTs into the FIBs ๐ Patience is a whole vibe here, bestie.
So at each router, the sequence goes like this:
- Receive failure notification
- Recompute SPT.
- Install the new SPT in the FIB.
- If the network was stable before the failure occurred, wait a configured (or advertised) period for all routers to be using their SPTs and traffic to drain from the MRTs.
- Recompute MRTs.
- Install new MRTs in the FIB.
While the recomputed MRTs aren't installed in the FIB yet, protection coverage is lowered ๐ So it's important to recalculate the MRTs and install them quickly โก
New protocol extensions for advertising the time needed to recompute shortest path routes and install them in the FIB will be defined elsewhere ๐ง
13. Operational Considerations ๐ ๏ธ
Here are some aspects of MRT-FRR that are useful to think about when you're deploying the tech in different operational environments and network topologies ๐ธ
13.1. Verifying Forwarding on MRT Paths ๐
The forwarding paths created by MRT-FRR aren't used by normal (non-FRR) traffic ๐ โโ๏ธ They only carry FRR traffic for a short period after a failure has been detected. It is RECOMMENDED that an operator proactively monitor the MRT forwarding paths so they can be certain the paths will be able to carry FRR traffic when it's needed ๐ซก That's why an implementation SHOULD give an operator the ability to test MRT paths with Operations, Administration, and Maintenance (OAM) traffic ๐งช For example, when MRT paths are realized using LDP labels distributed for topology-scoped FECs, an implementation can use the MPLS ping and traceroute defined in [RFC4379] and extended in [RFC7307] for topology-scoped FECs โ
13.2. Traffic Capacity on Backup Paths ๐๐จ
During a fast-reroute event started by a PLR in response to a network failure, the flow of traffic won't generally look the same as it will after the IGP forwarding state has converged with the failure taken into account ๐ฌ So even if a network has been engineered with enough capacity on the right links to carry all traffic after the IGP converges, it may still not have enough capacity on those links to carry the traffic during a fast-reroute event. That can mean more traffic loss during the fast-reroute event than you'd otherwise expect ๐
There are two somewhat distinct aspects to this. The first is that the path from the PLR to the destination during the fast-reroute event may be different from the path after the IGP converges. In that case, any traffic for the destination that reaches the PLR during the fast-reroute event will follow a different path from the PLR to the destination than it will after IGP convergence ๐บ๏ธ
The second aspect is that the amount of traffic arriving at the PLR for affected destinations during the fast-reroute event may be bigger than the amount arriving at the PLR for those destinations after IGP convergence ๐ Right after a failure, any non-PLR routers that were sending traffic to the PLR before the failure keep sending traffic to the PLR, and that traffic gets carried over the backup paths from the PLR to the destinations. After IGP convergence, though, upstream non-PLR routers may direct some traffic away from the PLR ๐
To reduce or eliminate the potential for transient traffic loss due to inadequate capacity during fast-reroute events, an operator can model how much traffic takes different paths during a fast-reroute event ๐ If it turns out there isn't enough capacity to support a given fast-reroute event, the operator can fix it either by adding capacity on certain links or by modifying the backup paths themselves ๐ง
The MRT Lowpoint algorithm produces a pair of diverse paths to each destination ๐ These paths are generated by following the directed links on a common GADAG. The decision process for constructing the GADAG in the MRT Lowpoint algorithm takes individual IGP link metrics into account. At any given node, links are explored in order from lowest IGP metric to highest IGP metric. The process for constructing the MRT-Red and Blue trees also uses SPF traversals of the GADAG. So the IGP link metric values do affect the computed backup paths ๐ However, adjusting IGP link metrics is not a generally applicable tool for modifying the MRT backup paths. Getting a desired set of MRT backup paths by adjusting IGP metrics, while also keeping the desired flow of traffic along the shortest paths, is not possible in general ๐
MRT-FRR lets an operator exclude a link from the MRT Island, and thus from the GADAG, by advertising it as MRT-Ineligible ๐ซ Such a link won't be used on the MRT forwarding path for any destination. Advertising links as MRT-Ineligible is the main tool MRT-FRR gives you for keeping backup traffic off lower bandwidth links during fast-reroute events ๐ข
Note that all of the backup paths produced by the MRT Lowpoint algorithm are closely tied to the common GADAG computed as part of that algorithm. So it's generally not possible to modify a subset of paths without affecting other paths. This rules out more fine-grained modification of individual backup paths when only paths computed by the MRT Lowpoint algorithm are used ๐งต
However, it may be desirable to let an operator use MRT-FRR alternates together with alternates provided by other FRR technologies ๐ค A policy-based alternate selection process can let an operator pick the best alternate from those provided by MRT and other FRR technologies. As a concrete example, it may be desirable to have a policy where a downstream LFA (if one exists for a given failure mode and destination) is preferred over a given MRT alternate. This combo gives the operator the ability to affect where traffic flows during a fast-reroute event, while still producing backup paths that use no additional labels for LDP traffic and won't loop under multiple failures ๐ This and other choices of alternate selection policy can be evaluated in terms of their effect on fast-reroute traffic flow and available capacity, plus other deployment considerations ๐
Note that future documents may define MRT profiles in addition to the default profile defined here ๐ฎ Different MRT profiles will generally produce alternate paths with different properties. An implementation may let an operator use different MRT profiles instead of, or in addition to, the default profile ๐
13.3. MRT IP Tunnel Loopback Address Management ๐
As described in Section 6.1.2, if an implementation uses IP tunneling as the mechanism to realize MRT forwarding paths, each node must advertise an MRT-Red and an MRT-Blue loopback address ๐ช These IP addresses must be unique within the routing domain, to the extent that they don't overlap with each other or with any other routing table entries. It's expected that operators will use their existing tools and processes for managing infrastructure IP addresses to manage these extra MRT-related loopback addresses ๐ซถ
13.4. MRT-FRR in a Network with Degraded Connectivity ๐
Okay bestie, ideally your routers running MRT-FRR start out in a 2-connected topology โจ so MRT-FRR can find completely diverse paths to every destination. But real networks drift away from that ideal all the time, for lots of reasons like network failures and planned maintenance ๐ ๏ธ
MRT-FRR is built to keep working even when connectivity is degraded ๐ When a network has cut-vertices or cut-links that split it into different 2-connected blocks, MRT-FRR still gives completely diverse paths for destinations in the same block as the PLR. For a destination in a different block from the PLR, the redundant paths MRT-FRR makes are link and node diverse within each block, and the paths only share links and nodes that are cut-links or cut-vertices in the topology. It's giving "the best you can get" energy ๐
If a network gets partitioned so one set of routers has no connectivity to another set, MRT-FRR just runs independently in each set of connected routers, giving redundant paths to destinations in the same set as a given PLR. Independent little islands, no drama ๐๏ธ
13.5. Partial Deployment of MRT-FRR in a Network ๐ง
Operators can choose to deploy MRT-FRR on only a subset of routers in an IGP area, and MRT-FRR is literally designed for that. Only routers that advertise support for a given MRT profile get included in a given MRT Island. For a PLR inside the MRT Island, MRT-FRR creates redundant forwarding paths to all destinations within the MRT Island, using maximally redundant trees all the way to those destinations.
For destinations outside the MRT Island, MRT-FRR creates paths that use the forwarding state MRT-FRR made inside the MRT Island, plus shortest path forwarding state outside it. The paths MRT-FRR creates to non-Island destinations are guaranteed to be diverse within the MRT Island (if topologically possible). However, the part of those paths outside the MRT Island may not be diverse ๐
14. IANA Considerations ๐
IANA has created the "MRT Profile Identifier Registry" ๐ The range is 0 to 255. The Default MRT Profile defined in this document has value 0. Values 1-200 are allocated by Standards Action. Values 201-220 are for Experimental Use. Values 221-254 are for Private Use. Value 255 is reserved for future registry extension. (The allocation and use policies are described in [RFC5226].)
The initial registry looks like this:
Value Description Reference
------- ---------------------------------------- ------------
0 Default MRT Profile RFC 7812
1-200 Unassigned
201-220 Experimental Use
221-254 Private Use
255 Reserved (for future registry extension)
The "MRT Profile Identifier Registry" is a new registry in the IANA Matrix ๐ฆ Following existing conventions, http://www.iana.org/protocols displays a new header: "Maximally Redundant Tree (MRT) Parameters". Under that header there's an entry for "MRT Profile Identifier Registry", which links to the registry itself at http://www.iana.org/assignments/mrt-parameters ๐
15. Security Considerations ๐๐
Okay, this part is serious, so pay attention ๐ In general, MRT forwarding paths do not follow shortest paths. The transit forwarding state for the MRT paths is created during normal operations, before a failure ever happens. That means a malicious packet with an appropriate header, injected into the network from a compromised location, would be forwarded to a destination along a non-shortest path. When this technology is deployed, a network security design should not rely on assumptions that potentially malicious traffic only follows shortest paths. Not a vibe to build on ๐ซ
It should be noted that creating non-shortest forwarding paths is not unique to MRT, so this isn't a MRT-only problem ๐คทโโ๏ธ
MRT-FRR requires that routers advertise information used to form MRT backup paths. This document doesn't specify the protocol extensions used to advertise that information, but we still need to talk about the security considerations around the information itself. Injecting false MRT-related information could be used to direct some MRT backup paths over compromised transmission links. Combine that with the ability to generate network failures, and an attacker could send traffic over compromised transmission links during a fast-reroute event ๐ญ To prevent this potential exploit, a receiving router needs to be able to authenticate MRT-related information that claims to have been advertised by another router. Authentication is non-negotiable, periodt ๐ฅ
16. References ๐
16.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>.
[RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an
IANA Considerations Section in RFCs", BCP 26, RFC 5226,
DOI 10.17487/RFC5226, May 2008,
<http://www.rfc-editor.org/info/rfc5226>.
[RFC7307] Zhao, Q., Raza, K., Zhou, C., Fang, L., Li, L., and D.
King, "LDP Extensions for Multi-Topology", RFC 7307,
DOI 10.17487/RFC7307, July 2014,
<http://www.rfc-editor.org/info/rfc7307>.
[RFC7811] Enyedi, G., Ed., Csaszar, A., Atlas, A., Ed., Bowers, C.,
and A. Gopalan, "An Algorithm for Computing IP/LDP Fast
Reroute Using Maximally Redundant Trees (MRT-FRR)",
RFC 7811, DOI 10.17487/RFC7811, June 2016,
<http://www.rfc-editor.org/info/rfc7811>.
16.2. Informative References
[EnyediThesis]
Enyedi, G., "Novel Algorithms for IP Fast Reroute",
Department of Telecommunications and Media Informatics,
Budapest University of Technology and Economics Ph.D.
Thesis, February 2011,
<https://repozitorium.omikk.bme.hu/bitstream/
handle/10890/1040/ertekezes.pdf>.
[LDP-MRT] Atlas, A., Tiruveedhula, K., Bowers, C., Tantsura, J., and
IJ. Wijnands, "LDP Extensions to Support Maximally
Redundant Trees", Work in Progress, draft-ietf-mpls-ldp-
mrt-03, May 2016.
[MRT-ARCH]
Atlas, A., Kebler, R., Wijnands, IJ., Csaszar, A., and G.
Enyedi, "An Architecture for Multicast Protection Using
Maximally Redundant Trees", Work in Progress, draft-atlas-
rtgwg-mrt-mc-arch-02, July 2013.
[RFC2328] Moy, J., "OSPF Version 2", STD 54, RFC 2328,
DOI 10.17487/RFC2328, April 1998,
<http://www.rfc-editor.org/info/rfc2328>.
[RFC4379] Kompella, K. and G. Swallow, "Detecting Multi-Protocol
Label Switched (MPLS) Data Plane Failures", RFC 4379,
DOI 10.17487/RFC4379, February 2006,
<http://www.rfc-editor.org/info/rfc4379>.
[RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for
IP Fast Reroute: Loop-Free Alternates", RFC 5286,
DOI 10.17487/RFC5286, September 2008,
<http://www.rfc-editor.org/info/rfc5286>.
[RFC5331] Aggarwal, R., Rekhter, Y., and E. Rosen, "MPLS Upstream
Label Assignment and Context-Specific Label Space",
RFC 5331, DOI 10.17487/RFC5331, August 2008,
<http://www.rfc-editor.org/info/rfc5331>.
[RFC5340] Coltun, R., Ferguson, D., Moy, J., and A. Lindem, "OSPF
for IPv6", RFC 5340, DOI 10.17487/RFC5340, July 2008,
<http://www.rfc-editor.org/info/rfc5340>.
[RFC5443] Jork, M., Atlas, A., and L. Fang, "LDP IGP
Synchronization", RFC 5443, DOI 10.17487/RFC5443, March
2009, <http://www.rfc-editor.org/info/rfc5443>.
[RFC5714] Shand, M. and S. Bryant, "IP Fast Reroute Framework",
RFC 5714, DOI 10.17487/RFC5714, January 2010,
<http://www.rfc-editor.org/info/rfc5714>.
[RFC5715] Shand, M. and S. Bryant, "A Framework for Loop-Free
Convergence", RFC 5715, DOI 10.17487/RFC5715, January
2010, <http://www.rfc-editor.org/info/rfc5715>.
[RFC6976] Shand, M., Bryant, S., Previdi, S., Filsfils, C.,
Francois, P., and O. Bonaventure, "Framework for Loop-Free
Convergence Using the Ordered Forwarding Information Base
(oFIB) Approach", RFC 6976, DOI 10.17487/RFC6976, July
2013, <http://www.rfc-editor.org/info/rfc6976>.
[RFC6981] Bryant, S., Previdi, S., and M. Shand, "A Framework for IP
and MPLS Fast Reroute Using Not-Via Addresses", RFC 6981,
DOI 10.17487/RFC6981, August 2013,
<http://www.rfc-editor.org/info/rfc6981>.
[RFC6987] Retana, A., Nguyen, L., Zinin, A., White, R., and D.
McPherson, "OSPF Stub Router Advertisement", RFC 6987,
DOI 10.17487/RFC6987, September 2013,
<http://www.rfc-editor.org/info/rfc6987>.
[RFC7490] Bryant, S., Filsfils, C., Previdi, S., Shand, M., and N.
So, "Remote Loop-Free Alternate (LFA) Fast Reroute (FRR)",
RFC 7490, DOI 10.17487/RFC7490, April 2015,
<http://www.rfc-editor.org/info/rfc7490>.
Appendix A. Inter-level Forwarding Behavior for IS-IS โจ
okay so bestie, this appendix is about IS-IS, which has this extra layer of "levels" on top of areas ๐ธ Here we're naming three kinds of interface: a Level-1-only interface (it's only formed a Level-1 adjacency), a Level-2-only interface (only a Level-2 adjacency), and a Level-1-and-Level-2 interface (both ๐ ). Quick side note, IS-IS also has areas, and every router gets one or more area identifiers. For a Level-1 adjacency to form between two routers, at least one area identifier has to match. Level-2 adjacencies don't need any area identifiers to match ๐ง The behaviour below never mentions area identifiers directly, but they still affect it indirectly, because they decide whether Level-1 adjacencies form at all ๐ฆ
So here's the main idea. Say a packet is headed for Z and it's riding MRT-Red or MRT-Blue ๐ Where it should go next depends on which interface it came in on and where the best route to Z was learned from.
First up, a packet for Z on MRT-Red or MRT-Blue that arrives on a Level-1-only interface. If the best shortest path route to Z came from a Level-1 advertisement, the packet should keep going on MRT-Red or MRT-Blue. But if the best route came from a Level-2 advertisement, the packet should get pulled off MRT-Red or MRT-Blue and sent on the shortest-path default forwarding topology ๐
Next, a packet for Z on MRT-Red or MRT-Blue arriving on a Level-2-only interface. If the best route to Z came from a Level-2 advertisement, it stays on MRT-Red or MRT-Blue โจ If the best route came from a Level-1 advertisement, it gets removed from MRT-Red or MRT-Blue and forwarded on the shortest-path default forwarding topology ๐
Last one, a packet for Z on MRT-Red or MRT-Blue arriving on a Level-1-and-Level-2 interface. This packet should keep going on MRT-Red or MRT-Blue, no matter which level the route was learned from ๐
Now, an implementation is allowed to make this easier. Instead of working out where the route was learned from, it can look at the interface of the next hop for the route to Z. If that next hop points out a Level-1-only interface, the route came from a Level-1 advertisement. If it points out a Level-2-only interface, it came from a Level-2 advertisement. But a next hop pointing out a Level-1-and-Level-2 interface doesn't tell you enough to figure out the source ๐ So with this shortcut, the implementation has to keep forwarding on MRT-Red or MRT-Blue whenever the next hop is on a Level-1-and-Level-2 interface. That means a packet going from Level-1 to Level-2 (or the other way round) that crosses a Level-1-and-Level-2 interface along the way will just stay on MRT-Red or MRT-Blue ๐ฆ
Is this always the most optimal thing? Nope, not always ๐ But it doesn't cause interoperability problems either. The only cost is that the packet stays on an MRT backup path longer than it needs to, and it still gets where it's going ๐ซถ
Appendix B. General Issues with Area Abstraction ๐ธ
okay so this appendix is about a problem that shows up when a prefix is multihomed across two different areas ๐ญ Here's the thing: protecting it can get really impractical unless you add the extra complexity of explicit tunneling. And honestly, LFA and Remote-LFA run into this same problem too ๐
Look at Figure 4 below, it's giving a whole vibe ๐ง
50
|----[ASBR Y]---[B]---[ABR 2]---[C] Backbone Area 0:
| | ABR 1, ABR 2, C, D
| |
| | Area 20: A, ASBR X
| |
p ---[ASBR X]---[A]---[ABR 1]---[D] Area 10: B, ASBR Y
5 p is a Type 1 AS-external
Figure 4: AS External Prefixes in Different Areas โจ
Now picture a richer topology that isn't drawn here ๐ The same prefix gets announced by ASBR X and ASBR Y, and those two live in different non-backbone areas. Say the link from A to ASBR X fails. An MRT alternate could send the packet to ABR 1, and ABR 1 could send it on to D. The catch is that D would then see its shortest route going right back through ABR 1 into Area 20 ๐ฌ That happens because the routers in one area, ABR included, don't know yet about a failure in a different area ๐
So the only real way to get the packet from A to ASBR Y is to explicitly tunnel it there ๐ฆ If the traffic is unlabeled, or the right MPLS labels are known, then explicit tunneling MAY be used, as long as the shortest path of the tunnel avoids the failure point ๐ In that case, A has to work out that it should use an explicit tunnel instead of an MRT alternate ๐
Acknowledgements ๐ซถ
The authors would like to thank Mike Shand for his valuable review and contributions ๐
The authors would also like to thank Joel Halpern, Hannes Gredler, Ted Qian, Kishore Tiruveedhula, Shraddha Hegde, Santosh Esale, Nitin Bahadur, Harish Sitaraman, Raveendra Torvi, Anil Kumar SN, Bruno Decraene, Eric Wu, Janos Farkas, Rob Shakir, Stewart Bryant, and Alvaro Retana for their suggestions and review ๐ธ
Contributors ๐
Robert Kebler
Juniper Networks
10 Technology Park Drive
Westford, MA 01886
United States
Email: rkebler@juniper.net
Andras Csaszar
Ericsson
Konyves Kalman krt 11
Budapest 1097
Hungary
Email: Andras.Csaszar@ericsson.com
Jeff Tantsura
Ericsson
300 Holger Way
San Jose, CA 95134
United States
Email: jeff.tantsura@ericsson.com
Russ White
VCE
Email: russw@riw.us
Authors' Addresses ๐ง
Alia Atlas
Juniper Networks
10 Technology Park Drive
Westford, MA 01886
United States
Email: akatlas@juniper.net
Chris Bowers
Juniper Networks
1194 N. Mathilda Ave.
Sunnyvale, CA 94089
United States
Email: cbowers@juniper.net
Gabor Sandor Enyedi
Ericsson
Konyves Kalman krt 11.
Budapest 1097
Hungary
Email: Gabor.Sandor.Enyedi@ericsson.com
๐ฆ where this page comes from
- ietf: rfc7812 2016-06
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms