Sometimes when I'm troubleshooting complex MPLS environments I have doubts with the outputs of these CLI commands:
1) show route table inet.3
All routes learned through MPLS.
Only I can see PUSH actions.
2) show route table mpls.0
I can see SWAP actions and metric always is 1.
Please could you clarify when use it?
Thanks in advance!
inet.3 holds only INGRESS IPv4->MPLS routes. Use it when t'shooting ingress IP PE.
mpls.0 holds ingress MPLS|CCC->MPLS, transit MPLS->MPLS and egress MPLS->CCC|IP lookup routes.
Use it when t'shooting transit P, egress PE (IP or CCC) or ingress CCC PE.
CCC is Curcuit Cross Connect, allows to xconnect an interface into another interface or RSVP LSP
mpls.0 contains MPLS labels, and the action a router should take when receiving MPLS packets,
inet.3 contains IP routes, installed by RSVP and LDP. These routes are routes for the address of the egress node on an LSP.
As an example, let's say you configure an LSP on PE1 with egress address 192.168.2.2, as shown:
NOTES: no VPNs are implemented, and ISIS is the IGP.
As you can see, RSVP signaled the LSP from PE1 to PE2, and on PE1 a route was installed in inet.3 for the LSP's egress address (192.168.2.2), with next-hop 10.1.1.2 (the P router), AND using LSP1 (which means pushing label 300576). The P router installed a label in mpls.0 that indicates that when receiving an MPLS packet with a label of 300576, the action will be: pop the label, and forward the packet to 10.2.2.2 (PE2). Basically, the ingress node uses inet.3, and the P router uses mpls.0. However, inet.3 is NOT used for packet forwarding, so how is it used?
Let's say now that PE2 is receiving a BGP route for 126.96.36.199 from CE2, and is advertising the route to PE1 using IBGP (changing the next-hop to its own address 192.168.2.2). When PE1 receives the route, is has to resolve the BGP next hop to a physical next-hop.
As you can see in the diagram, BGP have access to both inet.0 and inet.3 for next-hop resolution. It will chose the route in inet.3 because it has a better preference. As a result, BGP installs a route for 20.1.1/24 in inet.0 for 20.1.1/24, with a next-hop of 10.1.1.2 (the P router), AND using LSP1 (which means push label 300576).
When PE1 receives IP packets going to 20.2.2/24, the route in inet.0 is used. So, PE1 pushes a label of 300576 and send the packet to the P router. The P router checks mpls.0 and find label 300576 so it pops the label and forwards the IP packet to PE2 (with no label). PE2 checks inet.0 and sends the packet to CE2.