All serial links among the m1,m2 and m3 routers have the same bandwidth, I need mpls trace to test if the mpls is operational as configured.
Suppose I want to use loopback reachability to test, I am using m1 loopback and traceroute to m3 loopback.
m1#traceroute 10.10.10.3 Type escape sequence to abort. Tracing the route to 10.10.10.3 VRF info: (vrf in name/id, vrf out name/id) 1 10.1.1.6 4 msec * 0 msec m1#
Notice there is no label. This is because the out label of m1 to reach m3 loopback is “pop label”. There should be no label present when it reaches m3 se0/1/0 interface in order to reach m3 loopback address. m1 being the PHP LSR of 10.10.10.3/32 will pop a label before sending out to its se0/0/0 interface, here’s m1’s LFIB:
m1#sh mpls forwarding-table Local Outgoing Prefix Bytes Label Outgoing Next Hop Label Label or Tunnel Id Switched interface 16 No Label 10.10.10.4/32 0 Fa0/0 10.1.1.14 17 Pop Label 10.10.10.3/32 0 Se0/0/0 point2point 18 Pop Label 10.10.10.2/32 0 Se0/1/0 point2point 19 Pop Label 10.1.1.8/30 0 Se0/1/0 point2point Pop Label 10.1.1.8/30 0 Se0/0/0 point2point 20 Pop Label 10.1.1.20/30 0 Se0/0/0 point2point 21 21 10.10.10.6/32 0 Se0/0/0 point2point m1#
I am using
c1841-adventerprisek9-mz.151-4.M.bin on my cisco 1841 router. I checked Cisco feature navigator my IOS version supports mpls traceroute. I referred to the link here. I tried the command demonstrated from isohints.info but cannot find it. So the next step is to manipulate the routing path, instead of using the 10.1.1.4/30 network to reach 10.10.10.3/32, I change the cost of the two serial links or I can change the bandwidth to a lower one.
To lower the bandwidth of m1 and m3 serial links
interface Serial0/0/0 bandwidth 512 ip address 10.1.1.5 255.255.255.252 mpls ip clock rate 2000000 end interface Serial0/1/0 bandwidth 512 ip address 10.1.1.6 255.255.255.252 mpls ip end
The OSPF route changes the path, when RIB is updated the FIB is updated instantaneously, when FIB is updated LFIB will also be updated since LSR consults FIB to build its LFIB.
m1#traceroute 10.10.10.3 Type escape sequence to abort. Tracing the route to 10.10.10.3 VRF info: (vrf in name/id, vrf out name/id) 1 10.1.1.2 [MPLS: Label 16 Exp 0] 4 msec 0 msec 4 msec 2 10.1.1.9 0 msec * 0 msec m1# Compare the trace with m1's LFIB: m1#sh mpls forwarding-table Local Outgoing Prefix Bytes Label Outgoing Next Hop Label Label or Tunnel Id Switched interface 16 No Label 10.10.10.4/32 0 Fa0/0 10.1.1.14 17 16 10.10.10.3/32 0 Se0/1/0 point2point 18 Pop Label 10.10.10.2/32 0 Se0/1/0 point2point 19 Pop Label 10.1.1.8/30 0 Se0/1/0 point2point 20 20 10.1.1.20/30 0 Se0/1/0 point2point 21 22 10.10.10.6/32 0 Se0/1/0 point2point m1#
Tips to read the LFIB
1. If the outgoing label is
No Label, and the next hop is an ip address then this means the router's outgoing interface connected to the destination host is not MPLS enabled hence the traffic is sent out via FIB and unlabeled.
2. If the outgoing label is
Pop Label then it is a PHP LSR for the FEC/prefix.
3. If outgoing label has a number/label it means it is an intermediate (aka P) LSR for the FEC/prefix that does label swapping.
mpls ip propagation-ttl is enabled in global configuration mode. This enabled user to trace the hops of the mpls router with labels as shown in above traceroute. This is because MPLS TTL field is copied from IP TTL field, on each MPLS LSR hop a TTL will be decremented.
To "hide" the MPLS hops you can disable it by doing
no mpls ip propagation-ttl on every LSR in global configuration mode. Disabling MPLS propagation TTL will make MPLS TTL field to have a fixed 255 value, and on every MPLS LSR hop the IP TTL value will be intact. IP TTL will only be decremented when egress LSR sends out to the destination host unlabeled.
m1(config)#no mpls ip propagate-ttl m1(config)# m3(config)#no mpls ip propagate-ttl m3(config)# m2(config)#no mpls ip propagate-ttl m2(config)#
Let's try the traceroute:
m1#traceroute 10.10.10.3 source 10.10.10.1 Type escape sequence to abort. Tracing the route to 10.10.10.3 VRF info: (vrf in name/id, vrf out name/id) 1 10.1.1.9 0 msec * 0 msec m1#
Let's also verify if the LFIB is still the same:
m1#show mpls forwarding-table 10.10.10.3 32 Local Outgoing Prefix Bytes Label Outgoing Next Hop Label Label or Tunnel Id Switched interface 17 16 10.10.10.3/32 0 Se0/1/0 point2point m1#
As observed from m1's LFIB, the label switching path is still unchanged, however due to propagation ttl was disabled enduser cannot see the actual mpls hops.