Users may find that when link-protection is used with the no-cspf option and is triggered due to a link failure in the LSP path, control-plane signaling will not work via bypass. The label switched path (LSP) will consequently go down and will not be able to recover from this state.
This article recommends that you do not use link-protection when the no-cspf option is configured because the no-cspf LSP signaling does not carry an Explicit Route Object (ERO).
When link-protection is used with no-cspf and link protection is triggered due to a link failure in the LSP path, control-plane signaling will not work via bypass because the no-cspf LSP signaling does not carry an Explicit Route Object (ERO). The LSP will go down and will not be able to recover thereafter from its down state.
CSPF and Link-Protection
The head-end router PE1 creates LSP-A(LSP-ID = X) with protection.
The link goes down and goes into repair (the control-plane and data-plane traffic will now go via bypass).
A path error is reported to PE1.
PE1 initiates a new LSP-A (LSP-ID = X+1).
Upon successfully signaling the LSP, PE1 switches traffic to the new LSP-A(LSP-ID = X+1).
After switching traffic to the new LSP-A (LSP-ID = X+1), PE1 tears down the LSP-A(LSP-id = X).
No CSPF and Link-Protection
The head-end router PE1 creates the LSP-A(LSP-ID = X) with protection.
The link goes down. Repair does not happen and therefore, the data plane will use a bypass route till the link comes up. However, the control-plane does not work. [(Signaling for the original LSP-A(LSP-ID = X) via the bypass route will not work because it does not have an ERO (due to no-cspf)]. That is why LSP-A (LSP-ID = X) goes down after timeout.
A path error is reported to PE1 (point of local repair (PLR) will continue to report a path error message with the tunnel locally repaired indefinitely).
From the head-end router PE1's point of view and based on the interior gateway protocol (IGP) calculation, the next-hop is still the same and the new LSP-A (LSP-ID = X) is still using the old LSP-ID. So PLR will continue to report the path error for that LSP-ID = X (as link-protection is not supported for no-cspf LSP). That is why the new LSP-A (LSP-ID = X) does not get built and why it keeps the LSP down (in the no-cspf case, the LSP-ID will change only when there is a next-hop or an outgoing interface change).
label-switched-path PE1_PE4 { to 192.168.0.4; bandwidth 0; priority 0 0; no-cspf; optimize-timer 28800; preference 8; least-fill; link-protection; adaptive; } 192.168.0.4 From: 0.0.0.0, State: Dn, ActiveRoute: 0, LSPname: PE1_PE4, LSPid: 5 ActivePath: (none) Link protection desired LSPtype: Static Configured, Penultimate hop popping LoadBalance: Least-fill Follow destination IGP metric Encoding type: Packet, Switching type: Packet, GPID: IPv4 LSP Self-ping Status : Enabled Primary State: Dn, Preference: 8 Priorities: 0 0 OptimizeTimer: 28800 SmartOptimizeTimer: 180 Flap Count: 16 MBB Count: 7 348 Dec 30 11:31:00.329 10.1.1.6: Tunnel local repaired[7 times, first Dec 30 11:25:00.305] 347 Dec 30 11:24:26.750 Deselected as active 346 Dec 30 11:24:26.750 ResvTear received 345 Dec 30 11:24:26.750 Link-protection Down 344 Dec 30 11:24:26.749 10.1.1.1: Tunnel local repaired 343 Dec 30 11:24:26.749 10.1.1.1: Down 342 Dec 30 11:24:26.749 10.1.1.2: Tunnel local repaired 341 Dec 30 11:23:30.304 10.1.1.6: Tunnel local repaired[4 times, first Dec 30 11:21:33.353] 340 Dec 30 11:21:28.586 Link-protection Up 339 Dec 30 11:21:28.576 Link-protection Down 338 Dec 30 11:21:28.354 10.1.1.6: Tunnel local repaired 337 Dec 30 11:20:10.588 Link-protection Up 336 Dec 30 11:20:09.182 Selected as active path 335 Dec 30 11:20:09.181 Self-ping ended successfully 334 Dec 30 11:20:08.759 Record Route: 192.168.0.2(flag=0x21) 10.1.1.2(flag=1 Label=57) 192.168.0.3(flag=0x21) 10.1.1.6(flag=1 Label=49) 192.168.0.4(flag=0x20) 10.1.1.10(Label=3) 333 Dec 30 11:20:08.535 Record Route: 192.168.0.2(flag=0x21) 10.1.1.2(flag=1 Label=57) 192.168.0.3(flag=0x20) 10.1.1.6(Label=49) 192.168.0.4(flag=0x20) 10.1.1.10(Label=3) 332 Dec 30 11:20:08.324 Up 331 Dec 30 11:20:08.324 Self-ping started 330 Dec 30 11:20:08.324 Self-ping enqueued 329 Dec 30 11:20:08.324 Record Route: 192.168.0.2(flag=0x20) 10.1.1.2(Label=57) 192.168.0.3(flag=0x20) 10.1.1.6(Label=49) 192.168.0.4(flag=0x20) 10.1.1.10(Label=3) 328 Dec 30 11:20:08.185 LSP-ID: 15 created 327 Dec 30 11:20:08.185 Originate Call 326 Dec 30 11:20:08.185 Clear Call
If you are using the knob no-cspf, then it is recommended that you do not use link-protection with it.
no-cspf
192.168.0.4 From: 192.168.0.1, State: Up, ActiveRoute: 0, LSPname: PE1_PE4, LSPid: 5 ActivePath: (primary) LSPtype: Static Configured, Penultimate hop popping LoadBalance: Least-fill Follow destination IGP metric Encoding type: Packet, Switching type: Packet, GPID: IPv4 LSP Self-ping Status : Enabled *Primary State: Up, Preference: 8 Priorities: 0 0 OptimizeTimer: 28800 SmartOptimizeTimer: 180 Flap Count: 10 MBB Count: 1 Received RRO (ProtectionFlag 1=Available 2=InUse 4=B/W 8=Node 10=SoftPreempt 20=Node-ID): 10.1.1.2(Label=44) 10.1.1.6(Label=35) 10.1.1.10(Label=3) 151 Dec 30 00:30:03.634 Selected as active path 150 Dec 30 00:30:03.633 Self-ping ended successfully 149 Dec 30 00:30:03.326 Up 148 Dec 30 00:30:03.326 Self-ping started 147 Dec 30 00:30:03.326 Self-ping enqueued 146 Dec 30 00:30:03.326 Record Route: 10.1.1.2(Label=44) 10.1.1.6(Label=35) 10.1.1.10(Label=3) 145 Dec 30 00:30:03.326 Stats related identifier changed 144 Dec 30 00:30:03.299 Deselected as active 143 Dec 30 00:30:03.298 ResvTear received 142 Dec 30 00:30:03.298 10.1.1.1: Down 141 Dec 30 00:29:00.522 Selected as active path 140 Dec 30 00:29:00.521 Self-ping ended successfully 139 Dec 30 00:28:59.801 Up 138 Dec 30 00:28:59.801 Self-ping started 137 Dec 30 00:28:59.801 Self-ping enqueued 136 Dec 30 00:28:59.801 Record Route: 10.1.1.2(Label=43) 10.1.1.18(Label=31) 10.1.1.34(Label=40) 10.1.1.38(Label=28) 10.1.1.25(Label=3) 135 Dec 30 00:28:59.800 Stats related identifier changed 134 Dec 30 00:28:54.587 Deselected as active 133 Dec 30 00:28:54.587 ResvTear received 132 Dec 30 00:28:54.586 10.1.1.1: Down 131 Dec 30 00:28:54.586 10.1.1.2: No Route toward dest 130 Dec 30 00:28:29.489 Selected as active path 129 Dec 30 00:28:29.488 Self-ping ended successfully 128 Dec 30 00:28:29.259 Up 127 Dec 30 00:28:29.259 Self-ping started 126 Dec 30 00:28:29.259 Self-ping enqueued 125 Dec 30 00:28:29.259 Record Route: 10.1.1.2(Label=42) 10.1.1.6(Label=34) 10.1.1.22(Label=39) 10.1.1.38(Label=28) 10.1.1.25(Label=3) 124 Dec 30 00:28:29.259 Stats related identifier changed 123 Dec 30 00:28:24.006 Deselected as active 122 Dec 30 00:28:24.006 ResvTear received 121 Dec 30 00:28:24.005 10.1.1.1: Down 120 Dec 30 00:28:24.005 10.1.1.6: No Route toward dest 119 Dec 29 23:53:30.505 Selected as active path 118 Dec 29 23:53:30.504 Self-ping ended successfully 117 Dec 29 23:53:30.103 Up 116 Dec 29 23:53:30.103 Self-ping started 115 Dec 29 23:53:30.103 Self-ping enqueued 114 Dec 29 23:53:30.103 Record Route: 10.1.1.2(Label=41) 10.1.1.6(Label=33) 10.1.1.10(Label=3) 113 Dec 29 23:53:30.103 Stats related identifier changed
2022-12-19: Updated article to reflect RFC compliant IP addresses and information