This article describe about the secondary standby lsp where it is not getting signalled via expected path.
As per the diagram, there is a RSVP tunnel from R1 to R4 which has primary and secondary standby path. All links are having admin-group defined properly.
LSP Config:-
set protocols mpls admin-groups blue 4
set protocols mpls label-switched-path R1_TO_R4 to 4.4.4.4
set protocols mpls label-switched-path R1_TO_R4 primary PATH_PRIMARY admin-group include-any blue
set protocols mpls label-switched-path R1_TO_R4 secondary PATH_SECONDARY admin-group include-any blue
set protocols mpls label-switched-path R1_TO_R4 secondary PATH_SECONDARY standby
set protocols mpls path PATH_SECONDARY
set protocols mpls path PATH_PRIMARY
The primary path is signalled via the GREEN path and the secondary path is signalled via the RED path. While the expectation is that secondary path should be signalled via BLUE path. Since the BLUE path is the best IGP path compare to the RED path and no RSVP TE metric is configured so RSVP follow the IGP's metric.
In mpls traceoptions, while CSPF calculating the ERO for secondary standby path, CSPF is adding one more constraint “avoid primary path”. So it avoids the common segment between primary and secondary path, Here link between R2 and R4.
mpls trace:-
Dec 5 04:01:20.407953 CSPF for path R1_TO_R4(primary PATH_PRIMARY), begin at 0000.0000.0000.00 , starting
Dec 5 04:01:20.407963 path include-any: 0x00000010
Dec 5 04:01:20.407990 bandwidth: CT0=0bps ; setup priority: 0; random
Dec 5 04:01:20.408020 CSPF credibility 0
Dec 5 04:01:20.408028 CSPF final destination 4.4.4.4
Dec 5 04:01:20.408040 CSPF starting from 0000.0000.0000.00 (1.1.1.1) to 4.4.4.4, hoplimit 254
Dec 5 04:01:20.408047 constraint include-any 0x00000010
Dec 5 04:01:20.408059 Node 0000.0000.0000.00 (1.1.1.1) metric 0, hops 0, avail 0 32000 32000 32000
Dec 5 04:01:20.408069 Link 10.52.12.1->10.52.12.2(0000.0000.0000.00/2.2.2.2, Link IDs 357->0) metric 1 color 0x00000010 bw 1000Mbps
Dec 5 04:01:20.408080 Reverse Link for 10.52.12.1(1.1.1.1:357)->10.52.12.2(2.2.2.2:0) is 10.52.12.2(2.2.2.2:357)->10.52.12.1(1.1.1.1:0)
Dec 5 04:01:20.408101 link's interface switch capability descriptor #1
----snip-----
Dec 5 04:01:21.182452 CSPF for path R1_TO_R4(secondary PATH_SECONDARY), begin at 0000.0000.0000.00 , starting
Dec 5 04:01:21.182490 path include-any: 0x00000010
Dec 5 04:01:21.182514 bandwidth: CT0=0bps ; setup priority: 0; random
Dec 5 04:01:21.182543 CSPF credibility 0
Dec 5 04:01:21.182549 CSPF final destination 4.4.4.4
Dec 5 04:01:21.182566 CSPF starting from 0000.0000.0000.00 (1.1.1.1) to 4.4.4.4, hoplimit 254
Dec 5 04:01:21.182577 constraint include-any 0x00000010
Dec 5 04:01:21.182586 constraint avoid primary path
Dec 5 04:01:21.182593 Node 0000.0000.0000.00 (1.1.1.1) metric 0, hops 0, avail 0 32000 32000 32000
So If an LSP has a primary path and secondary in standby then the secondary should not be signalled to use the same hops as the primary path as the router actually sets a constraint "avoid primary path". This is expected behaviour.