rfc9855.original | rfc9855.txt | |||
---|---|---|---|---|
Network Working Group A. Bashandy | Internet Engineering Task Force (IETF) A. Bashandy | |||
Internet-Draft Individual | Request for Comments: 9855 Individual | |||
Intended status: Standards Track S. Litkowski | Category: Standards Track S. Litkowski | |||
Expires: 16 August 2025 C. Filsfils | ISSN: 2070-1721 C. Filsfils | |||
Cisco Systems | Cisco Systems | |||
P. Francois | P. Francois | |||
INSA Lyon | INSA Lyon | |||
B. Decraene | B. Decraene | |||
Orange | Orange | |||
D. Voyer | D. Voyer | |||
Bell Canada | Bell Canada | |||
12 February 2025 | September 2025 | |||
Topology Independent Fast Reroute using Segment Routing | Topology Independent Fast Reroute Using Segment Routing | |||
draft-ietf-rtgwg-segment-routing-ti-lfa-21 | ||||
Abstract | Abstract | |||
This document presents Topology Independent Loop-free Alternate Fast | This document presents Topology Independent Loop-Free Alternate (TI- | |||
Reroute (TI-LFA), aimed at providing protection of node and adjacency | LFA) Fast Reroute (FRR), which is aimed at providing protection of | |||
segments within the Segment Routing (SR) framework. This Fast | node and adjacency segments within the Segment Routing (SR) | |||
Reroute (FRR) behavior builds on proven IP Fast Reroute concepts | framework. This FRR behavior builds on proven IP FRR concepts being | |||
being LFAs, remote LFAs (RLFA), and remote LFAs with directed | LFAs, Remote LFAs (RLFAs), and remote LFAs with directed forwarding | |||
forwarding (DLFA). It extends these concepts to provide guaranteed | (DLFAs). It extends these concepts to provide guaranteed coverage in | |||
coverage in any two-connected networks using a link-state IGP. An | any two-connected networks using a link-state IGP. An important | |||
important aspect of TI-LFA is the FRR path selection approach | aspect of TI-LFA is the FRR path selection approach establishing | |||
establishing protection over the expected post-convergence paths from | protection over the expected post-convergence paths from the Point of | |||
the point of local repair, reducing the operational need to control | Local Repair (PLR), reducing the operational need to control the tie- | |||
the tie-breaks among various FRR options. | breaks among various FRR options. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 16 August 2025. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9855. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2025 IETF Trust and the persons identified as the | Copyright (c) 2025 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Acronyms . . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction | |||
2. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 3 | 2. Terminology | |||
3. Terminology . . . . . . . . . . . . . . . . . . . . . . . . . 7 | 2.1. Abbreviations and Notations | |||
3.1. Conventions used in this document . . . . . . . . . . . . 8 | 2.2. Conventions Used in This Document | |||
4. Base principle . . . . . . . . . . . . . . . . . . . . . . . 8 | 3. Base Principle | |||
5. Intersecting P-Space and Q-Space with post-convergence | 4. Intersecting P-Space and Q-Space with Post-Convergence Paths | |||
paths . . . . . . . . . . . . . . . . . . . . . . . . . . 8 | 4.1. Extended P-Space Property Computation for a Resource X over | |||
5.1. Extended P-Space property computation for a resource X, | Post-Convergence Paths | |||
over post-convergence paths . . . . . . . . . . . . . . . 8 | 4.2. Q-Space Property Computation for a Resource X over | |||
5.2. Q-Space property computation for a resource X, over | Post-Convergence Paths | |||
post-convergence paths . . . . . . . . . . . . . . . . . 9 | 4.3. Scaling Considerations When Computing Q-Space | |||
5.3. Scaling considerations when computing Q-Space . . . . . . 9 | 5. TI-LFA Repair Path | |||
6. TI-LFA Repair path . . . . . . . . . . . . . . . . . . . . . 9 | 5.1. FRR Path Using a Direct Neighbor | |||
6.1. FRR path using a direct neighbor . . . . . . . . . . . . 11 | 5.2. FRR Path Using a PQ Node | |||
6.2. FRR path using a PQ node . . . . . . . . . . . . . . . . 11 | 5.3. FRR Path Using a P Node and Q Node That Are Adjacent | |||
6.3. FRR path using a P node and Q node that are adjacent . . 11 | 5.4. Connecting Distant P and Q Nodes Along Post-Convergence | |||
6.4. Connecting distant P and Q nodes along post-convergence | Paths | |||
paths . . . . . . . . . . . . . . . . . . . . . . . . . . 11 | 6. Building TI-LFA Repair Lists for SR Segments | |||
7. Building TI-LFA repair lists for SR Segments . . . . . . . . 11 | 6.1. The Active Segment Is a Node Segment | |||
7.1. The active segment is a node segment . . . . . . . . . . 12 | 6.2. The Active Segment Is an Adjacency Segment | |||
7.2. The active segment is an adjacency segment . . . . . . . 12 | 6.2.1. Protecting [Adjacency, Adjacency] Segment Lists | |||
7.2.1. Protecting [Adjacency, Adjacency] segment lists . . . 13 | 6.2.2. Protecting [Adjacency, Node] Segment Lists | |||
7.2.2. Protecting [Adjacency, Node] segment lists . . . . . 13 | 7. Dataplane-Specific Considerations | |||
8. Dataplane specific considerations . . . . . . . . . . . . . . 13 | 7.1. MPLS Dataplane Considerations | |||
8.1. MPLS dataplane considerations . . . . . . . . . . . . . . 13 | 7.2. SRv6 Dataplane Considerations | |||
8.2. SRv6 dataplane considerations . . . . . . . . . . . . . . 14 | 8. TI-LFA and SR Algorithms | |||
9. TI-LFA and SR algorithms . . . . . . . . . . . . . . . . . . 14 | 9. Usage of Adjacency Segments in the Repair List | |||
10. Usage of Adjacency segments in the repair list . . . . . . . 15 | 10. Security Considerations | |||
11. Security Considerations . . . . . . . . . . . . . . . . . . . 16 | 11. IANA Considerations | |||
12. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 16 | 12. References | |||
13. Contributors . . . . . . . . . . . . . . . . . . . . . . . . 16 | 12.1. Normative References | |||
14. Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . 16 | 12.2. Informative References | |||
15. References . . . . . . . . . . . . . . . . . . . . . . . . . 17 | Appendix A. Advantages of Using the Expected Post-Convergence Path | |||
15.1. Normative References . . . . . . . . . . . . . . . . . . 17 | During FRR | |||
15.2. Informative References . . . . . . . . . . . . . . . . . 17 | Appendix B. Analysis Based on Real Network Topologies | |||
Appendix A. Advantages of using the expected post-convergence path | Acknowledgments | |||
during FRR . . . . . . . . . . . . . . . . . . . . . . . 19 | Contributors | |||
Appendix B. Analysis based on real network topologies . . . . . 21 | Authors' Addresses | |||
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 26 | ||||
1. Acronyms | ||||
* DLFA: Remote LFA with Directed forwarding. | ||||
* FRR: Fast Re-route. | ||||
* IGP: Interior Gateway Protocol. | ||||
* LFA: Loop-Free Alternate. | ||||
* LSDB: Link State DataBase. | ||||
* PLR: Point of Local Repair. | ||||
* RL: Repair list. | ||||
* RLFA: Remote LFA. | ||||
* SID: Segment Identifier. | ||||
* SPF: Shortest Path First. | ||||
* SR: Segment Routing. | ||||
* SRLG: Shared Risk Link Group. | ||||
* TI-LFA: Topology Independent LFA. | ||||
2. Introduction | 1. Introduction | |||
This document outlines a local repair mechanism that leverages | This document outlines a local repair mechanism that leverages | |||
Segment Routing (SR) to restore end-to-end connectivity in the event | Segment Routing (SR) to restore end-to-end connectivity in the event | |||
of a failure involving a directly connected network component. This | of a failure involving a directly connected network component. This | |||
mechanism is designed for standard link-state Interior Gateway | mechanism is designed for standard link-state Interior Gateway | |||
Protocol (IGP) shortest path scenarios. Non-SR mechanisms for local | Protocol (IGP) shortest path scenarios. Non-SR mechanisms for local | |||
repair are beyond the scope of this document. Non-local failures are | repair are beyond the scope of this document. Non-local failures are | |||
addressed in a separate document | addressed in a separate document [SR-LOOP]. | |||
[I-D.bashandy-rtgwg-segment-routing-uloop]. | ||||
The term topology independent (TI) describes the capability providing | The term Topology Independent (TI) describes the capability providing | |||
a loop free backup path that is effective accross all network | a loop-free backup path that is effective across all network | |||
topologies. This provides a major improvement compared to LFA | topologies. This provides a major improvement compared to LFA | |||
[RFC5286] and remote LFA [RFC7490] which cannot provide a complete | [RFC5286] and RLFA [RFC7490], which cannot provide a complete | |||
protection coverage in some topologies as described in [RFC6571]. | protection coverage in some topologies as described in [RFC6571]. | |||
When the network reconverges after failure, micro-loops [RFC5715] can | When the network reconverges after failure, micro-loops [RFC5715] can | |||
form due to transient inconsistencies in the forwarding tables of | form due to transient inconsistencies in the forwarding tables of | |||
different routers. If it is determined that micro-loops are a | different routers. If it is determined that micro-loops are a | |||
significant issue in the deployment, then a suitable loop-free | significant issue in the deployment, then a suitable loop-free | |||
convergence method, such as one of those described in [RFC5715], | convergence method should be implemented, such as one of those | |||
[RFC6976], [RFC8333], or [I-D.bashandy-rtgwg-segment-routing-uloop] | described in [RFC5715], [RFC6976], [RFC8333], or [SR-LOOP]. | |||
should be implemented. | ||||
TI-LFA operates locally at the Point of Local Repair (PLR) upon | TI-LFA operates locally at the Point of Local Repair (PLR) upon | |||
detecting a failure in one of its direct links. Consequently, this | detecting a failure in one of its direct links. Consequently, this | |||
local operation does not influence: | local operation does not influence: | |||
* Micro-loops that may or may not form during the distributed | * Micro-loops that may or may not form during the distributed IGP | |||
Interior Gateway Protocol (IGP) convergence as delineated in | convergence as delineated in [RFC5715]: | |||
[RFC5715]: | ||||
- These micro-loops occur on routes directed towards the | - These micro-loops occur on routes directed towards the | |||
destination that do not traverse TI-LFA-configured paths. | destination that do not traverse paths configured for TI-LFA. | |||
According to [RFC5714], the formation of such micro-loops can | According to [RFC5714], the formation of such micro-loops can | |||
prevent traffic from reaching the PLR, thereby bypassing the | prevent traffic from reaching the PLR, thereby bypassing the | |||
TI-LFA paths established for rerouting. | TI-LFA paths established for rerouting. | |||
* Micro-loops that may or may not develop when the previously failed | * Micro-loops that may or may not develop when the previously failed | |||
link is restored to functionality. | link is restored to functionality. | |||
TI-LFA paths are activated from the instant the PLR detects a failure | TI-LFA paths are activated from the instant the PLR detects a failure | |||
in a local link and remain in effect until the Interior Gateway | in a local link and remain in effect until the IGP convergence at the | |||
Protocol (IGP) convergence at the PLR is fully achieved. | PLR is fully achieved. Consequently, they are not susceptible to | |||
Consequently, they are not susceptible to micro-loops that may arise | micro-loops that may arise due to variations in the IGP convergence | |||
due to variations in the IGP convergence times across different nodes | times across different nodes through which these paths traverse. | |||
through which these paths traverse. This ensures a stable and | This ensures a stable and predictable routing environment, minimizing | |||
predictable routing environment, minimizing disruptions typically | disruptions typically associated with asynchronous network behavior. | |||
associated with asynchronous network behavior. However, an early | However, an early (relative to the other nodes) IGP convergence at | |||
(relative to the other nodes) IGP convergence at the PLR and the | the PLR and the consecutive "early" release of TI-LFA paths may cause | |||
consecutive ”early” release of TI-LFA paths may cause micro-loops, | micro-loops, especially if these paths have been computed using the | |||
especially if these paths have been computed using the methods | methods described in Sections 5.2, 5.3, or 5.4 of this document. One | |||
described in Section Section 6.2, Section 6.3, or Section 6.4 of the | of the possible ways to prevent such micro-loops is local convergence | |||
document. One of the possible ways to prevent such micro-loops is | delay [RFC8333]. | |||
local convergence delay ([RFC8333]). | ||||
TI-LFA procedures are complementary to application of any micro-loop | TI-LFA procedures are complementary to the application of any micro- | |||
avoidance procedures in the case of link or node failure: | loop avoidance procedures in the case of link or node failure: | |||
* Link or node failure requires some urgent action to restore the | * Link or node failure requires some urgent action to restore the | |||
traffic that passed thru the failed resource. TI-LFA paths are | traffic that passed through the failed resource. TI-LFA paths are | |||
pre-computed and pre-installed and therefore suitable for urgent | pre-computed and pre-installed; therefore, they are suitable for | |||
recovery | urgent recovery. | |||
* The paths used in the micro-loop avoidance procedures typically | * The paths used in the micro-loop avoidance procedures typically | |||
cannot be pre-computed. | cannot be pre-computed. | |||
For each destination (as specified by the IGP) in the network, TI-LFA | For each destination (as specified by the IGP) in the network, TI-LFA | |||
pre-installs a backup forwarding entry for each protected destination | pre-installs a backup forwarding entry for each protected destination | |||
ready to be activated upon detection of the failure of a link used to | ready to be activated upon detection of the failure of a link used to | |||
reach the destination. TI-LFA provides protection in the event of | reach the destination. TI-LFA provides protection in the event of | |||
any one of the following: single link failure, single node failure, | any one of the following: single link failure, single node failure, | |||
or single SRLG failure. In link failure mode, the destination is | or single Shared Risk Link Group (SRLG) failure. In link failure | |||
protected assuming the failure of the link. In node protection mode, | mode, the destination is protected assuming the failure of the link. | |||
the destination is protected assuming that the neighbor connected to | In node protection mode, the destination is protected assuming that | |||
the primary link Section 3 has failed. In SRLG protecting mode, the | the neighbor connected to the primary link (see Section 2) has | |||
destination is protected assuming that a configured set of links | failed. In SRLG protecting mode, the destination is protected | |||
sharing fate with the primary link has failed (e.g. a linecard or a | assuming that a configured set of links sharing fate with the primary | |||
set of links sharing a common transmission pipe). | link has failed (e.g., a linecard or a set of links sharing a common | |||
transmission pipe). | ||||
Protection techniques outlined in this document are limited to | Protection techniques outlined in this document are limited to | |||
protecting links, nodes, and SRLGs that are within a link-state IGP | protecting links, nodes, and SRLGs that are within a link-state IGP | |||
area. Protecting domain exit routers and/or links attached to | area. Protecting domain exit routers and/or links attached to | |||
another routing domains are beyond the scope of this document | another routing domain is beyond the scope of this document. | |||
By utilizing Segment Routing (SR), TI-LFA eliminates the need to | By utilizing SR, TI-LFA eliminates the need to establish Targeted | |||
establish Targeted Label Distribution Protocol sessions with remote | Label Distribution Protocol sessions with remote nodes for leveraging | |||
nodes for leveraging the benefits of Remote Loop-Free Alternates | the benefits of Remote Loop-Free Alternates (RLFAs) [RFC7490] | |||
(RLFA) [RFC7490][RFC7916] or Directed Loop-Free Alternates (DLFA) | [RFC7916] or Directed Loop-Free Alternates (DLFAs) [RFC5714]. All | |||
[RFC5714]. All the Segment Identifiers (SIDs) required are present | the Segment Identifiers (SIDs) required are present within the Link | |||
within the Link State Database (LSDB) of the Interior Gateway | State Database (LSDB) of the IGP. Consequently, there is no longer a | |||
Protocol (IGP). Consequently, there is no longer a necessity to | necessity to prefer LFAs over RLFAs or DLFAs, nor is there a need to | |||
prefer LFAs over RLFAs or DLFAs, nor is there a need to minimize the | minimize the number of RLFA or DLFA repair nodes. | |||
number of RLFA or DLFA repair nodes. | ||||
Utilizing SR makes the requirement unnecessary to establish | Utilizing SR makes the requirement unnecessary to establish an | |||
additional state within the network for enforcing explicit Fast | additional state within the network for enforcing explicit Fast | |||
Reroute (FRR) paths. This spares the nodes from maintaining | Reroute (FRR) paths. This spares the nodes from maintaining a | |||
supplementary state and frees the operator from the necessity to | supplementary state and frees the operator from the necessity to | |||
implement additional protocols or protocol sessions solely to augment | implement additional protocols or protocol sessions solely to augment | |||
protection coverage. | protection coverage. | |||
TI-LFA also brings the benefit of the ability to provide a backup | TI-LFA also brings the benefit of the ability to provide a backup | |||
path that follows the expected post-convergence path considering a | path that follows the expected post-convergence path considering a | |||
particular failure which reduces the need of locally configured | particular failure, which reduces the need of locally configured | |||
policies that influence the backup path selection ([RFC7916]). The | policies that influence the backup path selection [RFC7916]. The | |||
easiest way to express the expected post-convergence path in a loop- | easiest way to express the expected post-convergence path in a loop- | |||
free manner is to encode it as a list of adjacency segments. | free manner is to encode it as a list of adjacency segments. | |||
However, this may create a long segment list that some hardware may | However, this may create a long segment list that some hardware may | |||
not be able to program. One of the challenges of TI-LFA is to encode | not be able to program. One of the challenges of TI-LFA is to encode | |||
the expected post-convergence path by combining adjacency segments | the expected post-convergence path by combining adjacency segments | |||
and node segments. Each implementation may independently develop its | and node segments. Each implementation may independently develop its | |||
own algorithm for optimizing the ordered segment list. This document | own algorithm for optimizing the ordered segment list. This document | |||
provides an outline of the fundamental concepts applicable to | provides an outline of the fundamental concepts applicable to | |||
constructing the SR backup path, along with the related dataplane | constructing the SR backup path, along with the related dataplane | |||
procedures. Appendix A describes some of the post-convergence path | procedures. Appendix A contains a more detailed description of some | |||
related aspects of TI-LFA in more detail. | of the aspects of TI-LFA related to post-convergence path. | |||
Section 3 defines the main notations used in the document. They are | This document is structured as follows: | |||
in line with [RFC5714]. | ||||
Section 4 defines the main principles of TI-LFA backup path | * Section 2 defines the main notations used in the document. They | |||
computation. | are in line with [RFC5714]. | |||
Section 5 suggests to compute the P-Space and Q-Space properties | * Section 3 defines the main principles of TI-LFA backup path | |||
defined in Section 3, for the specific case of nodes lying over the | computation. | |||
post-convergence paths towards the protected destinations. | ||||
Using the properties defined in Section 5, Section 6 describes how to | * Section 4 suggests to compute the P-Space and Q-Space properties | |||
compute protection lists that encode a loop-free post-convergence | defined in Section 2 for the specific case of nodes lying over the | |||
path towards the destination. | post-convergence paths towards the protected destinations. | |||
Section 7 defines the segment operations to be applied by the PLR to | * Using the properties defined in Section 4, Section 5 describes how | |||
ensure consistency with the forwarding state of the repair node. | to compute protection lists that encode a loop-free post- | |||
convergence path towards the destination. | ||||
Section 8 discusses aspects that are specific to the dataplane. | * Section 6 defines the segment operations to be applied by the PLR | |||
to ensure consistency with the forwarding state of the repair | ||||
node. | ||||
Section 9 discusses relationship between TI-LFA and the SR-algorithm. | * Section 7 discusses aspects that are specific to the dataplane. | |||
Certain considerations are needed when adjacency segments are used in | * Section 8 discusses the relationship between TI-LFA and the SR | |||
a repare list. Section 10 provides an overview of these | algorithm. | |||
considerations. | ||||
Section 11 discusses security considerations. | * Certain considerations are needed when adjacency segments are used | |||
in a repair list. Section 9 provides an overview of these | ||||
considerations. | ||||
Appendix A highlights advantages of using the expected post- | * Section 10 discusses security considerations. | |||
convergence path during FRR. | ||||
By implementing the algorithms detailed in this document within | * Appendix A highlights advantages of using the expected post- | |||
actual service provider and large enterprise network environments, | convergence path during FRR. | |||
real-life measurements are presented regarding the number of SIDs | ||||
utilized by repair paths. These measurements are summarized in | ||||
Appendix B. | ||||
3. Terminology | * By implementing the algorithms detailed in this document within | |||
actual service provider and large enterprise network environments, | ||||
real-life measurements are presented regarding the number of SIDs | ||||
utilized by repair paths. These measurements are summarized in | ||||
Appendix B. | ||||
The main notations used in this document are defined as follows. | 2. Terminology | |||
The terms "old" and "new" topologies refer to the Link State Database | 2.1. Abbreviations and Notations | |||
(LSDB) state before and after the considered failure, respectively. | ||||
SPT_old(R) is the Shortest Path Tree rooted at node R in the initial | DLFA: Directed Loop-Free Alternate | |||
state of the network. | ||||
SPT_new(R, X) is the Shortest Path Tree rooted at node R in the state | FRR: Fast Reroute | |||
of the network after the resource X has failed. | ||||
PLR stands for "Point of Local Repair". It is the router that | IGP: Interior Gateway Protocol | |||
applies fast traffic restoration after detecting failure in a | ||||
directly attached link, set of links, and/or node. | ||||
Similar to [RFC7490], the concept of P-Space and Q-Space is used for | LFA: Loop-Free Alternate | |||
TI-LFA. | ||||
The P-space P(R,X) of a router R with regard to a resource X (e.g. a | LSDB: Link State Database | |||
link S-F, a node F, or a SRLG) is the set of routers reachable from R | ||||
using the pre-convergence shortest paths without any of those paths | ||||
(including equal-cost path splits) transiting through X. A P node is | ||||
a node that belongs to the P-space. | ||||
Consider the set of neighbors of a router R and a resource X. | PLR: Point of Local Repair | |||
Exclude from that set, the neighbors that are reachable from R using | ||||
X. The Extended P-Space P'(R,X) of a node R with regard to a | ||||
resource X is the union of the P-spaces of the neighbors in that | ||||
reduced set of neighbors with regard to the resource X. | ||||
The Q-space Q(R,X) of a router R with regard to a resource X is the | RL: Repair List | |||
set of routers from which R can be reached without any path | ||||
(including equal-cost path splits) transiting through X. A Q node is | ||||
a node that belongs to the Q-space | ||||
EP(P, Q) is an explicit SR path from a node P to a node Q. | RLFA: Remote Loop-Free Alternate | |||
Primary Interface: Primary Outgoing Interface: One of the outgoing | SID: Segment Identifier | |||
interfaces towards a destination according to the IGP link-state | ||||
protocol | ||||
Primary Link: A link connected to the primary interface | SPF: Shortest Path First | |||
adj-sid(S-F): Adjacency Segment from node S to node F | SPT: Shortest Path Tree | |||
3.1. Conventions used in this document | SR: Segment Routing | |||
SRLG: Shared Risk Link Group | ||||
TI-LFA: Topology Independent Loop-Free Alternate | ||||
The main notations used in this document are defined as follows: | ||||
* The terms "old" and "new" topologies refer to the LSDB state | ||||
before and after the considered failure, respectively. | ||||
* SPT_old(R) is the SPT rooted at node R in the initial state of the | ||||
network. | ||||
* SPT_new(R, X) is the SPT rooted at node R in the state of the | ||||
network after the resource X has failed. | ||||
* The Point of Local Repair (PLR) is the router that applies fast | ||||
traffic restoration after detecting failure in a directly attached | ||||
link, set of links, and/or node. | ||||
* Similar to [RFC7490], the concept of P-Space and Q-Space is used | ||||
for TI-LFA. | ||||
* The P-space P(R,X) of a router R with regard to a resource X | ||||
(e.g., a link S-F, a node F, or an SRLG) is the set of routers | ||||
reachable from R using the pre-convergence shortest paths without | ||||
any of those paths (including equal-cost path splits) transiting | ||||
through X. A P node is a node that belongs to the P-space. | ||||
* Consider the set of neighbors of a router R and a resource X. | ||||
Exclude from that set the neighbors that are reachable from R | ||||
using X. The extended P-Space P'(R,X) of a node R with regard to | ||||
a resource X is the union of the P-spaces of the neighbors in that | ||||
reduced set of neighbors with regard to the resource X. | ||||
* The Q-space Q(R,X) of a router R with regard to a resource X is | ||||
the set of routers from which R can be reached without any path | ||||
(including equal-cost path splits) transiting through X. A Q node | ||||
is a node that belongs to the Q-space. | ||||
* EP(P, Q) is an explicit SR path from a node P to a node Q. | ||||
* The primary interface and primary outgoing interface are one of | ||||
the outgoing interfaces towards a destination according to the IGP | ||||
link-state protocol. | ||||
* The primary link is a link connected to the primary interface. | ||||
* The adj-sid(S-F) is the adjacency segment from node S to node F. | ||||
2.2. Conventions Used in This Document | ||||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
4. Base principle | 3. Base Principle | |||
The basic algorithm to compute the repair path is to pre-compute | The basic algorithm to compute the repair path is to pre-compute | |||
SPT_new(R,X) and for each destination, encode the repair path as a | SPT_new(R,X) and, for each destination, encode the repair path as a | |||
loop-free segment list. One way to provide a loop-free segment list | loop-free segment list. One way to provide a loop-free segment list | |||
is to use adjacency SIDs only. However, this approach may create | is to use adjacency SIDs only. However, this approach may create | |||
very long SID lists that hardware may not be able to handle due to | very long SID lists that hardware may not be able to handle due to | |||
MSD (Maximum SID Depth) limitations. | Maximum SID Depth (MSD) limitations. | |||
An implementation is free to use any local optimization to provide | An implementation is free to use any local optimization to provide | |||
smaller segment lists by combining Node SIDs and Adjacency SIDs. In | smaller segment lists by combining Node SIDs and Adjacency SIDs. In | |||
addition, the usage of Node-SIDs allow to maximize ECMPs over the | addition, the usage of Node-SIDs allow for maximizing ECMPs over the | |||
backup path. These optimizations are out of scope of this document, | backup path. These optimizations are out of scope of this document; | |||
however the subsequent sections provide some guidance on how to | however, the subsequent sections provide some guidance on how to | |||
leverage P-Spaces and Q-Spaces to optimize the size of the segment | leverage P-Spaces and Q-Spaces to optimize the size of the segment | |||
list. | list. | |||
5. Intersecting P-Space and Q-Space with post-convergence paths | 4. Intersecting P-Space and Q-Space with Post-Convergence Paths | |||
One of the challenges of defining an SR path following the expected | One of the challenges of defining an SR path following the expected | |||
post-convergence path is to reduce the size of the segment list. In | post-convergence path is to reduce the size of the segment list. In | |||
order to reduce this segment list, an implementation MAY determine | order to reduce this segment list, an implementation MAY determine | |||
the P-Space/Extended P-Space and Q-Space properties (defined in | the P-Space / extended P-Space and Q-Space properties (defined in | |||
[RFC7490]) of the nodes along the expected post-convergence path from | [RFC7490]) of the nodes along the expected post-convergence path from | |||
the PLR to the protected destination and compute an SR explicit path | the PLR to the protected destination and compute an SR explicit path | |||
from P to Q when they are not adjacent. Such properties will be used | from P to Q when they are not adjacent. Such properties will be used | |||
in Section 6 to compute the TI-LFA repair list. | in Section 5 to compute the TI-LFA repair list. | |||
5.1. Extended P-Space property computation for a resource X, over post- | 4.1. Extended P-Space Property Computation for a Resource X over Post- | |||
convergence paths | Convergence Paths | |||
The objective is to determine which nodes on the post-convergence | The objective is to determine which nodes on the post-convergence | |||
path from the PLR R to the destination D are in the extended P-space | path from the PLR R to the destination D are in the extended P-space | |||
of R with regard to resource X (where X can be a link or a set of | of R with regard to resource X (where X can be a link or a set of | |||
links adjacent to the PLR, or a neighbor node of the PLR). | links adjacent to the PLR or a neighbor node of the PLR). | |||
This can be found by: | This can be found by: | |||
* Excluding neighbors which are not on the post-convergence path | * excluding neighbors that are not on the post-convergence path when | |||
when computing P'(R,X) | computing P'(R,X), then | |||
* Then, intersecting the set of nodes belonging to the post- | * intersecting the set of nodes belonging to the post-convergence | |||
convergence path from R to D, assuming the failure of X, with | path from R to D, assuming the failure of X, with P'(R, X). | |||
P'(R, X). | ||||
5.2. Q-Space property computation for a resource X, over post- | 4.2. Q-Space Property Computation for a Resource X over Post- | |||
convergence paths | Convergence Paths | |||
The goal is to determine which nodes on the post-convergence path | The goal is to determine which nodes on the post-convergence path | |||
from the Point of Local Repair (PLR) R to the destination D are in | from the Point of Local Repair (PLR) R to the destination D are in | |||
the Q-Space of destination D with regard to resource X (where X can | the Q-Space of destination D with regard to resource X (where X can | |||
be a link or a set of links adjacent to the PLR, or a neighbor node | be a link or a set of links adjacent to the PLR, or a neighbor node | |||
of the PLR). | of the PLR). | |||
This can be found by intersecting the set of nodes belonging to the | This can be found by intersecting the set of nodes belonging to the | |||
post-convergence path from R to D, assuming the failure of X, with | post-convergence path from R to D, assuming the failure of X, with | |||
Q(D, X). | Q(D, X). | |||
5.3. Scaling considerations when computing Q-Space | 4.3. Scaling Considerations When Computing Q-Space | |||
[RFC7490] raises scaling concerns about computing a Q-Space per | [RFC7490] raises scaling concerns about computing a Q-Space per | |||
destination. Similar concerns may affect TI-LFA computation if an | destination. Similar concerns may affect TI-LFA computation if an | |||
implementation tries to compute a reverse Shortest Path Tree | implementation tries to compute a reverse Shortest Path Tree (SPT) | |||
([RFC7490]) for every destination in the network to determine the | [RFC7490] for every destination in the network to determine the | |||
Q-Space. It will be up to each implementation to determine the good | Q-Space. It will be up to each implementation to determine the good | |||
tradeoff between scaling and accuracy of the optimization. | tradeoff between scaling and accuracy of the optimization. | |||
6. TI-LFA Repair path | 5. TI-LFA Repair Path | |||
The TI-LFA repair path consists of an outgoing interface and a list | The TI-LFA repair path consists of an outgoing interface and a list | |||
of segments (repair list (RL)) to insert on the SR header in | of segments (a Repair List (RL)) to insert on the SR header in | |||
accordance with the dataplane used. The repair list encodes the | accordance with the dataplane used. The repair list encodes the | |||
explicit, and possibly post-convergence, path to the destination, | explicit, and possibly post-convergence, path to the destination, | |||
which avoids the protected resource X and, at the same time, is | which avoids the protected resource X and, at the same time, is | |||
guaranteed to be loop-free irrespective of the state of FIBs along | guaranteed to be loop-free irrespective of the state of FIBs along | |||
the nodes belonging to the explicit path as long as the states of the | the nodes belonging to the explicit path as long as the states of the | |||
FIBs are programmed according to a link-state IGP. Thus, there is no | FIBs are programmed according to a link-state IGP. Thus, there is no | |||
need for any co-ordination or message exchange between the PLR and | need for any coordination or message exchange between the PLR and any | |||
any other router in the network. | other router in the network. | |||
The TI-LFA repair path is found by intersecting P(S,X) and Q(D,X) | The TI-LFA repair path is found by intersecting P(S,X) and Q(D,X) | |||
with the post-convergence path to D and computing the explicit SR- | with the post-convergence path to D and computing the explicit SR- | |||
based path EP(P, Q) from a node P in P(S,X) to a node Q in Q(D,X) | based path EP(P, Q) from a node P in P(S,X) to a node Q in Q(D,X) | |||
when these nodes are not adjacent along the post convergence path. | when these nodes are not adjacent along the post-convergence path. | |||
The TI-LFA repair list is expressed generally as (Node-SID(P), EP(P, | The TI-LFA repair list is expressed generally as (Node-SID(P), EP(P, | |||
Q)). | Q)). | |||
S ------- N1 ----------- D | S ------- N1 ----------- D | |||
*\ | \ | | *\ | \ | | |||
* \ | \ | | * \ | \ | | |||
* \ | \ | | * \ | \ | | |||
* N2-----R1****R2 *** R3 | * N2-----R1****R2 *** R3 | |||
* * | * * | |||
N3 ********* | N3 ********* | |||
***** : link with high metric (1k) | ***** : link with high metric (1k) | |||
----- : link with metric 1 | ----- : link with metric 1 | |||
Figure 1: Sample topology with TI-LFA | Figure 1: Sample Topology with TI-LFA | |||
As an example, in Figure 1, the focus is on the TI-LFA backup from S | As an example, in Figure 1, the focus is on the TI-LFA backup from S | |||
to D, considering the failure of node N1. | to D, considering the failure of node N1. | |||
* First, P(S, N1) is computed and results in [N3, N2, R1]. | * First, P(S, N1) is computed and results in [N3, N2, R1]. | |||
* Then, Q(D, N1) is computed and results in [R3]. | * Then, Q(D, N1) is computed and results in [R3]. | |||
* The expected post-convergence path from S to D considering the | * The expected post-convergence path from S to D considering the | |||
failure of N1 is <N2 -> R1 -> R2 -> R3 -> D> (we are naming it | failure of N1 is <N2 -> R1 -> R2 -> R3 -> D> (we are naming it | |||
PCPath in this example). | "PCPath" in this example). | |||
* P(S, N1) intersection with PCPath is [N2, R1], R1 being the deeper | * P(S, N1) intersection with PCPath is [N2, R1]. With R1 being the | |||
downstream node in PCPath, it can be assumed to be used as P node | deeper downstream node in PCPath, it can be assumed to be used as | |||
(this is an example and an implementation could use a different | a P node (this is an example, and an implementation could use a | |||
strategy to choose the P node). | different strategy to choose the P node). | |||
* Q(D, N1) intersection with PCPath is [R3], so R3 is picked as Q | * Q(D, N1) intersection with PCPath is [R3], so R3 is picked as a Q | |||
node. An SR explicit path is then computed from R1 (P node) to R3 | node. An SR-explicit path is then computed from R1 (P node) to R3 | |||
(Q node) following PCPath (R1 -> R2 -> R3): <Adj-Sid(R1-R2), Adj- | (Q node) following PCPath (R1 -> R2 -> R3): <Adj-Sid(R1-R2), Adj- | |||
Sid(R2-R3)>. | Sid(R2-R3)>. | |||
As a result, the TI-LFA repair list of S for destination D | As a result, the TI-LFA repair list of S for destination D | |||
considering the failure of node N1 is: <Node-SID(R1), Adj-Sid(R1-R2), | considering the failure of node N1 is: <Node-SID(R1), Adj-Sid(R1-R2), | |||
Adj-Sid(R20R3)>. | Adj-Sid(R2-R3)>. | |||
Most often, the TI-LFA repair list has a simpler form, as described | Most often, the TI-LFA repair list has a simpler form, as described | |||
in the following sections. Appendix B provides statistics for the | in the following sections. Appendix B provides statistics for the | |||
number of SIDs in the explicit path to protect against various | number of SIDs in the explicit path to protect against various | |||
failures. | failures. | |||
6.1. FRR path using a direct neighbor | 5.1. FRR Path Using a Direct Neighbor | |||
When a direct neighbor is in P(S,X) and Q(D,x) and the link to that | When a direct neighbor is in P(S,X) and Q(D,x), and the link to that | |||
direct neighbor is on the post-convergence path, the outgoing | direct neighbor is on the post-convergence path, the outgoing | |||
interface is set to that neighbor and the repair segment list is | interface is set to that neighbor and the repair segment list is | |||
empty. | empty. | |||
This is comparable to a post-convergence LFA FRR repair. | This is comparable to a post-convergence LFA FRR repair. | |||
6.2. FRR path using a PQ node | 5.2. FRR Path Using a PQ Node | |||
When a remote node R is in P(S,X) and Q(D,x) and on the post- | When a remote node R is in P(S,X) and Q(D,x) and on the post- | |||
convergence path, the repair list is made of a single node segment to | convergence path, the repair list is made of a single node segment to | |||
R and the outgoing interface is set to the outgoing interface used to | R, and the outgoing interface is set to the outgoing interface used | |||
reach R. | to reach R. | |||
This is comparable to a post-convergence RLFA repair tunnel. | This is comparable to a post-convergence RLFA repair tunnel. | |||
6.3. FRR path using a P node and Q node that are adjacent | 5.3. FRR Path Using a P Node and Q Node That Are Adjacent | |||
When a node P is in P(S,X) and a node Q is in Q(D,x) and both are on | When a node P is in P(S,X) and a node Q is in Q(D,x), and both are on | |||
the post-convergence path and both are adjacent to each other, the | the post-convergence path and are adjacent to each other, the repair | |||
repair list is made of two segments: A node segment to P (to be | list is made of two segments: a node segment to P (to be processed | |||
processed first), followed by an adjacency segment from P to Q. | first), followed by an adjacency segment from P to Q. | |||
This is comparable to a post-convergence DLFA (LFA with directed | This is comparable to a post-convergence DLFA (LFA with directed | |||
forwarding) repair tunnel. | forwarding) repair tunnel. | |||
6.4. Connecting distant P and Q nodes along post-convergence paths | 5.4. Connecting Distant P and Q Nodes Along Post-Convergence Paths | |||
In some cases, there is no adjacent P and Q node along the post- | In some cases, there is no adjacent P and Q node along the post- | |||
convergence path. As mentioned in Section 4, a list of adjacency | convergence path. As mentioned in Section 3, a list of adjacency | |||
SIDs can be used to encode the path between P and Q. However, the | SIDs can be used to encode the path between P and Q. However, the | |||
PLR can perform additional computations to compute a list of segments | PLR can perform additional computations to compute a list of segments | |||
that represent a loop-free path from P to Q. How these computations | that represent a loop-free path from P to Q. How these computations | |||
are done is out of scope of this document and is left to | are done is out of scope of this document and is left to | |||
implementation. | implementation. | |||
7. Building TI-LFA repair lists for SR Segments | 6. Building TI-LFA Repair Lists for SR Segments | |||
The following sections describe how to build the repair lists using | The following sections describe how to build the repair lists using | |||
the terminology defined in [RFC8402]. The procedures described in | the terminology defined in [RFC8402]. The procedures described in | |||
this section are equally applicable to both SR-MPLS and SRv6 | this section are equally applicable to both the Segment Routing over | |||
dataplane, while the dataplane-specific considerations are described | MPLS (SR-MPLS) and the Segment Routing over IPv6 (SRv6) dataplane, | |||
in Section 8. | while the dataplane-specific considerations are described in | |||
Section 7. | ||||
In this section, the process by which a protecting router S handles | This section explains the process by which a protecting router S | |||
the active segment of a packet upon the failure of its primary | handles the active segment of a packet upon the failure of its | |||
outgoing interface for the packet, S-F, is explained. The failure of | primary outgoing interface for the packet S-F. The failure of the | |||
the primary outgoing interface may occur due to various triggers, | primary outgoing interface may occur due to various triggers, such as | |||
such as link failure, neighbor node failure, and others. | link failure, neighbor node failure, and others. | |||
7.1. The active segment is a node segment | 6.1. The Active Segment Is a Node Segment | |||
The active segment MUST be kept on the SR header unchanged and the | The active segment MUST be kept on the SR header unchanged and the | |||
repair list MUST be added. The active segment becomes the first | repair list MUST be added. The active segment becomes the first | |||
segment after the repair list. The way the repair list is added | segment after the repair list. The way the repair list is added | |||
depends on the dataplane used (see Section 8). | depends on the dataplane used (see Section 7). | |||
7.2. The active segment is an adjacency segment | 6.2. The Active Segment Is an Adjacency Segment | |||
The FRR behavior applied by S for any packet received with an active | This section defines the FRR behavior applied by S for any packet | |||
adjacency segment S-F, for which protection was enabled, is defined | received with an active adjacency segment S-F for which protection | |||
here. Since protection has been enabled for the segment S-F and | was enabled. Since protection has been enabled for the segment S-F | |||
signaled in the IGP (for instance, using protocol extensions from | and signaled in the IGP (for instance, using protocol extensions from | |||
[RFC8667] and [RFC8665]), a calculator of any SR policy utilizing | [RFC8667] and [RFC8665]), a calculator of any SR policy utilizing | |||
this segment is aware that it may be transiently rerouted out of S-F | this segment is aware that it may be transiently rerouted out of S-F | |||
in the event of an S-F failure. | in the event of an S-F failure. | |||
The simplest approach for link protection of an adjacency segment S-F | The simplest approach for link protection of an adjacency segment S-F | |||
is to create a repair list that will carry the traffic to F. To do | is to create a repair list that will carry the traffic to F. To do | |||
so, one or more “PUSH” operations are performed. If the repair list, | so, one or more "PUSH" operations are performed. If the repair list, | |||
while avoiding S-F, terminates on F, S only pushes segments of the | while avoiding S-F, terminates on F, S only pushes segments of the | |||
repair list. Otherwise, S pushes a node segment of F, followed by | repair list. Otherwise, S pushes a node segment of F, followed by | |||
the segments of the repair list. For details on the "NEXT" and | the segments of the repair list. For details on the "NEXT" and | |||
"PUSH" operations, refer to [RFC8402]. | "PUSH" operations, refer to [RFC8402]. | |||
This method, which merges back the traffic at the remote end of the | This method, which merges back the traffic at the remote end of the | |||
adjacency segment, has the advantage of keeping as much as possible | adjacency segment, has the advantage of keeping as much traffic as | |||
the traffic on the pre-failure path. When SR policies are involved | possible on the pre-failure path. When SR policies are involved and | |||
and strict compliance with the policy is required, an end-to-end | strict compliance with the policy is required, an end-to-end | |||
protection (beyond the scope of this document) should be preferred | protection (beyond the scope of this document) should be preferred | |||
over the local repair mechanism described above. | over the local repair mechanism described above. | |||
Note, however, that when the SR source node is using traffic | Note, however, that when the SR source node is using Traffic | |||
engineering (TE), it will generally not be possible for the PLR to | Engineering (TE), it will generally not be possible for the PLR to | |||
know what post-convergence path will be selected by the source node | know what post-convergence path will be selected by the source node | |||
once it detects the failure, since computation of the TE path is a | once it detects the failure, since computation of the TE path is a | |||
local matter that depends on constraints that may not be known at the | local matter that depends on constraints that may not be known at the | |||
PLR. Therefore, no method applied at the PLR can guarantee | PLR. Therefore, no method applied at the PLR can guarantee | |||
protection will follow the post-convergence path. | protection will follow the post-convergence path. | |||
The case where the active segment is followed by another adjacency | The case where the active segment is followed by another adjacency | |||
segment is distinguished from the case where it is followed by a node | segment is distinguished from the case where it is followed by a node | |||
segment. Repair techniques for the respective cases are provided in | segment. Repair techniques for the respective cases are provided in | |||
the following subsections. | the following subsections. | |||
7.2.1. Protecting [Adjacency, Adjacency] segment lists | 6.2.1. Protecting [Adjacency, Adjacency] Segment Lists | |||
If the next segment in the list is an Adjacency segment, then the | If the next segment in the list is an Adjacency segment, then the | |||
packet has to be conveyed to F. | packet has to be conveyed to F. | |||
To do so, S MUST apply a "NEXT" operation on Adj-Sid(S-F) and then | To do so, S MUST apply a "NEXT" operation on Adj-Sid(S-F) and then | |||
one or more “PUSH” operations. If the repair list, while avoiding | one or more "PUSH" operations. If the repair list, while avoiding | |||
S-F, terminates on F, S only pushes the segments of the repair list. | S-F, terminates on F, S only pushes the segments of the repair list. | |||
Otherwise, S pushes a node segment of F, followed by the segments of | Otherwise, S pushes a node segment of F, followed by the segments of | |||
the repair list. For details on the "NEXT" and "PUSH" operations, | the repair list. For details on the "NEXT" and "PUSH" operations, | |||
refer to [RFC8402]. | refer to [RFC8402]. | |||
Upon failure of S-F, a packet reaching S with a segment list matching | Upon failure of S-F, a packet reaching S with a segment list matching | |||
[adj-sid(S-F),adj-sid(F-M),...] will thus leave S with a segment list | [adj-sid(S-F),adj-sid(F-M),...] will thus leave S with a segment list | |||
matching [RL(F),node(F),adj-sid(F-M),...], where RL(F) is the repair | matching [RL(F),node(F),adj-sid(F-M),...], where RL(F) is the repair | |||
list for destination F. | list for destination F. | |||
7.2.2. Protecting [Adjacency, Node] segment lists | 6.2.2. Protecting [Adjacency, Node] Segment Lists | |||
If the next segment in the stack is a node segment, say for node T, | If the next segment in the stack is a node segment, say for node T, | |||
the segment list on the packet matches [adj-sid(S-F),node(T),...]. | the segment list on the packet matches [adj-sid(S-F),node(T),...]. | |||
In this case, S MUST apply a "NEXT" operation on the Adjacency | In this case, S MUST apply a "NEXT" operation on the Adjacency | |||
segment related to S-F, followed by a "PUSH" of a repair list | segment related to S-F, followed by a "PUSH" of a repair list | |||
redirecting the traffic to a node Q, whose path to node segment T is | redirecting the traffic to a node Q, whose path to node segment T is | |||
not affected by the failure. | not affected by the failure. | |||
Upon failure of S-F, packets reaching S with a segment list matching | Upon failure of S-F, packets reaching S with a segment list matching | |||
[adj-sid(S-F), node(T), ...], would leave S with a segment list | [adj-sid(S-F), node(T), ...] would leave S with a segment list | |||
matching [RL(Q),node(T), ...]. | matching [RL(Q),node(T), ...]. | |||
8. Dataplane specific considerations | 7. Dataplane-Specific Considerations | |||
8.1. MPLS dataplane considerations | 7.1. MPLS Dataplane Considerations | |||
MPLS dataplane for Segment Routing is described in [RFC8660]. | The MPLS dataplane for Segment Routing (SR) is described in | |||
[RFC8660]. | ||||
The following dataplane behaviors apply when creating a repair list | The following dataplane behaviors apply when creating a repair list | |||
using an MPLS dataplane: | using an MPLS dataplane: | |||
1. If the active segment is a node segment that has been signaled | 1. If the active segment is a node segment that has been signaled | |||
with penultimate hop popping and the repair list ends with an | with penultimate hop popping, and the repair list ends with an | |||
adjacency segment terminating on a node that advertised NEXT | adjacency segment terminating on a node that advertised the | |||
operation [RFC8402] of the active segment, then the active | "NEXT" operation [RFC8402] of the active segment, then the active | |||
segment MUST be popped before pushing the repair list. | segment MUST be popped before pushing the repair list. | |||
2. If the active segment is a node segment but the other conditions | 2. If the active segment is a node segment, but the other conditions | |||
in 1. are not met, the active segment MUST be popped then pushed | in 1. are not met, the active segment MUST be popped and then | |||
again with a label value computed according to the Segment | pushed again with a label value computed according to the Segment | |||
Routing Global Block of Q, where Q is the endpoint of the repair | Routing Global Block (SRGB) of Q, where Q is the endpoint of the | |||
list. Finally, the repair list MUST be pushed. | repair list. Finally, the repair list MUST be pushed. | |||
8.2. SRv6 dataplane considerations | 7.2. SRv6 Dataplane Considerations | |||
SRv6 dataplane and programming instructions are described | SRv6 dataplane and programming instructions are described | |||
respectively in [RFC8754] and [RFC8986]. | respectively in [RFC8754] and [RFC8986]. | |||
The TI-LFA path computation algorithm is the same as in the SR-MPLS | The TI-LFA path computation algorithm is the same as in the SR-MPLS | |||
dataplane. Note however that the Adjacency SIDs are typically | dataplane. Note, however, that the Adjacency SIDs are typically | |||
globally routed. In such case, there is no need for preceding an | globally routed. In such a case, there is no need for preceding an | |||
adjacency SID with a Prefix-SID [RFC8402] and the resulting repair | adjacency SID with a Prefix-SID [RFC8402], and the resulting repair | |||
list is likely shorter. | list is likely shorter. | |||
If the traffic is protected at a Transit Node, then an SRv6 SID list | If the traffic is protected at a Transit Node, then an SRv6 SID list | |||
is added on the packet to apply the repair list. The addition of the | is added on the packet to apply the repair list. The addition of the | |||
repair list follows the headend behaviors as specified in section 5 | repair list follows the head-end behaviors as specified in Section 5 | |||
of [RFC8986]. | of [RFC8986]. | |||
If the traffic is protected at an SR Segment Endpoint Node, first the | If the traffic is protected at an SR Segment Endpoint Node, first the | |||
Segment Endpoint packet processing is executed. Then the packet is | Segment Endpoint packet processing is executed. Then, the packet is | |||
protected as if its were a transit packet. | protected as if it were a transit packet. | |||
9. TI-LFA and SR algorithms | 8. TI-LFA and SR Algorithms | |||
SR allows an operator to bind an algorithm to a prefix-SID (as | SR allows an operator to bind an algorithm to a Prefix-SID (as | |||
defined in [RFC8402]. The algorithm value dictates how the path to | defined in [RFC8402]). The algorithm value dictates how the path to | |||
the prefix is computed. The SR default algorithm is known has the | the prefix is computed. The SR default algorithm is known as the | |||
"Shortest Path" algorithm. The SR default algorithm allows an | "Shortest Path" algorithm. The SR default algorithm allows an | |||
operator to override the IGP shortest path by using local policies. | operator to override the IGP shortest path by using local policies. | |||
When TI-LFA uses Node-SIDs associated with the default algorithm, | When TI-LFA uses Node-SIDs associated with the default algorithm, | |||
there is no guarantee that the path will be loop-free as a local | there is no guarantee that the path will be loop-free, as a local | |||
policy may have overriden the expected IGP path. As the local | policy may have overridden the expected IGP path. As the local | |||
policies are defined by the operator, it becomes the responsibility | policies are defined by the operator, it becomes the responsibility | |||
of this operator to ensure that the deployed policies do not affect | of this operator to ensure that the deployed policies do not affect | |||
the TI-LFA deployment. It should be noted that such situation can | the TI-LFA deployment. It should be noted that such a situation can | |||
already happen today with existing mechanisms as remote LFA. | already happen today with existing mechanisms such as RLFA. | |||
[RFC9350] defines a flexible algorithm (FlexAlgo) framework to be | [RFC9350] defines a Flexible Algorithm framework to be associated | |||
associated with Prefix-SIDs. FlexAlgo allows a user to associate a | with Prefix-SIDs. A Flexible Algorithm allows a user to associate a | |||
constrained path to a Prefix-SID rather than using the regular IGP | constrained path to a Prefix-SID rather than using the regular IGP | |||
shortest path. An implementation MAY support TI-LFA to protect Node- | shortest path. An implementation MAY support TI-LFA to protect Node- | |||
SIDs associated with a Flex Algo. In such a case, rather than | SIDs associated with a Flexible Algorithm. In such a case, rather | |||
computing the expected post-convergence path based on the regular | than computing the expected post-convergence path based on the | |||
SPF, an implementation SHOULD use the constrained SPF algorithm bound | regular SPF, an implementation SHOULD use the constrained SPF | |||
to the Flex Algo (using the Flex Algo Definition) instead of the | algorithm bound to the Flexible Algorithm (using the Flexible | |||
regular Dijkstra in all the SPF/rSPF computations that are occurring | Algorithm Definition) instead of the regular Dijkstra in all the SPF/ | |||
during the TI-LFA computation. This includes the computation of the | rSPF computations that are occurring during the TI-LFA computation. | |||
P-Space and Q-Space as well as the post-convergence path. | This includes the computation of the P-Space and Q-Space as well as | |||
Furthermore, the implementation SHOULD only use Node-SIDs/Adj-SIDs | the post-convergence path. Furthermore, the implementation SHOULD | |||
bound to the Flex Algo and/or unprotected Adj-SIDs of the regular SPF | only use Node-SIDs/Adj-SIDs bound to the Flexible Algorithm and/or | |||
to build the repair list. The use of regular Dijkstra for the TI-LFA | unprotected Adj-SIDs of the regular SPF to build the repair list. | |||
computation or building of the repair path using SIDs other than | The use of regular Dijkstra for the TI-LFA computation or for | |||
those recommended does not ensure that the traffic going over TI-LFA | building the repair path using SIDs other than those recommended does | |||
repair path during the fast-reroute period is honoring the Flex Algo | not ensure that the traffic going over the TI-LFA repair path during | |||
constraints. | the FRR period is honoring the Flexible Algorithm constraints. | |||
10. Usage of Adjacency segments in the repair list | 9. Usage of Adjacency Segments in the Repair List | |||
The repair list of segments computed by TI-LFA may contain one or | The repair list of segments computed by TI-LFA may contain one or | |||
more adjacency segments. An adjacency segment may be protected or | more adjacency segments. An adjacency segment may be protected or | |||
not protected. | not protected. | |||
S --- R2 --- R3 ---- R4 --- R5 --- D | S --- R2 --- R3 ---- R4 --- R5 --- D | |||
* | \ * | * | \ * | |||
* | \ * | * | \ * | |||
R7 ** R8 | R7 ** R8 | |||
* | | * | | |||
* | | * | | |||
R9 -- R10 | R9 -- R10 | |||
Figure 2 | Figure 2 | |||
In Figure 2, all the metrics are equal to 1 except | In Figure 2, all the metrics are equal to 1 except | |||
R2-R7,R7-R8,R8-R4,R7-R9 which have a metric of 1000. Considering R2 | R2-R7,R7-R8,R8-R4,R7-R9, which have a metric of 1000. Considering R2 | |||
as a PLR to protect against the failure of node R3 for the traffic | as a PLR to protect against the failure of node R3 for the traffic | |||
S->D, the repair list computed by R2 will be [adj-sid(R7-R8),adj- | S->D, the repair list computed by R2 will be [adj-sid(R7-R8),adj- | |||
sid(R8-R4)] and the outgoing interface will be to R7. If R3 fails, | sid(R8-R4)], and the outgoing interface will be to R7. If R3 fails, | |||
R2 pushes the repair list onto the incoming packet to D. During the | R2 pushes the repair list onto the incoming packet to D. During the | |||
FRR, if R7-R8 fails and if TI-LFA has picked a protected adjacency | FRR, if R7-R8 fails and if TI-LFA has picked a protected adjacency | |||
segment for adj-sid(R7-R8), R7 will push an additional repair list | segment for adj-sid(R7-R8), R7 will push an additional repair list | |||
onto the packet following the procedures defined in Section 7. | onto the packet following the procedures defined in Section 6. | |||
To avoid the possibility of this double FRR activation, an | To avoid the possibility of this double FRR activation, an | |||
implementation of TI-LFA MAY pick only non protected adjacency | implementation of TI-LFA MAY pick only non-protected adjacency | |||
segments when building the repair list. However, this is important | segments when building the repair list. However, it is important to | |||
to note that FRR in general is intended to protect for a single pre- | note that FRR in general is intended to protect for a single pre- | |||
planned failure. If the failure that happens is worse than expected | planned failure. If the failure that happens is worse than expected | |||
or multiple failures happen, FRR is not guaranteed to work. In such | or multiple failures happen, FRR is not guaranteed to work. In such | |||
a case, fast IGP convergence remains important to restore traffic as | a case, fast IGP convergence remains important to restore traffic as | |||
quickly as possible. | quickly as possible. | |||
11. Security Considerations | 10. Security Considerations | |||
The techniques described in this document are internal | The techniques described in this document are internal | |||
functionalities to a router that can guarantee an upper bound on the | functionalities to a router that can guarantee an upper bound on the | |||
time taken to restore traffic flow upon the failure of a directly | time taken to restore traffic flow upon the failure of a directly | |||
connected link or node. As these techniques steer traffic to the | connected link or node. As these techniques steer traffic to the | |||
post-convergence path as quickly as possible, this serves to minimize | post-convergence path as quickly as possible, this serves to minimize | |||
the disruption associated with a local failure which can be seen as a | the disruption associated with a local failure, which can be seen as | |||
modest security enhancement. The protection mechanisms does not | a modest security enhancement. The protection mechanism does not | |||
protect external destinations, but rather provides quick restoration | protect external destinations, but rather provides quick restoration | |||
for destination that are internal to a routing domain. | for destinations that are internal to a routing domain. | |||
Security considerations described in [RFC5286] and [RFC7490] apply to | ||||
this document. Similarly, as the solution described in the document | ||||
is based on Segment Routing technology, reader should be aware of the | ||||
security considerations related to this technology ([RFC8402]) and | ||||
its dataplane instantiations ([RFC8660], [RFC8754] and [RFC8986]). | ||||
However, this document does not introduce additional security | ||||
concern. | ||||
12. IANA Considerations | ||||
No requirements for IANA | ||||
13. Contributors | ||||
In addition to the authors listed on the front page, the following | ||||
co-authors have also contributed to this document: | ||||
* Francois Clad, Cisco Systems | ||||
* Pablo Camarillo, Cisco Systems | The security considerations described in [RFC5286] and [RFC7490] | |||
apply to this document. Similarly, as the solution described in this | ||||
document is based on SR technology, the reader should be aware of the | ||||
security considerations related to this technology (see [RFC8402]) | ||||
and its dataplane instantiations (see [RFC8660], [RFC8754], and | ||||
[RFC8986]). However, this document does not introduce additional | ||||
security concerns. | ||||
14. Acknowledgments | 11. IANA Considerations | |||
The authors would like to thank Les Ginsberg, Stewart Bryant, | This document has no IANA actions. | |||
Alexander Vainsthein, Chris Bowers, Shraddha Hedge, Wes Hardaker, | ||||
Gunter Van de Velde and John Scudder for their valuable comments. | ||||
15. References | 12. References | |||
15.1. Normative References | 12.1. Normative References | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC7916] Litkowski, S., Ed., Decraene, B., Filsfils, C., Raza, K., | [RFC7916] Litkowski, S., Ed., Decraene, B., Filsfils, C., Raza, K., | |||
Horneffer, M., and P. Sarkar, "Operational Management of | Horneffer, M., and P. Sarkar, "Operational Management of | |||
Loop-Free Alternates", RFC 7916, DOI 10.17487/RFC7916, | Loop-Free Alternates", RFC 7916, DOI 10.17487/RFC7916, | |||
July 2016, <https://www.rfc-editor.org/info/rfc7916>. | July 2016, <https://www.rfc-editor.org/info/rfc7916>. | |||
skipping to change at page 17, line 45 ¶ | skipping to change at line 774 ¶ | |||
Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header | Matsushima, S., and D. Voyer, "IPv6 Segment Routing Header | |||
(SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020, | (SRH)", RFC 8754, DOI 10.17487/RFC8754, March 2020, | |||
<https://www.rfc-editor.org/info/rfc8754>. | <https://www.rfc-editor.org/info/rfc8754>. | |||
[RFC8986] Filsfils, C., Ed., Camarillo, P., Ed., Leddy, J., Voyer, | [RFC8986] Filsfils, C., Ed., Camarillo, P., Ed., Leddy, J., Voyer, | |||
D., Matsushima, S., and Z. Li, "Segment Routing over IPv6 | D., Matsushima, S., and Z. Li, "Segment Routing over IPv6 | |||
(SRv6) Network Programming", RFC 8986, | (SRv6) Network Programming", RFC 8986, | |||
DOI 10.17487/RFC8986, February 2021, | DOI 10.17487/RFC8986, February 2021, | |||
<https://www.rfc-editor.org/info/rfc8986>. | <https://www.rfc-editor.org/info/rfc8986>. | |||
15.2. Informative References | 12.2. Informative References | |||
[I-D.bashandy-rtgwg-segment-routing-uloop] | ||||
Bashandy, A., Filsfils, C., Litkowski, S., Decraene, B., | ||||
Francois, P., and P. Psenak, "Loop avoidance using Segment | ||||
Routing", Work in Progress, Internet-Draft, draft- | ||||
bashandy-rtgwg-segment-routing-uloop-17, 29 June 2024, | ||||
<https://datatracker.ietf.org/doc/html/draft-bashandy- | ||||
rtgwg-segment-routing-uloop-17>. | ||||
[RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for | [RFC5286] Atlas, A., Ed. and A. Zinin, Ed., "Basic Specification for | |||
IP Fast Reroute: Loop-Free Alternates", RFC 5286, | IP Fast Reroute: Loop-Free Alternates", RFC 5286, | |||
DOI 10.17487/RFC5286, September 2008, | DOI 10.17487/RFC5286, September 2008, | |||
<https://www.rfc-editor.org/info/rfc5286>. | <https://www.rfc-editor.org/info/rfc5286>. | |||
[RFC5714] Shand, M. and S. Bryant, "IP Fast Reroute Framework", | [RFC5714] Shand, M. and S. Bryant, "IP Fast Reroute Framework", | |||
RFC 5714, DOI 10.17487/RFC5714, January 2010, | RFC 5714, DOI 10.17487/RFC5714, January 2010, | |||
<https://www.rfc-editor.org/info/rfc5714>. | <https://www.rfc-editor.org/info/rfc5714>. | |||
skipping to change at page 19, line 21 ¶ | skipping to change at line 833 ¶ | |||
[RFC9256] Filsfils, C., Talaulikar, K., Ed., Voyer, D., Bogdanov, | [RFC9256] Filsfils, C., Talaulikar, K., Ed., Voyer, D., Bogdanov, | |||
A., and P. Mattes, "Segment Routing Policy Architecture", | A., and P. Mattes, "Segment Routing Policy Architecture", | |||
RFC 9256, DOI 10.17487/RFC9256, July 2022, | RFC 9256, DOI 10.17487/RFC9256, July 2022, | |||
<https://www.rfc-editor.org/info/rfc9256>. | <https://www.rfc-editor.org/info/rfc9256>. | |||
[RFC9350] Psenak, P., Ed., Hegde, S., Filsfils, C., Talaulikar, K., | [RFC9350] Psenak, P., Ed., Hegde, S., Filsfils, C., Talaulikar, K., | |||
and A. Gulko, "IGP Flexible Algorithm", RFC 9350, | and A. Gulko, "IGP Flexible Algorithm", RFC 9350, | |||
DOI 10.17487/RFC9350, February 2023, | DOI 10.17487/RFC9350, February 2023, | |||
<https://www.rfc-editor.org/info/rfc9350>. | <https://www.rfc-editor.org/info/rfc9350>. | |||
Appendix A. Advantages of using the expected post-convergence path | [SR-LOOP] Bashandy, A., Filsfils, C., Litkowski, S., Decraene, B., | |||
during FRR | Francois, P., and P. Psenak, "Loop avoidance using Segment | |||
Routing", Work in Progress, Internet-Draft, draft- | ||||
bashandy-rtgwg-segment-routing-uloop-17, 29 June 2024, | ||||
<https://datatracker.ietf.org/doc/html/draft-bashandy- | ||||
rtgwg-segment-routing-uloop-17>. | ||||
[RFC7916] raised several operational considerations when using LFA or | Appendix A. Advantages of Using the Expected Post-Convergence Path | |||
remote LFA. [RFC7916] Section 3 presents a case where a high | During FRR | |||
bandwidth link between two core routers is protected through a PE | ||||
router connected with low bandwidth links. In such a case, | [RFC7916] raises several operational considerations when using LFA or | |||
RLFA. Section 3 of [RFC7916] presents a case where a high bandwidth | ||||
link between two core routers is protected through a Provider Edge | ||||
(PE) router connected with low bandwidth links. In such a case, | ||||
congestion may happen when the FRR backup path is activated. | congestion may happen when the FRR backup path is activated. | |||
[RFC7916] introduces a local policy framework to let the operator | [RFC7916] introduces a local policy framework to let the operator | |||
tuning manually the best alternate election based on its own | tuning manually the best alternate election based on its own | |||
requirements. | requirements. | |||
From a network capacity planning point of view, it is often assumed | From a network capacity planning point of view, it is often assumed | |||
for simplicity that if a link L fails on a particular node X, the | for simplicity that if a link L fails on a particular node X, the | |||
bandwidth consumed on L will be spread over some of the remaining | bandwidth consumed on L will be spread over some of the remaining | |||
links of X. The remaining links to be used are determined by the IGP | links of X. The remaining links to be used are determined by the IGP | |||
routing considering that the link L has failed (we assume that the | routing considering that the link L has failed (we assume that the | |||
traffic uses the post-convergence path starting from the node X). In | traffic uses the post-convergence path starting from the node X). In | |||
Figure 3, we consider a network with all metrics equal to 1 except | Figure 3, we consider a network with all metrics equal to 1 except | |||
the metrics on links used by PE1, PE2 and PE3 which are 1000. An | the metrics on links used by PE1, PE2, and PE3, which are 1000. An | |||
easy network capacity planning method is to consider that if the link | easy network capacity planning method is to consider that if the link | |||
L (X-B) fails, the traffic actually flowing through L will be spread | L (X-B) fails, the traffic actually flowing through L will be spread | |||
over the remaining links of X (X-H, X-D, X-A). Considering the IGP | over the remaining links of X (X-H, X-D, X-A). Considering the IGP | |||
metrics, only X-H and X-D can be used in reality to carry the traffic | metrics, only X-H and X-D can be used in reality to carry the traffic | |||
flowing through the link L. As a consequence, the bandwidth of links | flowing through the link L. As a consequence, the bandwidth of links | |||
X-H and X-D is sized according to this rule. We should observe that | X-H and X-D is sized according to this rule. We should observe that | |||
this capacity planning policy works, however it is not fully | this capacity planning policy works; however, it is not fully | |||
accurate. | accurate. | |||
In Figure 3, considering that the source of traffic is only from PE1 | In Figure 3, considering that the source of traffic is only from PE1 | |||
and PE4, when the link L fails, depending on the convergence speed of | and PE4, when the link L fails, depending on the convergence speed of | |||
the nodes, X may reroute its forwarding entries to the remote PEs | the nodes, X may reroute its forwarding entries to the remote PEs | |||
onto X-H or X-D; however in a similar timeframe, PE1 will also | onto X-H or X-D; however, in a similar timeframe, PE1 will also | |||
reroute a subset of its traffic (the subset destined to PE2) out of | reroute a subset of its traffic (the subset destined to PE2) out of | |||
its nominal path reducing the quantity of traffic received by X. The | its nominal path, reducing the quantity of traffic received by X. | |||
capacity planning rule presented previously has the drawback of | The capacity planning rule presented previously has the drawback of | |||
oversizing the network, however it allows to prevent any transient | oversizing the network; however, it allows for preventing any | |||
congestion (when for example X reroutes traffic before PE1 does). | transient congestion (for example, when X reroutes traffic before PE1 | |||
does). | ||||
H --- I --- J | H --- I --- J | |||
| | \ | | | \ | |||
PE4 | | PE3 | PE4 | | PE3 | |||
\ | (L) | / | \ | (L) | / | |||
A --- X --- B --- G | A --- X --- B --- G | |||
/ | | \ | / | | \ | |||
PE1 | | PE2 | PE1 | | PE2 | |||
\ | | / | \ | | / | |||
C --- D --- E --- F | C --- D --- E --- F | |||
Figure 3 | Figure 3 | |||
Based on this assumption, in order to facilitate the operation of | Based on this assumption, in order to facilitate the operation of FRR | |||
FRR, and limit the implementation of local FRR policies, traffic can | and limit the implementation of local FRR policies, traffic can be | |||
be steered by the PLR onto its expected post-convergence path during | steered by the PLR onto its expected post-convergence path during the | |||
the FRR phase. In our example, when link L fails, X switches the | FRR phase. In our example, when link L fails, X switches the traffic | |||
traffic destined to PE3 and PE2 on the post-convergence paths. This | destined to PE3 and PE2 on the post-convergence paths. This is | |||
is perfectly inline with the capacity planning rule that was | perfectly in line with the capacity planning rule that was presented | |||
presented before and also inline with the fact X may converge before | before and also in line with the fact that X may converge before PE1 | |||
PE1 (or any other upstream router) and may spread the X-B traffic | (or any other upstream router) and may spread the X-B traffic onto | |||
onto the post-convergence paths rooted at X. | the post-convergence paths rooted at X. | |||
It should be noted, that some networks may have a different capacity | It should be noted that some networks may have a different capacity | |||
planning rule, leading to an allocation of less bandwidth on X-H and | planning rule, leading to an allocation of less bandwidth on X-H and | |||
X-D links. In such a case, using the post-convergence paths rooted | X-D links. In such a case, using the post-convergence paths rooted | |||
at X during FRR may introduce some congestion on X-H and X-D links. | at X during FRR may introduce some congestion on X-H and X-D links. | |||
However it is important to note, that a transient congestion may | However, it is important to note that a transient congestion may | |||
possibly happen, even without FRR activated, for instance when X | possibly happen even without FRR activated, for instance, when X | |||
converges before the upstream routers. Operators are still free to | converges before the upstream routers. Operators are still free to | |||
use the policy framework defined in [RFC7916] if the usage of the | use the policy framework defined in [RFC7916] if the usage of the | |||
post-convergence paths rooted at the PLR is not suitable. | post-convergence paths rooted at the PLR is not suitable. | |||
Readers should be aware that FRR protection is pre-computing a backup | Readers should be aware that FRR protection is pre-computing a backup | |||
path to protect against a particular type of failure (link, node, | path to protect against a particular type of failure (link, node, or | |||
SRLG). When using the post-convergence path as FRR backup path, the | SRLG). When using the post-convergence path as an FRR backup path, | |||
computed post-convergence path is the one considering the failure we | the computed post-convergence path is the one considering the failure | |||
are protecting against. This means that FRR is using an expected | we are protecting against. This means that FRR is using an expected | |||
post-convergence path, and this expected post-convergence path may be | post-convergence path, and this expected post-convergence path may be | |||
actually different from the post-convergence path used if the failure | actually different from the post-convergence path used if the failure | |||
that happened is different from the failure FRR was protecting | that happened is different from the failure FRR was protecting | |||
against. As an example, if the operator has implemented a protection | against. As an example, if the operator has implemented a protection | |||
against a node failure, the expected post-convergence path used | against a node failure, the expected post-convergence path used | |||
during FRR will be the one considering that the node has failed. | during FRR will be the one considering that the node has failed. | |||
However, even if a single link is failing or a set of links is | However, even if a single link is failing or a set of links is | |||
failing (instead of the full node), the node-protecting post- | failing (instead of the full node), the node-protecting post- | |||
convergence path will be used. The consequence is that the path used | convergence path will be used. The consequence is that the path used | |||
during FRR is not optimal with respect to the failure that has | during FRR is not optimal with respect to the failure that has | |||
actually occurred. | actually occurred. | |||
Another consideration to take into account is: while using the | Another consideration to take into account is as follows: While using | |||
expected post-convergence path for SR traffic using node segments | the expected post-convergence path for SR traffic using node segments | |||
only (for instance, PE to PE traffic using shortest path) has some | only (for instance, PE to PE traffic using the shortest path) has | |||
advantages, these advantages reduce when SR policies ([RFC9256]) are | some advantages, these advantages reduce when SR policies [RFC9256] | |||
involved. A segment-list used in an SR policy is computed to obey a | are involved. A segment list used in an SR policy is computed to | |||
set of path constraints defined locally at the head-end or centrally | obey a set of path constraints defined locally at the head-end or | |||
in a controller. TI-LFA cannot be aware of such path constraints and | centrally in a controller. TI-LFA cannot be aware of such path | |||
there is no reason to expect the TI-LFA backup path protecting one | constraints, and there is no reason to expect the TI-LFA backup path | |||
segments in that segment list to obey those constraints. When SR | protecting one segment in that segment list to obey those | |||
policies are used and the operator wants to have a backup path which | constraints. When SR policies are used and the operator wants to | |||
still follows the policy requirements, this backup path should be | have a backup path that still follows the policy requirements, this | |||
computed as part of the SR policy in the ingress node (or central | backup path should be computed as part of the SR policy in the | |||
controller) and the SR policy should not rely on local protection. | ingress node (or central controller), and the SR policy should not | |||
Another option could be to use FlexAlgo ([RFC9350]) to express the | rely on local protection. Another option could be to use a Flexible | |||
set of constraints and use a single node segment associated with a | Algorithm [RFC9350] to express the set of constraints and use a | |||
FlexAlgo to reach the destination. When using a node segment | single node segment associated with a Flexible Algorithm to reach the | |||
associated with a FlexAlgo, TI-LFA keeps providing an optimal backup | destination. When using a node segment associated with a Flexible | |||
by applying the appropriate set of constraints. The relationship | Algorithm, TI-LFA keeps providing an optimal backup by applying the | |||
between TI-LFA and the SR-algorithm is detailed in Section 9. | appropriate set of constraints. The relationship between TI-LFA and | |||
the SR algorithm is detailed in Section 8. | ||||
Appendix B. Analysis based on real network topologies | Appendix B. Analysis Based on Real Network Topologies | |||
This section presents analysis performed on real service provider and | This section presents an analysis performed on real service provider | |||
large enterprise network topologies. The objective of the analysis | and large enterprise network topologies. The objective of the | |||
is to assess the number of SIDs required in an explicit path when the | analysis is to assess the number of SIDs required in an explicit path | |||
mechanisms described in this document are used to protect against the | when the mechanisms described in this document are used to protect | |||
failure scenarios within the scope of this document. The number of | against the failure scenarios within the scope of this document. The | |||
segments described in this section are applicable to instantiating | number of segments described in this section are applicable to | |||
segment routing over the MPLS forwarding plane. | instantiating SR over the MPLS forwarding plane. | |||
The measurement below indicate that for link and local SRLG | The measurement below indicates that, for link and local SRLG | |||
protection, a 1 SID repair path delivers more than 99% coverage. For | protection, a 1-SID repair path delivers more than 99% coverage. For | |||
node protection a 2 SIDs repair path yields 99% coverage. | node protection, a 2-SID repair path yields 99% coverage. | |||
Table 1 below lists the characteristics of the networks used in our | Table 1 below lists the characteristics of the networks used in our | |||
measurements. The number of links refers to the number of | measurements. The number of links refers to the number of | |||
"bidirectional" links (not directed edges of the graph). The | "bidirectional" links (not directed edges of the graph). The | |||
measurements are carried out as follows: | measurements are carried out as follows: | |||
* For each network, the algorithms described in this document are | * For each network, the algorithms described in this document are | |||
applied to protect all prefixes against link, node, and local SRLG | applied to protect all prefixes against link, node, and local SRLG | |||
failure | failure. | |||
* For each prefix, the number of SIDs used by the repair path is | * For each prefix, the number of SIDs used by the repair path is | |||
recorded | recorded. | |||
* The percentage of number of SIDs are listed in Tables 2A/B, 3A/B, | * The percentage of number of SIDs are listed in Tables 2, 3, 4, 5, | |||
and 4A/B | 6, and 7. | |||
The measurements listed in the tables indicate that for link and | The measurements listed in the tables indicate that for link and | |||
local SRLG protection, 1 SID repair path is sufficient to protect | local SRLG protection, a 1-SID repair path is sufficient to protect | |||
more than 99% of the prefix in almost all cases. For node protection | more than 99% of the prefix in almost all cases. For node | |||
2 SIDs repair paths yield 99% coverage. | protection, 2-SID repair paths yield 99% coverage. | |||
+-------------+------------+------------+------------+------------+ | +=========+=======+=======+====================+============+ | |||
| Network | Nodes | Links |Node-to-Link| SRLG info? | | | Network | Nodes | Links | Node-to-Link Ratio | SRLG Info? | | |||
| | | | Ratio | | | +=========+=======+=======+====================+============+ | |||
+-------------+------------+------------+------------+------------+ | | T1 | 408 | 665 | 1.63 | Yes | | |||
| T1 | 408 | 665 | 1.63 | Yes | | +---------+-------+-------+--------------------+------------+ | |||
+-------------+------------+------------+------------+------------+ | | T2 | 587 | 1083 | 1.84 | No | | |||
| T2 | 587 | 1083 | 1.84 | No | | +---------+-------+-------+--------------------+------------+ | |||
+-------------+------------+------------+------------+------------+ | | T3 | 93 | 401 | 4.31 | Yes | | |||
| T3 | 93 | 401 | 4.31 | Yes | | +---------+-------+-------+--------------------+------------+ | |||
+-------------+------------+------------+------------+------------+ | | T4 | 247 | 393 | 1.59 | Yes | | |||
| T4 | 247 | 393 | 1.59 | Yes | | +---------+-------+-------+--------------------+------------+ | |||
+-------------+------------+------------+------------+------------+ | | T5 | 34 | 96 | 2.82 | Yes | | |||
| T5 | 34 | 96 | 2.82 | Yes | | +---------+-------+-------+--------------------+------------+ | |||
+-------------+------------+------------+------------+------------+ | | T6 | 50 | 78 | 1.56 | No | | |||
| T6 | 50 | 78 | 1.56 | No | | +---------+-------+-------+--------------------+------------+ | |||
+-------------+------------+------------+------------+------------+ | | T7 | 82 | 293 | 3.57 | No | | |||
| T7 | 82 | 293 | 3.57 | No | | +---------+-------+-------+--------------------+------------+ | |||
+-------------+------------+------------+------------+------------+ | | T8 | 35 | 41 | 1.17 | Yes | | |||
| T8 | 35 | 41 | 1.17 | Yes | | +---------+-------+-------+--------------------+------------+ | |||
+-------------+------------+------------+------------+------------+ | | T9 | 177 | 1371 | 7.74 | Yes | | |||
| T9 | 177 | 1371 | 7.74 | Yes | | +---------+-------+-------+--------------------+------------+ | |||
+-------------+------------+------------+------------+------------+ | ||||
Table 1: Data Set Definition | Table 1: Data Set Definition | |||
The rest of this section presents the measurements done on the actual | The rest of this section presents the measurements done on the actual | |||
topologies. The convention that we use is as follows | topologies. The conventions that we use are as follows: | |||
* 0 SIDs: the calculated repair path starts with a directly | * 0 SIDs: The calculated repair path starts with a directly | |||
connected neighbor that is also a loop free alternate, in which | connected neighbor that is also a loop-free alternate; in which | |||
case there is no need to explicitly route the traffic using | case, there is no need to explicitly route the traffic using | |||
additional SIDs. This scenario is described in Section 6.1. | additional SIDs. This scenario is described in Section 5.1. | |||
* 1 SIDs: the repair node is a PQ node, in which case only 1 SID is | * 1 SID: The repair node is a PQ node; in which case, only 1 SID is | |||
needed to guarantee a loop-free path. This scenario is covered in | needed to guarantee a loop-free path. This scenario is covered in | |||
Section 6.2. | Section 5.2. | |||
* 2 or more SIDs: The repair path consists of 2 or more SIDs as | * 2 or more SIDs: The repair path consists of 2 or more SIDs as | |||
described in Section 6.3 and Section 6.4. We do not cover the | described in Sections 5.3 and 5.4. We do not cover the case for 2 | |||
case for 2 SIDs (Section 6.3) separately because there was no | SIDs (Section 5.3) separately because there was no granularity in | |||
granularity in the result. Also we treat the node-SID+adj-SID and | the result. Also, we treat the node-SID + adj-SID and node-SID + | |||
node-SID + node-SID the same because they do not differ from the | node-SID the same because they do not differ from the data plane | |||
data plane point of view. | point of view. | |||
Table 2A and 2B below summarize the measurements on the number of | Tables 2 and 3 below summarize the measurements on the number of SIDs | |||
SIDs needed for link protection | needed for link protection. | |||
+-------------+------------+------------+------------+------------+ | +=========+========+=======+========+========+ | |||
| Network | 0 SIDs | 1 SID | 2 SIDs | 3 SIDs | | | Network | 0 SIDs | 1 SID | 2 SIDs | 3 SIDs | | |||
+-------------+------------+------------+------------+------------+ | +=========+========+=======+========+========+ | |||
| T1 | 74.3% | 25.3% | 0.5% | 0.0% | | | T1 | 74.3% | 25.3% | 0.5% | 0.0% | | |||
+-------------+------------+------------+------------+------------+ | +---------+--------+-------+--------+--------+ | |||
| T2 | 81.1% | 18.7% | 0.2% | 0.0% | | | T2 | 81.1% | 18.7% | 0.2% | 0.0% | | |||
+-------------+------------+------------+------------+------------+ | +---------+--------+-------+--------+--------+ | |||
| T3 | 95.9% | 4.1% | 0.1% | 0.0% | | | T3 | 95.9% | 4.1% | 0.1% | 0.0% | | |||
+-------------+------------+------------+------------+------------+ | +---------+--------+-------+--------+--------+ | |||
| T4 | 62.5% | 35.7% | 1.8% | 0.0% | | | T4 | 62.5% | 35.7% | 1.8% | 0.0% | | |||
+-------------+------------+------------+------------+------------+ | +---------+--------+-------+--------+--------+ | |||
| T5 | 85.7% | 14.3% | 0.0% | 0.0% | | | T5 | 85.7% | 14.3% | 0.0% | 0.0% | | |||
+-------------+------------+------------+------------+------------+ | +---------+--------+-------+--------+--------+ | |||
| T6 | 81.2% | 18.7% | 0.0% | 0.0% | | | T6 | 81.2% | 18.7% | 0.0% | 0.0% | | |||
+-------------+------------+------------+------------+------------+ | +---------+--------+-------+--------+--------+ | |||
| T7 | 98.9% | 1.1% | 0.0% | 0.0% | | | T7 | 98.9% | 1.1% | 0.0% | 0.0% | | |||
+-------------+------------+------------+------------+------------+ | +---------+--------+-------+--------+--------+ | |||
| T8 | 94.1% | 5.9% | 0.0% | 0.0% | | | T8 | 94.1% | 5.9% | 0.0% | 0.0% | | |||
+-------------+------------+------------+------------+------------+ | +---------+--------+-------+--------+--------+ | |||
| T9 | 98.9% | 1.0% | 0.0% | 0.0% | | | T9 | 98.9% | 1.0% | 0.0% | 0.0% | | |||
+-------------+------------+------------+------------+------------+ | +---------+--------+-------+--------+--------+ | |||
Table 2A: Link protection (repair size distribution) | ||||
+-------------+------------+------------+------------+------------+ | Table 2: Link Protection (Repair Size | |||
| Network | 0 SIDs | 1 SID | 2 SIDs | 3 SIDs | | Distribution) | |||
+-------------+------------+------------+------------+------------+ | ||||
| T1 | 74.2% | 99.5% | 99.9% | 100.0% | | +=========+========+========+========+========+ | |||
+-------------+------------+------------+------------+------------+ | | Network | 0 SIDs | 1 SID | 2 SIDs | 3 SIDs | | |||
| T2 | 81.1% | 99.8% | 100.0% | 100.0% | | +=========+========+========+========+========+ | |||
+-------------+------------+------------+------------+------------+ | | T1 | 74.2% | 99.5% | 99.9% | 100.0% | | |||
| T3 | 95.9% | 99.9% | 100.0% | 100.0% | | +---------+--------+--------+--------+--------+ | |||
+-------------+------------+------------+------------+------------+ | | T2 | 81.1% | 99.8% | 100.0% | 100.0% | | |||
| T4 | 62.5% | 98.2% | 100.0% | 100.0% | | +---------+--------+--------+--------+--------+ | |||
+-------------+------------+------------+------------+------------+ | | T3 | 95.9% | 99.9% | 100.0% | 100.0% | | |||
| T5 | 85.7% | 100.0% | 100.0% | 100.0% | | +---------+--------+--------+--------+--------+ | |||
+-------------+------------+------------+------------+------------+ | | T4 | 62.5% | 98.2% | 100.0% | 100.0% | | |||
| T6 | 81.2% | 99.9% | 100.0% | 100.0% | | +---------+--------+--------+--------+--------+ | |||
+-------------+------------+------------+------------+------------+ | | T5 | 85.7% | 100.0% | 100.0% | 100.0% | | |||
| T7 | 98,8% | 100.0% | 100.0% | 100.0% | | +---------+--------+--------+--------+--------+ | |||
+-------------+------------+------------+------------+------------+ | | T6 | 81.2% | 99.9% | 100.0% | 100.0% | | |||
| T8 | 94,1% | 100.0% | 100.0% | 100.0% | | +---------+--------+--------+--------+--------+ | |||
+-------------+------------+------------+------------+------------+ | | T7 | 98.8% | 100.0% | 100.0% | 100.0% | | |||
| T9 | 98,9% | 100.0% | 100.0% | 100.0% | | +---------+--------+--------+--------+--------+ | |||
+-------------+------------+------------+------------+------------+ | | T8 | 94.1% | 100.0% | 100.0% | 100.0% | | |||
Table 2B: Link protection repair size cumulative distribution | +---------+--------+--------+--------+--------+ | |||
Table 3A and 3B summarize the measurements on the number of SIDs | | T9 | 98.9% | 100.0% | 100.0% | 100.0% | | |||
+---------+--------+--------+--------+--------+ | ||||
Table 3: Link Protection (Repair Size | ||||
Cumulative Distribution) | ||||
Tables 4 and 5 summarize the measurements on the number of SIDs | ||||
needed for local SRLG protection. | needed for local SRLG protection. | |||
+-------------+------------+------------+------------+------------+ | +=========+========+=======+========+========+ | |||
| Network | 0 SIDs | 1 SID | 2 SIDs | 3 SIDs | | | Network | 0 SIDs | 1 SID | 2 SIDs | 3 SIDs | | |||
+-------------+------------+------------+------------+------------+ | +=========+========+=======+========+========+ | |||
| T1 | 74.2% | 25.3% | 0.5% | 0.0% | | | T1 | 74.2% | 25.3% | 0.5% | 0.0% | | |||
+-------------+------------+------------+------------+------------+ | +---------+--------+-------+--------+--------+ | |||
| T2 | No SRLG Information | | | T2 | No SRLG information | | |||
+-------------+------------+------------+------------+------------+ | +---------+--------+-------+--------+--------+ | |||
| T3 | 93.6% | 6.3% | 0.0% | 0.0% | | | T3 | 93.6% | 6.3% | 0.0% | 0.0% | | |||
+-------------+------------+------------+------------+------------+ | +---------+--------+-------+--------+--------+ | |||
| T4 | 62.5% | 35.6% | 1.8% | 0.0% | | | T4 | 62.5% | 35.6% | 1.8% | 0.0% | | |||
+-------------+------------+------------+------------+------------+ | +---------+--------+-------+--------+--------+ | |||
| T5 | 83.1% | 16.8% | 0.0% | 0.0% | | | T5 | 83.1% | 16.8% | 0.0% | 0.0% | | |||
+-------------+------------+------------+------------+------------+ | +---------+--------+-------+--------+--------+ | |||
| T6 | No SRLG Information | | | T6 | No SRLG information | | |||
+-------------+---------------------------------------------------+ | +---------+----------------------------------+ | |||
| T7 | No SRLG Information | | | T7 | No SRLG information | | |||
+-------------+------------+------------+------------+------------+ | +---------+--------+-------+--------+--------+ | |||
| T8 | 85.2% | 14.8% | 0.0% | 0.0% | | | T8 | 85.2% | 14.8% | 0.0% | 0.0% | | |||
+-------------+------------+------------+------------+------------+ | +---------+--------+-------+--------+--------+ | |||
| T9 | 98,9% | 1.1% | 0.0% | 0.0% | | | T9 | 98.9% | 1.1% | 0.0% | 0.0% | | |||
+-------------+------------+------------+------------+------------+ | +---------+--------+-------+--------+--------+ | |||
Table 3A: Local SRLG protection repair size distribution | ||||
Table 4: Local SRLG Protection (Repair | ||||
Size Distribution) | ||||
+=========+========+========+========+========+ | ||||
| Network | 0 SIDs | 1 SID | 2 SIDs | 3 SIDs | | ||||
+=========+========+========+========+========+ | ||||
| T1 | 74.2% | 99.5% | 99.9% | 100.0% | | ||||
+---------+--------+--------+--------+--------+ | ||||
| T2 | No SRLG information | | ||||
+---------+--------+--------+--------+--------+ | ||||
| T3 | 93.6% | 99.9% | 100.0% | 0.0% | | ||||
+---------+--------+--------+--------+--------+ | ||||
| T4 | 62.5% | 98.2% | 100.0% | 100.0% | | ||||
+---------+--------+--------+--------+--------+ | ||||
| T5 | 83.1% | 100.0% | 100.0% | 100.0% | | ||||
+---------+--------+--------+--------+--------+ | ||||
| T6 | No SRLG information | | ||||
+---------+-----------------------------------+ | ||||
| T7 | No SRLG information | | ||||
+---------+--------+--------+--------+--------+ | ||||
| T8 | 85.2% | 100.0% | 100.0% | 100.0% | | ||||
+---------+--------+--------+--------+--------+ | ||||
| T9 | 98.9% | 100.0% | 100.0% | 100.0% | | ||||
+---------+--------+--------+--------+--------+ | ||||
Table 5: Local SRLG Protection (Repair Size | ||||
Cumulative Distribution) | ||||
+-------------+------------+------------+------------+------------+ | ||||
| Network | 0 SIDs | 1 SID | 2 SIDs | 3 SIDs | | ||||
+-------------+------------+------------+------------+------------+ | ||||
| T1 | 74.2% | 99.5% | 99.9% | 100.0% | | ||||
+-------------+------------+------------+------------+------------+ | ||||
| T2 | No SRLG Information | | ||||
+-------------+------------+------------+------------+------------+ | ||||
| T3 | 93.6% | 99.9% | 100.0% | 0.0% | | ||||
+-------------+------------+------------+------------+------------+ | ||||
| T4 | 62.5% | 98.2% | 100.0% | 100.0% | | ||||
+-------------+------------+------------+------------+------------+ | ||||
| T5 | 83.1% | 100.0% | 100.0% | 100.0% | | ||||
+-------------+------------+------------+------------+------------+ | ||||
| T6 | No SRLG Information | | ||||
+-------------+---------------------------------------------------+ | ||||
| T7 | No SRLG Information | | ||||
+-------------+------------+------------+------------+------------+ | ||||
| T8 | 85.2% | 100.0% | 100.0% | 100.0% | | ||||
+-------------+------------+------------+------------+------------+ | ||||
| T9 | 98.9% | 100.0% | 100.0% | 100.0% | | ||||
+-------------+------------+------------+------------+------------+ | ||||
Table 3B: Local SRLG protection repair size Cumulative distribution | ||||
The remaining two tables summarize the measurements on the number of | The remaining two tables summarize the measurements on the number of | |||
SIDs needed for node protection. | SIDs needed for node protection. | |||
+---------+----------+----------+----------+----------+----------+ | +=========+========+=======+========+========+========+ | |||
| Network | 0 SIDs | 1 SID | 2 SIDs | 3 SIDs | 4 SIDs | | | Network | 0 SIDs | 1 SID | 2 SIDs | 3 SIDs | 4 SIDs | | |||
+---------+----------+----------+----------+----------+----------+ | +=========+========+=======+========+========+========+ | |||
| T1 | 49.8% | 47.9% | 2.1% | 0.1% | 0.0% | | | T1 | 49.8% | 47.9% | 2.1% | 0.1% | 0.0% | | |||
+---------+----------+----------+----------+----------+----------+ | +---------+--------+-------+--------+--------+--------+ | |||
| T2 | 36,5% | 59.6% | 3.6% | 0.2% | 0.0% | | | T2 | 36.5% | 59.6% | 3.6% | 0.2% | 0.0% | | |||
+---------+----------+----------+----------+----------+----------+ | +---------+--------+-------+--------+--------+--------+ | |||
| T3 | 73.3% | 25.6% | 1.1% | 0.0% | 0.0% | | | T3 | 73.3% | 25.6% | 1.1% | 0.0% | 0.0% | | |||
+---------+----------+----------+----------+----------+----------+ | +---------+--------+-------+--------+--------+--------+ | |||
| T4 | 36.1% | 57.3% | 6.3% | 0.2% | 0.0% | | | T4 | 36.1% | 57.3% | 6.3% | 0.2% | 0.0% | | |||
+---------+----------+----------+----------+----------+----------+ | +---------+--------+-------+--------+--------+--------+ | |||
| T5 | 73.2% | 26.8% | 0% | 0% | 0% | | | T5 | 73.2% | 26.8% | 0.0% | 0.0% | 0.0% | | |||
+---------+----------+----------+----------+----------+----------+ | +---------+--------+-------+--------+--------+--------+ | |||
| T6 | 78.3% | 21.3% | 0.3% | 0% | 0% | | | T6 | 78.3% | 21.3% | 0.3% | 0.0% | 0.0% | | |||
+---------+----------+----------+----------+----------+----------+ | +---------+--------+-------+--------+--------+--------+ | |||
| T7 | 66.1% | 32.8% | 1.1% | 0% | 0% | | | T7 | 66.1% | 32.8% | 1.1% | 0.0% | 0.0% | | |||
+---------+----------+----------+----------+----------+----------+ | +---------+--------+-------+--------+--------+--------+ | |||
| T8 | 59.7% | 40.2% | 0% | 0% | 0% | | | T8 | 59.7% | 40.2% | 0.0% | 0.0% | 0.0% | | |||
+---------+----------+----------+----------+----------+----------+ | +---------+--------+-------+--------+--------+--------+ | |||
| T9 | 98.9% | 1.0% | 0% | 0% | 0% | | | T9 | 98.9% | 1.0% | 0.0% | 0.0% | 0.0% | | |||
+---------+----------+----------+----------+----------+----------+ | +---------+--------+-------+--------+--------+--------+ | |||
Table 4A: Node protection (repair size distribution) | ||||
+---------+----------+----------+----------+----------+----------+ | Table 6: Node Protection (Repair Size Distribution) | |||
| Network | 0 SIDs | 1 SID | 2 SIDs | 3 SIDs | 4 SIDs | | ||||
+---------+----------+----------+----------+----------+----------+ | +=========+========+========+========+========+========+ | |||
| T1 | 49.7% | 97.6% | 99.8% | 99.9% | 100% | | | Network | 0 SIDs | 1 SID | 2 SIDs | 3 SIDs | 4 SIDs | | |||
+---------+----------+----------+----------+----------+----------+ | +=========+========+========+========+========+========+ | |||
| T2 | 36.5% | 96.1% | 99.7% | 99.9% | 100% | | | T1 | 49.7% | 97.6% | 99.8% | 99.9% | 100.0% | | |||
+---------+----------+----------+----------+----------+----------+ | +---------+--------+--------+--------+--------+--------+ | |||
| T3 | 73.3% | 98.9% | 99.9% | 100.0% | 100% | | | T2 | 36.5% | 96.1% | 99.7% | 99.9% | 100.0% | | |||
+---------+----------+----------+----------+----------+----------+ | +---------+--------+--------+--------+--------+--------+ | |||
| T4 | 36.1% | 93.4% | 99.8% | 99.9% | 100% | | | T3 | 73.3% | 98.9% | 99.9% | 100.0% | 100.0% | | |||
+---------+----------+----------+----------+----------+----------+ | +---------+--------+--------+--------+--------+--------+ | |||
| T5 | 73.2% | 100.0% | 100.0% | 100.0% | 100% | | | T4 | 36.1% | 93.4% | 99.8% | 99.9% | 100.0% | | |||
+---------+----------+----------+----------+----------+----------+ | +---------+--------+--------+--------+--------+--------+ | |||
| T6 | 78.4% | 99.7% | 100.0% | 100.0% | 100% | | | T5 | 73.2% | 100.0% | 100.0% | 100.0% | 100.0% | | |||
+---------+----------+----------+----------+----------+----------+ | +---------+--------+--------+--------+--------+--------+ | |||
| T7 | 66.1% | 98.9% | 100.0% | 100.0% | 100% | | | T6 | 78.4% | 99.7% | 100.0% | 100.0% | 100.0% | | |||
+---------+----------+----------+----------+----------+----------+ | +---------+--------+--------+--------+--------+--------+ | |||
| T8 | 59.7% | 100.0% | 100.0% | 100.0% | 100% | | | T7 | 66.1% | 98.9% | 100.0% | 100.0% | 100.0% | | |||
+---------+----------+----------+----------+----------+----------+ | +---------+--------+--------+--------+--------+--------+ | |||
| T9 | 98.9% | 100.0% | 100.0% | 100.0% | 100% | | | T8 | 59.7% | 100.0% | 100.0% | 100.0% | 100.0% | | |||
+---------+----------+----------+----------+----------+----------+ | +---------+--------+--------+--------+--------+--------+ | |||
Table 4B: Node protection (repair size cumulative distribution) | | T9 | 98.9% | 100.0% | 100.0% | 100.0% | 100.0% | | |||
+---------+--------+--------+--------+--------+--------+ | ||||
Table 7: Node Protection (Repair Size Cumulative | ||||
Distribution) | ||||
Acknowledgments | ||||
The authors would like to thank Les Ginsberg, Stewart Bryant, | ||||
Alexander Vainsthein, Chris Bowers, Shraddha Hedge, Wes Hardaker, | ||||
Gunter Van de Velde, and John Scudder for their valuable comments. | ||||
Contributors | ||||
In addition to the authors listed on the front page, the following | ||||
co-authors have also contributed to this document: | ||||
Francois Clad | ||||
Cisco Systems | ||||
Pablo Camarillo | ||||
Cisco Systems | ||||
Authors' Addresses | Authors' Addresses | |||
Ahmed Bashandy | Ahmed Bashandy | |||
Individual | Individual | |||
Email: abashandy.ietf@gmail.com | Email: abashandy.ietf@gmail.com | |||
Stephane Litkowski | Stephane Litkowski | |||
Cisco Systems | Cisco Systems | |||
France | France | |||
End of changes. 158 change blocks. | ||||
617 lines changed or deleted | 632 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |