rfc9855v3.txt   rfc9855.txt 
skipping to change at line 13 skipping to change at line 13
Request for Comments: 9855 HPE Request for Comments: 9855 HPE
Category: Standards Track S. Litkowski Category: Standards Track S. Litkowski
ISSN: 2070-1721 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
September 2025 October 2025
Topology Independent Fast Reroute Using Segment Routing Topology Independent Fast Reroute Using Segment Routing
Abstract Abstract
This document presents Topology Independent Loop-Free Alternate (TI- This document presents Topology Independent Loop-Free Alternate (TI-
LFA) Fast Reroute (FRR), which is aimed at providing protection of LFA) Fast Reroute (FRR), which is aimed at providing protection of
node and Adjacency segments within the Segment Routing (SR) node and Adjacency segments within the Segment Routing (SR)
framework. This FRR behavior builds on proven IP FRR concepts being framework. This FRR behavior builds on proven IP FRR concepts being
LFAs, Remote LFAs (RLFAs), and Directed Loop-Free Alternates (DLFAs). LFAs, Remote LFAs (RLFAs), and Directed Loop-Free Alternates (DLFAs).
skipping to change at line 535 skipping to change at line 535
This section defines the FRR behavior applied by S for any packet This section defines the FRR behavior applied by S for any packet
received with an active Adjacency segment S-F for which protection received with an active Adjacency segment S-F for which protection
was enabled. Since protection has been enabled for the segment S-F was enabled. Since protection has been enabled for the segment S-F
and 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 RL that will carry the traffic to F. To do so, one or is to create an RL that will carry the traffic to F. To do so, one
more "PUSH" operations are performed. If the RL, while avoiding S-F, or more "PUSH" operations are performed. If the RL, while avoiding
terminates on F, S only pushes segments of the RL. Otherwise, S S-F, terminates on F, S only pushes segments of the RL. Otherwise, S
pushes a node segment of F, followed by the segments of the RL. For pushes a node segment of F, followed by the segments of the RL. For
details on the "NEXT" and "PUSH" operations, refer to [RFC8402]. details on the "NEXT" and "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 traffic as Adjacency segment, has the advantage of keeping as much traffic as
possible on the pre-failure path. When SR policies are involved and possible on the pre-failure path. When SR policies are involved 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.
skipping to change at line 583 skipping to change at line 583
[adj-sid(S-F), adj-sid(F-M), ...] will thus leave S with a segment [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 list matching [RL(F), node(F), adj-sid(F-M), ...], where RL(F) is the
RL for destination F. RL for destination F.
6.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 RL redirecting the segment related to S-F, followed by a "PUSH" of an RL redirecting the
traffic to a node Q, whose path to node segment T is not affected by traffic to a node Q, whose path to node segment T is not affected by
the failure. 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), ...].
7. Data Plane-Specific Considerations 7. Data Plane-Specific Considerations
7.1. MPLS Data Plane Considerations 7.1. MPLS Data Plane Considerations
The MPLS data plane for SR is described in [RFC8660]. The MPLS data plane for SR is described in [RFC8660].
The following data plane behaviors apply when creating a RL using an The following data plane behaviors apply when creating an RL using an
MPLS data plane: MPLS data plane:
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 RL ends with an Adjacency with penultimate hop popping, and the RL ends with an Adjacency
segment terminating on the penultimate node of the active segment terminating on the penultimate node of the active
segment, then the active segment MUST be popped before pushing segment, then the active segment MUST be popped before pushing
the RL. the RL.
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 and then in 1. are not met, the active segment MUST be popped and then
 End of changes. 4 change blocks. 
6 lines changed or deleted 6 lines changed or added

This html diff was produced by rfcdiff 1.48.