Date created: Monday, July 13, 2015 5:15:55 PM. Last modified: Wednesday, June 29, 2022 8:51:53 AM
OSPFv2 IPFRR - LFA & rLFA
References:
http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_bfd/configuration/xe-3s/irb-xe-3s-book/irb-bi-fwd-det.html
http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_ospf/configuration/xe-3s/iro-lfa-frr-xe.html
http://www.cisco.com/c/en/us/td/docs/ios-xml/ios/iproute_ospf/configuration/xe-3s/iro-xe-3s-book/iro-ipfrr-lfa.html
http://www.cisco.com/c/en/us/td/docs/routers/xr12000/software/xr12k_r4-1/routing/configuration/guide/routing_cg41xr12k_chapter4.html#con_1394056
http://www.cisco.com/c/en/us/td/docs/routers/asr9000/software/asr9k_r5-3/mpls/configuration/guide/b-mpls-cg53x-asr9k/b-mpls-cg53x-asr9k_chapter_01010.html
http://www.cisco.com/c/en/us/td/docs/routers/asr920/configuration/guide/iproute/iri-xe-3s-asr920-book/iri-lfa-frr.html#GUID-A96CBA57-FDC6-49C8-8BC0-C85A117CC670
OSPF IPv4 FRR LFA & rLFA is available in IOS 15.1(3)S and XE 3.4S and IOS-XR 3.9 onwards.This example shows per-prefix LFA only, not per-link LFA (which is IOS-XR only).
Contents:
Restrictions
Topology
IPFRR LFA
IPFRR rLFA
Microloops
- The OSPF IPv4 Remote Loop-Free Alternate IP Fast Reroute feature is not supported on devices that are virtual links headends.
- The feature is supported only in global VPN routing and forwarding (VRF) OSPF instances.
- The only supported tunneling method is MPLS.
- You cannot configure a traffic engineering (TE) tunnel interface as a protected interface. Use the MPLS Traffic Engineering—Fast Reroute Link and Node Protection feature to protect these tunnels. For more information, see the "MPLS Traffic Engineering—Fast Reroute Link and Node Protection" section in the Multiprotocol Label Switching Configuration Guide.
- You can configure a TE tunnel interface in a repair path, but OSPF will not verify the tunnel's placement; you must ensure that it is not crossing the physical interface that it is intended to protect.
- Not all routes can have repair paths. Multipath primary routes might have repair paths for all, some, or no primary paths, depending on the network topology, the connectivity of the computing router, and the attributes required of repair paths.
- Devices that can be selected as tunnel termination points must have a /32 address advertised in the area in which remote LFA is enabled. This address will be used as a tunnel termination IP. If the device does not advertise a /32 address, it may not be used for remote LFA tunnel termination.
- All devices in the network that can be selected as tunnel termination points must be configured to accept targeted LDP sessions using the mpls ldp discovery targeted-hello accept command.
- Logical interfaces namely Port-channel (PoCH) do not support LFA FRR and remote LFA-FRR.
- Micro loops may form due to traffic congestion.
- For TDM psuedowires, the interfaces supported are CEM (CESoP, SAToP) and IMA (PVC,PVP); supported both on OC-3 and T1/E1 controllers. A maximum of 500 VCs can be configured per OC-3 controller.
- Each bridge domain interface (BDI) protected by FRR can have only one EFP.
- The maximum number of bridge-domain interfaces(BDI) that can act as protected or protecting interfaces via FRR is 24.
- Remote LFA FRR with VPLS provides better convergence with SFP ports rather than copper ports. As a workaround for copper ports, BFD triggered FRR can be used.
- Asymmetric LFA FRR is not supported.
- FRR is not supported with POS and serial interfaces.
- The implicit-null keyword is not supported.
- The OSPF/ISIS configuration option "ispf" is not recommended although it is supported
On IOS-XR:
- BVI interface (IRB) is not supported either as primary or backup path.
- GRE tunnel is not supported either as primary or backup path.
- Cisco ASR 9000 Series SPA Interface Processor-700 POS line card on Cisco ASR 9000 Series Router is not supported as primary link. It can be used as LFA backup only on main interface.
- In a multi-topology scenerio, the route in topology T can only use LFA within topology T. Hence, the availability of a backup path depends on the topology.

