This document explains the LFA (Loop-Free Alternate) backup interface selection logic on the DUT (Device Under Test) when multiple loop-free interfaces are available toward the same neighbor.
The command output below lists the interfaces on the DUT that connect to a directly connected remote peer. In our topology, AE21 is configured as the primary path. When AE21 goes down, the DUT identifies five eligible backup interfaces: AE1.20, AE2.20, AE3.20, AE10, and AE11.
Our investigation focused on understanding the criteria used by the DUT to select one of these backup interfaces over the others during Loop-Free Alternate (LFA) path selection.
labroot@labrouter> show isis interface
IS-IS interface database:
Interface L CirID Level 1 DR Level 2 DR L1/L2 Metric
ae21.0 1 0x1 Point to Point Disabled 50/10 <Primary
ae10.0 1 0x1 Point to Point Disabled 90/10 <2nd Best routes
ae11.0 1 0x1 Point to Point Disabled 90/10
ae1.20 1 0x1 Down Disabled 200/10 <3rd Bests routes
ae2.20 1 0x1 Point to Point Disabled 200/10
ae3.20 1 0x1 Point to Point Disabled 200/10
We observed that the DUT consistently selects AE1.20 as the backup interface toward the next-hop, even though AE1.20 holds the third-best route, while AE10 and AE11 have higher priority as per routing metrics. This raises the question:
Why does the DUT prefer AE1.20 over AE10 and AE11 during LFA selection, despite the latter having better route priority?
labroot@labrouter> show isis interface ae21.0 detail
ae21.0
Index: 75, State: 0x6, Circuit id: 0x1, Circuit type: 1
LSP interval: 100 ms, CSNP interval: 30 s
Adjacency advertisement: Advertise, Layer2-map: Disabled
Protection Type: Link <<<
...
labroot@labrouter> show route 150.181.X.XX/32
inet.0: 1004950 destinations, 2516692 routes (1004799 active, 1 holddown, 152 hidden)
@ = Routing Use Only, # = Forwarding Use Only
+ = Active Route, - = Last Active, * = Both
150.181.X.XX/32 @[IS-IS/18] 00:04:45, metric 65050
> to 96.34.XX.XXX via ae21.0
to 96.34.XX.XXX via ae1.20
[BGP/170] 01:06:28, MED 65000, localpref 100, from 96.34.XXX.X
AS path: I, validation-state: unverified
to 96.34.XX.XXX via ae1.20, Push 687842
#[LDP/9] 00:04:45, metric 65050
> to 96.34.XX.XXX via ae21.0, Push 604523
to 96.34.XX.XXX via ae1.20, Push 760517
labroot@labrouter> show route forwarding-table destination 150.181.X.XX/32 extensive
Routing table: default.inet [Index 0]
Internet:
Destination: 150.181.X.XX/32
Route type: user
Route reference: 0 Route interface-index: 0
Multicast RPF nh index: 0
P2mpidx: 0
Flags: sent to PFE, rt nh decoupled
Next-hop type: unilist Index: 2097180 Reference: 2
Nexthop: 96.34.XX.XXX
Next-hop type: Push 604523 Index: 435827 Reference: 2
Load Balance Label: None
Next-hop interface: ae21.0 Weight: 0x1
Next-hop type: Push 760517 Index: 427874 Reference: 2
Next-hop interface: ae1.20 Weight: 0xf000 <<<
LFA selected interface ae10.0 as backup when ae1.20 was disabled.
labroot@labrouter> show isis adjacency
Interface System L State Hold (secs) SNPAae21.0 h20-28 1 Up 2
ae10.0 h20-29 1 Up 2ae11.0 h20-29 1 Up 2
ae2.20 h20-29 1 Up 2ae3.20 h20-29 1 Up 2
inet.0: 1004948 destinations, 2516690 routes (1004797 active, 1 holddown, 152 hidden)
150.181.X.XX/32 @[IS-IS/18] 00:00:15, metric 65050
to 96.34.XX.XXX via ae10.0
[BGP/170] 01:12:19, MED 65000, localpref 100, from 96.34.XXX.X
to 96.34.XX.XXX via ae10.0, Push 687842
#[LDP/9] 00:00:15, metric 65050
to 96.34.XX.XXX via ae10.0, Push 760517
Next-hop type: unilist Index: 2101658 Reference: 2
Next-hop type: Push 760517 Index: 8316 Reference: 2
Next-hop interface: ae10.0 Weight: 0xf000
LFA selected interface ae11.0 as backup when ae1.20 and ae10.0 was disabled.
Interface System L State Hold (secs) SNPA
ae21.0 h20-28 1 Up 2
ae11.0 h20-29 1 Up 2
inet.0: 1004948 destinations, 2516690 routes (1004796 active, 2 holddown, 152 hidden)
150.181.X.XX/32 @[IS-IS/18] 00:00:06, metric 65050
to 96.34.XX.XXX via ae11.0
[BGP/170] 01:23:42, MED 65000, localpref 100, from 96.34.XXX.X
to 96.34.XX.XXX via ae11.0, Push 687842
#[LDP/9] 00:00:06, metric 65050
to 96.34.XX.XXX via ae11.0, Push 760517
{master}
Next-hop type: unilist Index: 2100120 Reference: 2
Next-hop type: Push 760517 Index: 940 Reference: 2
Next-hop interface: ae11.0 Weight: 0xf000
The IFL index plays a role in determining the backup interface preference.
Here are the interface details and their observed preferences:
ae1.20
Index: 68, State: 0x6, Circuit ID: 0x1, Circuit Type: 1 << 1st preference
ae10.0
Index: 70, State: 0x6, Circuit ID: 0x1, Circuit Type: 1 << 2nd preference
ae11.0
Index: 71, State: 0x6, Circuit ID: 0x1, Circuit Type: 1 << 3rd preference
ae2.20
Index: 73, State: 0x6, Circuit ID: 0x1, Circuit Type: 1 << 4th preference
ae3.20
Index: 77, State: 0x6, Circuit ID: 0x1, Circuit Type: 1 << 5th preference
<After recreating interface AE1 >
Index: 111, State: 0x6, Circuit ID: 0x1, Circuit Type: 1