If a different preference is configured for paths belonging to a label-switched path (LSP), then the actual path taken by the traffic (L3VPN, L2VPN or any other traffic that goes over LSP) may be different than the Active path displayed under the output of ‘show mpls lsp’.
This article provides an explanation.
Example configuration where LSP-to-R6 LSP has three paths with different preferences:
-
primary-preference-13 (preference 13)
-
secondary-preference-10 (preference 10)
-
secondary-preference-20 (preference 20)
[edit]
user@R2# show protocols mpls
icmp-tunneling;
label-switched-path LSP-to-R6 {
from 2.2.2.2;
to 6.6.6.6;
primary primary-preference-13 {
preference 13;
}
secondary secondary-preference-10 {
preference 10;
standby;
}
secondary secondary-preference-20 {
preference 20;
standby;
}
}
path secondary-preference-10 {
23.1.1.3 strict;
37.1.1.7 strict;
6.6.6.6 loose;
}
path secondary-preference-20 {
12.1.1.1 strict;
6.6.6.6 loose;
}
path primary-preference-13 {
28.1.1.8 strict;
89.1.1.9 strict;
79.1.1.7 strict;
47.1.1.4 strict;
46.1.1.6 strict;
}
interface all;
interface lo0.0;
The active path under ‘show mpls lsp’
is primary-preference-13.
user@R2# run show mpls lsp
Ingress LSP: 1 sessions
To From State Rt P ActivePath LSPname
6.6.6.6 2.2.2.2 Up 0 * primary-preference-13 LSP-to-R6
Total 1 displayed, Up 1, Down 0
Egress LSP: 1 sessions
To From State Rt Style Labelin Labelout LSPname
2.2.2.2 6.6.6.6 Up 0 1 FF 3 - TO-R2
Total 1 displayed, Up 1, Down 0
Transit LSP: 0 sessions, 2 detours
Total 0 displayed, Up 0, Down 0
[edit]
labroot@mx80-r2014#
[edit]
user@R2# run show mpls lsp name LSP-to-R6 extensive
Ingress LSP: 1 sessions
6.6.6.6
From: 2.2.2.2, State: Up, ActiveRoute: 0, LSPname: LSP-to-R6
ActivePath: primary-preference-13 (primary)
FastReroute desired
LSPtype: Static Configured, Penultimate hop popping
LoadBalance: Random
Encoding type: Packet, Switching type: Packet, GPID: IPv4
*Primary primary-preference-13 State: Up, Preference: 13
Priorities: 7 0
SmartOptimizeTimer: 180
Computed ERO (S [L] denotes strict [loose] hops): (CSPF metric: 5)
28.1.1.8 S 89.1.1.9 S 79.1.1.7 S 47.1.1.4 S 46.1.1.6 S
Received RRO (ProtectionFlag 1=Available 2=InUse 4=B/W 8=Node 10=SoftPreempt 20=Node-ID):
28.1.1.8(flag=9) 89.1.1.9(flag=9) 79.1.1.7(flag=9) 47.1.1.4(flag=1) 46.1.1.6
10 May 7 23:05:54.592 Record Route: 28.1.1.8(flag=9) 89.1.1.9(flag=9) 79.1.1.7(flag=9) 47.1.1.4(flag=1) 46.1.1.6
9 May 7 23:05:54.586 Record Route: 28.1.1.8(flag=9) 89.1.1.9(flag=9) 79.1.1.7(flag=9) 47.1.1.4 46.1.1.6
8 May 7 23:05:54.563 Record Route: 28.1.1.8 89.1.1.9(flag=9) 79.1.1.7(flag=9) 47.1.1.4 46.1.1.6
7 May 7 23:05:54.552 Fast-reroute Detour Up
6 May 7 23:05:54.541 Record Route: 28.1.1.8 89.1.1.9(flag=9) 79.1.1.7 47.1.1.4 46.1.1.6
5 May 7 23:05:51.711 Selected as active path
4 May 7 23:05:51.710 Record Route: 28.1.1.8 89.1.1.9 79.1.1.7 47.1.1.4 46.1.1.6
3 May 7 23:05:51.709 Up
2 May 7 23:05:51.516 Originate Call
1 May 7 23:05:51.516 CSPF: computation result accepted 28.1.1.8 89.1.1.9 79.1.1.7 47.1.1.4 46.1.1.6
Standby secondary-preference-10 State: Up, Preference: 10
Priorities: 7 0
SmartOptimizeTimer: 180
Computed ERO (S [L] denotes strict [loose] hops): (CSPF metric: 4)
23.1.1.3 S 37.1.1.7 S 79.1.1.9 S 69.1.1.6 S
Received RRO (ProtectionFlag 1=Available 2=InUse 4=B/W 8=Node 10=SoftPreempt 20=Node-ID):
23.1.1.3(flag=9) 37.1.1.7(flag=9) 79.1.1.9(flag=1) 69.1.1.6
8 May 7 23:07:51.299 Fast-reroute Detour Up
7 May 7 23:06:23.803 Record Route: 23.1.1.3(flag=9) 37.1.1.7(flag=9) 79.1.1.9(flag=1) 69.1.1.6
6 May 7 23:06:23.764 Record Route: 23.1.1.3(flag=9) 37.1.1.7(flag=9) 79.1.1.9 69.1.1.6
5 May 7 23:06:23.763 Record Route: 23.1.1.3(flag=9) 37.1.1.7 79.1.1.9 69.1.1.6
4 May 7 23:06:20.848 Record Route: 23.1.1.3 37.1.1.7 79.1.1.9 69.1.1.6
3 May 7 23:06:20.848 Up
2 May 7 23:06:20.723 Originate Call
1 May 7 23:06:20.723 CSPF: computation result accepted 23.1.1.3 37.1.1.7 79.1.1.9 69.1.1.6
Standby secondary-preference-20 State: Up, Preference: 20
Priorities: 7 0
SmartOptimizeTimer: 180
Computed ERO (S [L] denotes strict [loose] hops): (CSPF metric: 3)
12.1.1.1 S 15.1.1.5 S 56.1.1.6 S
Received RRO (ProtectionFlag 1=Available 2=InUse 4=B/W 8=Node 10=SoftPreempt 20=Node-ID):
12.1.1.1(flag=9) 15.1.1.5(flag=1) 56.1.1.6
7 May 7 23:08:26.383 Fast-reroute Detour Up
6 May 7 23:06:52.580 Record Route: 12.1.1.1(flag=9) 15.1.1.5(flag=1) 56.1.1.6
5 May 7 23:06:52.540 Record Route: 12.1.1.1(flag=9) 15.1.1.5 56.1.1.6
4 May 7 23:06:49.418 Record Route: 12.1.1.1 15.1.1.5 56.1.1.6
3 May 7 23:06:49.418 Up
2 May 7 23:06:49.323 Originate Call
1 May 7 23:06:49.323 CSPF: computation result accepted 12.1.1.1 15.1.1.5 56.1.1.6
Created: Sat May 7 23:05:51 2016
Total 1 displayed, Up 1, Down 0
Egress LSP: 1 sessions
Total 0 displayed, Up 0, Down 0
Transit LSP: 0 sessions, 2 detours
Total 0 displayed, Up 0, Down 0
RSVP LSP traceroute is also taking the primary path.
user@R2> traceroute mpls rsvp LSP-to-R6
Probe options: retries 3, exp 7
ttl Label Protocol Address Previous Hop Probe Status
1 299952 RSVP-TE 28.1.1.8 (null) Success
2 300064 RSVP-TE 89.1.1.9 28.1.1.8 Success
3 300064 RSVP-TE 79.1.1.7 89.1.1.9 Success
4 300112 RSVP-TE 47.1.1.4 79.1.1.7 Success
5 3 RSVP-TE 46.1.1.6 47.1.1.4 Egress
Path 1 via ge-1/2/0.28 destination 127.0.0.64
However, the next-hop for an L3VPN route is learned from the remote PE R6 with the same protocol next-hop as the LSP-to-R6 destination, which is selected as per path secondary-preference-10.
user@R2> show route 60.60.60.60 table VRF1.inet.0 detail
VRF1.inet.0: 6 destinations, 7 routes (6 active, 0 holddown, 0 hidden)
60.60.60.60/32 (1 entry, 1 announced)
*BGP Preference: 170/-101
Route Distinguisher: 2:6
Next hop type: Indirect
Address: 0x28a4e50
Next-hop reference count: 3
Source: 6.6.6.6
Next hop type: Router, Next hop index: 1529
Next hop: 23.1.1.3 via ge-1/2/0.23 weight 0x2001, selected
Label-switched-path LSP-to-R6
Label operation: Push 299776, Push 300000(top)
Label TTL action: prop-ttl, prop-ttl(top)
Session Id: 0x400007
Protocol next hop: 6.6.6.6
Push 299776
Indirect next hop: 0x2a14000 1048575 INH Session ID: 0x400004
State: <Secondary Active Int Ext ProtectionCand>
Local AS: 100 Peer AS: 100
Age: 12:55 Metric2: 3
Validation State: unverified
Task: BGP_100.6.6.6.6+53618
Announcement bits (1): 1-KRT
AS path: I
Communities: target:22:66
Import Accepted
VPN Label: 299776
Localpref: 100
Router ID: 6.6.6.6
Primary Routing Table bgp.l3vpn.0
Output from the Inet.3 table shows secondary-preference-10 being selected as active-path.
user@R2> show route table inet.3
inet.3: 2 destinations, 4 routes (2 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
0.0.0.0/0 *[Static/5] 01:53:55
Discard
6.6.6.6/32 *[RSVP/10/1] 00:23:33, metric 3
> to 23.1.1.3 via ge-1/2/0.23, label-switched-path LSP-to-R6
[RSVP/13/1] 00:24:33, metric 3
> to 28.1.1.8 via ge-1/2/0.28, label-switched-path LSP-to-R6
[RSVP/20/1] 00:24:33, metric 3
> to 12.1.1.1 via ge-1/2/1.21, label-switched-path to-R6
user@R2> show route table inet.3 active-path
inet.3: 2 destinations, 4 routes (2 active, 0 holddown, 0 hidden)
+ = Active Route, - = Last Active, * = Both
0.0.0.0/0 *[Static/5] 02:06:19
Discard
6.6.6.6/32 *[RSVP/10/1] 00:35:57, metric 3
> to 23.1.1.3 via ge-1/2/0.23, label-switched-path LSP-to-R6
Traceroute for L3VPN Traffic from inside the routing-instance is taking path secondary-preference-10.
user@R2> traceroute 60.60.60.60 routing-instance VRF1
traceroute to 60.60.60.60 (60.60.60.60), 30 hops max, 40 byte packets
1 23.1.1.3 (23.1.1.3) 1.076 ms 1.055 ms 2.325 ms
MPLS Label=300000 CoS=0 TTL=1 S=0
MPLS Label=299776 CoS=0 TTL=1 S=1
2 37.1.1.7 (37.1.1.7) 0.930 ms 0.962 ms 0.893 ms
MPLS Label=300128 CoS=0 TTL=1 S=0
MPLS Label=299776 CoS=0 TTL=2 S=1
3 79.1.1.9 (79.1.1.9) 0.899 ms 0.944 ms 0.892 ms
MPLS Label=300128 CoS=0 TTL=1 S=0
MPLS Label=299776 CoS=0 TTL=3 S=1
4 69.1.1.6 (69.1.1.6) 0.699 ms 0.706 ms 0.679 ms
MPLS Label=299776 CoS=0 TTL=1 S=1
5 60.60.60.60 (60.60.60.60) 0.669 ms 0.705 ms 0.669 ms
There is a difference in ‘show mpls lsp’
and ‘show route’
because LSP active path selection does not consider preference to select active path for an LSP. On the other hand, preference is considered in selecting the active route at the routing table itself, and if the best path of the LSP has a numerically higher preference, then these outputs will not be in sync with each other. In this case, the best path of LSP will be filtered while selecting an active route in the routing table. Therefore, a difference appears.
If preference is the same, then it will look further for the LSP best path to select an actual path.
This behavior will not occur if preference is the same for all paths of an LSP. If a different preference is configured for LSP paths, then be sure to check the output of the ‘show route’
command to get the correct path taken by traffic.