Manual OSPF costs forcing all links to have an OSPF cost of 10 means the test machines have ECMP routes between the PEs ASR920 <> ME3800X. The initial network state without IP FRR configured is shown below:
ME3800#show run | s router ospf
router ospf 1
router-id 1.0.0.4
timers throttle spf 50 200 5000
timers throttle lsa 50 200 5000
timers lsa arrival 100
passive-interface default
no passive-interface TenGigabitEthernet0/1
no passive-interface TenGigabitEthernet0/2
network 1.0.0.4 0.0.0.0 area 0
bfd all-interfaces
mpls ldp sync
interface TenGigabitEthernet0/1
description ASR9001:Te0/0/1/3
no switchport
dampening
mtu 1600
ip address 10.0.3.2 255.255.255.252
no ip redirects
no ip unreachables
no ip proxy-arp
ip ospf network point-to-point
ip ospf 1 area 0
ip ospf cost 10
load-interval 30
carrier-delay 5
ntp disable
mpls ip
bfd interval 50 min_rx 50 multiplier 3
no bfd echo
ME3800#show ip route | beg Gate
Gateway of last resort is not set
1.0.0.0/32 is subnetted, 5 subnets
O 1.0.0.2 [110/21] via 10.0.3.1, 00:13:45, TenGigabitEthernet0/1
[110/21] via 10.0.4.2, 00:13:45, TenGigabitEthernet0/2
O 1.0.0.3 [110/11] via 10.0.3.1, 00:13:45, TenGigabitEthernet0/1
C 1.0.0.4 is directly connected, Loopback0
O 1.0.0.5 [110/11] via 10.0.4.2, 00:13:47, TenGigabitEthernet0/2
10.0.0.0/8 is variably subnetted, 7 subnets, 2 masks
O 10.0.1.0/30 [110/20] via 10.0.3.1, 00:13:45, TenGigabitEthernet0/1
O 10.0.2.0/30 [110/20] via 10.0.3.1, 00:13:45, TenGigabitEthernet0/1
C 10.0.3.0/30 is directly connected, TenGigabitEthernet0/1
L 10.0.3.2/32 is directly connected, TenGigabitEthernet0/1
C 10.0.4.0/30 is directly connected, TenGigabitEthernet0/2
L 10.0.4.1/32 is directly connected, TenGigabitEthernet0/2
ME3800#show ip ospf fast-reroute
OSPF Router with ID (1.0.0.4) (Process ID 1)
Loop-free Fast Reroute not configured.
ME3800#show bfd neighbors
IPv4 Sessions
NeighAddr LD/RD RH/RS State Int
10.0.3.1 1/2148073479 Up Up Te0/1
10.0.4.2 2/1 Up Up Te0/2
ME3800#show ip cef 1.0.0.2/32 detail
1.0.0.2/32, epoch 0
local label info: global/29
1 RR source [no flags]
nexthop 10.0.3.1 TenGigabitEthernet0/1 label 16001
Below OSPF IPFRR LFA is enabled and a route-map is used to prioritise loopback prefixes, point to point interface addresses are not important in this topology:
! IOS and IOS-XE ip prefix-list LOOPBACK-PREFIXES seq 5 permit 1.0.0.0/28 ge 32 route-map OSPF-SPF-PRIORITY permit 10 match ip address prefix-list LOOPBACK-PREFIXES exit router ospf 1 fast-reroute keep-all-paths ! Not needed, but it's nice to see whats going on. ! This keeps all candidate repair-paths in OSPF RIB (good for troubleshooting only). ! The default (without this key-word) means the router only the best repair path in the OSPF RIB. fast-reroute per-prefix enable area 0 prefix-priority high ! Onyl calculate LFA paths for high priority prefixes prefix-priority high route-map OSPF-SPF-PRIORITY exit ! Interface options: ! If an interface is not desired to be used for backup paths ! no ip ospf fast-reroute per-prefix candidate disable ! ! Primary routes pointing to this interface will not be protected ! no ip ospf fast-reroute per-prefix protection disable ! IOS-XR router ospf 1 fast-reroute per-prefix fast-reroute per-prefix priority-limit high commit
After configuring OSPF IPFRR LFA it can be seen below on the ME3800X that a backup path has been calculated and in the OSPF RIB the prefix of the ASR920 loopback (1.0.0.2/32) is marked as "HiPro". Also note that since there are two equal cost multi-paths around the ring between the ME3800X and ASR920 (clockwise and anti-clockwise), two routes are present in the FIB and thus four routes are available when using the repair paths (as each of the two ECMP paths are a backup path for each other):
ME3800#show ip route repair-paths 1.0.0.2 255.255.255.255
Routing entry for 1.0.0.2/32
Known via "ospf 1", distance 110, metric 21, type intra area
Last update from 10.0.4.2 on TenGigabitEthernet0/2, 00:27:36 ago
Routing Descriptor Blocks:
10.0.4.2, from 1.0.0.2, 00:27:36 ago, via TenGigabitEthernet0/2
Route metric is 21, traffic share count is 1
Repair Path: 10.0.3.1, via TenGigabitEthernet0/1
* 10.0.3.1, from 1.0.0.2, 06:20:51 ago, via TenGigabitEthernet0/1
Route metric is 21, traffic share count is 1
Repair Path: 10.0.4.2, via TenGigabitEthernet0/2
ME3800#show ip cef 1.0.0.2/32 de
1.0.0.2/32, epoch 0, per-destination sharing
local label info: global/32
1 RR source [no flags]
nexthop 10.0.3.1 TenGigabitEthernet0/1 label [16001|20]
repair: attached-nexthop 10.0.4.2 TenGigabitEthernet0/2
nexthop 10.0.4.2 TenGigabitEthernet0/2 label [20|16001]
repair: attached-nexthop 10.0.3.1 TenGigabitEthernet0/1
ME3800#show ip cef 1.0.0.2/32 internal
1.0.0.2/32, epoch 0, RIB[I], refcount 6, per-destination sharing
sources: RIB, RR, LTE
feature space:
IPRM: 0x00028000
LFD: 1.0.0.2/32 1 local label
local label info: global/32
contains path extension list
disposition chain 0x10BD19E4
label switch chain 0x10BD19E4
subblocks:
1 RR source [no flags]
non-eos chain loadinfo 10BD19E4, per-session, flags 001B, 6 locks
ifnums:
TenGigabitEthernet0/1(79): 10.0.3.1
TenGigabitEthernet0/2(80): 10.0.4.2
path 11E759EC, path list 11E9B1EC, share 1/1, type attached nexthop, for IPv4, flags has-repair
MPLS short path extensions: MOI flags = 0x20 label 16001
nexthop 10.0.3.1 TenGigabitEthernet0/1 label [16001|20], adjacency IP adj out of TenGigabitEthernet0/1, addr 10.0.3.1 12028FA0
repair: attached-nexthop 10.0.4.2 TenGigabitEthernet0/2 (11E7574C)
path 11E7574C, path list 11E9B1EC, share 1/1, type attached nexthop, for IPv4, flags has-repair
MPLS short path extensions: MOI flags = 0x20 label 20
nexthop 10.0.4.2 TenGigabitEthernet0/2 label [20|16001], adjacency IP adj out of TenGigabitEthernet0/2, addr 10.0.4.2 09DB86A0
repair: attached-nexthop 10.0.3.1 TenGigabitEthernet0/1 (11E759EC)
output chain:
loadinfo 10BD19E4, per-session, 2 choices, flags 001B, 9 locks
flags: Per-session, for-rx-IPv4, for-mpls-at-eos, for-mpls-not-at-eos
16 hash buckets
< 0 > label [20|16001]
FRR Primary (0x130291E0)
< 1 > label [16001|20]
FRR Primary (0x10B89240)
..... down to 15!
ME3800#show ip ospf rib 1.0.0.2 255.255.255.255
OSPF Router with ID (1.0.0.4) (Process ID 1)
Base Topology (MTID 0)
OSPF local RIB
Codes: * - Best, > - Installed in global RIB
LSA: type/LSID/originator
*> 1.0.0.2/32, Intra, cost 21, area 0
SPF Instance 58, age 00:29:50
Flags: RIB, HiPrio
via 10.0.4.2, TenGigabitEthernet0/2
Flags: RIB
LSA: 1/1.0.0.2/1.0.0.2
repair path via 10.0.3.1, TenGigabitEthernet0/1, cost 21
Flags: RIB, Repair, IntfDj, BcastDj, PrimPath, NodeProt, Downstr
LSA: 1/1.0.0.2/1.0.0.2
via 10.0.3.1, TenGigabitEthernet0/1
Flags: RIB
LSA: 1/1.0.0.2/1.0.0.2
repair path via 10.0.4.2, TenGigabitEthernet0/2, cost 21
Flags: RIB, Repair, IntfDj, BcastDj, PrimPath, NodeProt, Downstr
LSA: 1/1.0.0.2/1.0.0.2
Below remote LFA (rLFA) is configured in additiona of LFA:
! IOS and IOS-XE mpls ldp explicit-null mpls ldp discovery targeted-hello accept router ospf 1 fast-reroute per-prefix remote-lfa area 0 tunnel mpls-ldp commit ! IOS-XR router ospf 1 area 0 fast-reroute per-prefix remote-lfa tunnel mpls-ldp
After enabling rLFA routes within OSPF which did not have an ECMP (unlike the Lo0 on the ME3800X to Lo0 on the ASR920 path) now show as having a repair path. From the output below, 1.0.0.5/32 on Lo0 on the ME3600X is reachable from the ME3800X via Te0/2, a backup/repair path exists going the other way around the ring, which has a higher cost so previously it wasn't considered by OSPF (unless un-equal cost mulipathing was enabled).
ME3800#show ip route repair-paths | beg Gate
Gateway of last resort is not set
1.0.0.0/32 is subnetted, 4 subnets
O 1.0.0.2 [110/21] via 10.0.4.2, 00:39:17, TenGigabitEthernet0/2
Repair Path: 10.0.3.1, via TenGigabitEthernet0/1
[110/21] via 10.0.3.1, 06:32:32, TenGigabitEthernet0/1
Repair Path: 10.0.4.2, via TenGigabitEthernet0/2
O 1.0.0.3 [110/11] via 10.0.3.1, 00:39:22, TenGigabitEthernet0/1
Repair Path: 1.0.0.2, via MPLS-Remote-Lfa2
[RPR][110/120] via 1.0.0.2, 00:39:22, MPLS-Remote-Lfa2
C 1.0.0.4 is directly connected, Loopback0
O 1.0.0.5 [110/11] via 10.0.4.2, 00:39:17, TenGigabitEthernet0/2
Repair Path: 1.0.0.2, via MPLS-Remote-Lfa3
[RPR][110/30] via 1.0.0.2, 00:39:17, MPLS-Remote-Lfa3
10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks
O 10.0.1.0/30 [110/20] via 10.0.4.2, 00:39:17, TenGigabitEthernet0/2
O 10.0.2.0/30 [110/20] via 10.0.3.1, 06:32:32, TenGigabitEthernet0/1
C 10.0.3.0/30 is directly connected, TenGigabitEthernet0/1
L 10.0.3.2/32 is directly connected, TenGigabitEthernet0/1
C 10.0.4.0/30 is directly connected, TenGigabitEthernet0/2
L 10.0.4.1/32 is directly connected, TenGigabitEthernet0/2
From the ME3600X we can see that only high priority paths are being protect (due to the route-map applied to the OSPF process on each PE) and the number of protected prefixes:
ME3600#show ip ospf fast-reroute ?
prefix-summary Prefix protection statistic
remote-lfa Remote LFA FastReroute information
| Output modifiers
ME3600#show ip ospf fast-reroute
OSPF Router with ID (1.0.0.5) (Process ID 1)
Loop-free Fast Reroute protected prefixes:
Area Topology name Priority Remote LFA Enabled
0 Base High Yes
Repair path selection policy tiebreaks (built-in default policy):
10 srlg
20 primary-path
30 interface-disjoint
40 lowest-metric
50 linecard-disjoint
60 node-protecting
70 broadcast-interface-disjoint
256 load-sharing
Last SPF calculation started 00:04:41 ago and was running for 4 ms.
ME3600#show ip ospf fast-reroute prefix-summary
OSPF Router with ID (1.0.0.5) (Process ID 1)
Base Topology (MTID 0)
Area 0:
Interface Protected Primary paths Protected paths Percent protected
All High Low All High Low All High Low
Lo0 Yes 0 0 0 0 0 0 0% 0% 0%
Te0/1 Yes 3 2 1 2 2 0 66% 100% 0%
Te0/2 Yes 3 2 1 2 2 0 66% 100% 0%
Gi0/23 Yes 0 0 0 0 0 0 0% 0% 0%
Area total: 6 4 2 4 4 0 66% 100% 0%
Process total: 6 4 2 4 4 0 66% 100% 0%
In the case more predictable routing/forwarding is wanted the ECMP can be removed by adding "maximum-paths 1" to each PE's OSPF process. On the ME3800X there is now only one path via Te0/1 to the ASR920's loopback 1.0.0.2/32. The other path via Te0/2 and the ME3600 is a repair path.
ME3800#show ip route repair-paths | beg Gate
Gateway of last resort is not set
1.0.0.0/32 is subnetted, 4 subnets
O 1.0.0.2 [110/21] via 10.0.3.1, 00:04:54, TenGigabitEthernet0/1
Repair Path: 10.0.4.2, via TenGigabitEthernet0/2
[RPR][110/111] via 10.0.4.2, 00:04:54, TenGigabitEthernet0/2
O 1.0.0.3 [110/11] via 10.0.3.1, 00:00:22, TenGigabitEthernet0/1
Repair Path: 1.0.0.2, via MPLS-Remote-Lfa11
[RPR][110/30] via 1.0.0.2, 00:00:22, MPLS-Remote-Lfa11
C 1.0.0.4 is directly connected, Loopback0
O 1.0.0.5 [110/11] via 10.0.4.2, 00:04:24, TenGigabitEthernet0/2
Repair Path: 1.0.0.2, via MPLS-Remote-Lfa10
[RPR][110/30] via 1.0.0.2, 00:04:24, MPLS-Remote-Lfa10
10.0.0.0/8 is variably subnetted, 6 subnets, 2 masks
O 10.0.1.0/30 [110/20] via 10.0.4.2, 00:04:24, TenGigabitEthernet0/2
O 10.0.2.0/30 [110/20] via 10.0.3.1, 00:05:37, TenGigabitEthernet0/1
C 10.0.3.0/30 is directly connected, TenGigabitEthernet0/1
L 10.0.3.2/32 is directly connected, TenGigabitEthernet0/1
C 10.0.4.0/30 is directly connected, TenGigabitEthernet0/2
L 10.0.4.1/32 is directly connected, TenGigabitEthernet0/2
ME3800#show ip cef 1.0.0.5/32 detail
1.0.0.5/32, epoch 0
local label info: global/31
nexthop 10.0.4.2 TenGigabitEthernet0/2 label [explicit-null|16]
repair: attached-nexthop 1.0.0.2 MPLS-Remote-Lfa10
nexthop 1.0.0.2 MPLS-Remote-Lfa10, repair
ME3800#show ip ospf fast-reroute remote-lfa tunnels
OSPF Router with ID (1.0.0.4) (Process ID 1)
Area with ID (0)
Base Topology (MTID 0)
Interface MPLS-Remote-Lfa10
Tunnel type: MPLS-LDP
Tailend router ID: 1.0.0.2
Termination IP address: 1.0.0.2
Outgoing interface: TenGigabitEthernet0/1
First hop gateway: 10.0.3.1
Tunnel metric: 20
Protects:
10.0.4.2 TenGigabitEthernet0/2, total metric 30
Interface MPLS-Remote-Lfa11
Tunnel type: MPLS-LDP
Tailend router ID: 1.0.0.2
Termination IP address: 1.0.0.2
Outgoing interface: TenGigabitEthernet0/2
First hop gateway: 10.0.4.2
Tunnel metric: 20
Protects:
10.0.3.1 TenGigabitEthernet0/1, total metric 30
ME3800#show mpls forwarding-table
Local Outgoing Prefix Bytes Label Outgoing Next Hop
Label Label or Tunnel Id Switched interface
30 Pop Label 1.0.0.3/32 5269 Te0/1 10.0.3.1
31 explicit-n 1.0.0.5/32 17316 Te0/2 10.0.4.2
32 16001 1.0.0.2/32 457 Te0/1 10.0.3.1
33 No Label 192.168.4.0/24[V] \
0 aggregate/CUST1
ME3800#show ip cef 1.0.0.5/32 internal
1.0.0.5/32, epoch 0, RIB[I], refcount 5, per-destination sharing
sources: RIB, LTE
feature space:
IPRM: 0x00028000
LFD: 1.0.0.5/32 1 local label
local label info: global/31
contains path extension list
disposition chain 0x1274D198
label switch chain 0x1274D198
ifnums:
TenGigabitEthernet0/2(80): 10.0.4.2
MPLS-Remote-Lfa10(7420)
path 11E75BAC, path list 11E9B41C, share 1/1, type attached nexthop, for IPv4, flags has-repair
MPLS short path extensions: MOI flags = 0x20 label explicit-null
nexthop 10.0.4.2 TenGigabitEthernet0/2 label [explicit-null|16], adjacency IP adj out of TenGigabitEthernet0/2, addr 10.0.4.2 09DB86A0
repair: attached-nexthop 1.0.0.2 MPLS-Remote-Lfa10 (11E75CFC)
path 11E75CFC, path list 11E9B41C, share 1/1, type attached nexthop, for IPv4, flags repair, repair-only
nexthop 1.0.0.2 MPLS-Remote-Lfa10, repair, adjacency IP midchain out of MPLS-Remote-Lfa10 09DB7F20
output chain: label [explicit-null|16]
FRR Primary (0x13041320)
Output from the ASR9001 below. Here it can be seen the ASR9001 is not limited to creating repair paths for loopback addresses only, it has a repair path for /30 point-to-point interface range 10.0.4.0/30:
RP/0/RSP0/CPU0:ASR9001#show route | beg Gate
Gateway of last resort is not set
O 1.0.0.2/32 [110/0] via 10.0.2.1, 00:00:09, TenGigE0/0/1/2 (!)
[110/41] via 10.0.3.2, 00:00:09, TenGigE0/0/1/3
L 1.0.0.3/32 is directly connected, 1w4d, Loopback0
O 1.0.0.4/32 [110/0] via 10.0.2.1, 00:00:09, TenGigE0/0/1/2 (!)
[110/11] via 10.0.3.2, 00:00:09, TenGigE0/0/1/3
O 1.0.0.5/32 [110/0] via 10.0.2.1, 00:00:09, TenGigE0/0/1/2 (!)
[110/21] via 10.0.3.2, 00:00:09, TenGigE0/0/1/3
O 10.0.1.0/30 [110/0] via 10.0.2.1, 00:00:09, TenGigE0/0/1/2 (!)
[110/40] via 10.0.3.2, 00:00:09, TenGigE0/0/1/3
C 10.0.2.0/30 is directly connected, 00:00:09, TenGigE0/0/1/2
L 10.0.2.2/32 is directly connected, 00:00:09, TenGigE0/0/1/2
C 10.0.3.0/30 is directly connected, 1w4d, TenGigE0/0/1/3
L 10.0.3.1/32 is directly connected, 1w4d, TenGigE0/0/1/3
O 10.0.4.0/30 [110/0] via 10.0.2.1, 00:00:09, TenGigE0/0/1/2 (!)
[110/20] via 10.0.3.2, 00:00:09, TenGigE0/0/1/3
L 127.0.0.0/8 [0/0] via 0.0.0.0, 9w0d
Microloops can occur with FRR (r)LFR. Ideally they are so small it is not worth doing anything about however, if legacy hardware is present that is significantly slower than other devices then it is possible to delay updates to the RIB on the faster devices to prevent microloops during a reconvergence event.
Microloop avoidance is automatically enabled as soon as remote LFA (rLFA) is enabled. The options below are to restrict it to protected prefixes only (without the keyword "protected" it is applied to all prefixes) and to implement a RIB update delay):
router ospf 1 microloop avoidance protected
microloop avoidance rib-update-delay 1000 ! msec
If some old pokey serial link is still in the mixture of IGP links it can be excluded from the backup interface candidate selection process using the following interface level command:
interface x/y ip ospf fast-reroute per-prefix candidate disable
Previous page: OSPFv2 Inter-Area Filtering & Prefix-Suppression
Next page: IOS Regex