Professional Documents
Culture Documents
Vinit Jain
CCIE# 22854
Twitter: @vinugenie
ATE-CL032
Agenda
Fundamentals
Troubleshooting MPLS Control Plane
Troubleshooting MPLS Forwarding Plane
ATE-CL032
Fundamentals
ATE-CL032
MPLS has two major components:
Control plane: Exchanges Layer 3 routing information and labels
Forwarding plane: Forwards packets based on labels
ATE-CL032
RIB is the Routing Information Base that is analogous to the
IP routing table.
FIB aka CEF is Forwarding information base that is derived
from the IP routing table.
LIB is Label Information Base that contains all the label
bindings learned via LDP
LFIB is Label Forwarding Information Base that is derived
from FIB entries and corresponding LIB entries.
ATE-CL032
FEC ( Forwarding Equivalence Class)
Group of IP packets forwarded in the same manner (e.g. over same forwarding path)
ATE-CL032
Control plane
Routing updates from
routing protocols database
other routers
IP routing table (RIB)
Label bindings
Label Information Base (LIB) learned via LDP from
Forwarding plane other routers
Incoming IP Packet
IP forwarding table (FIB)
ATE-CL032
IGP domain with a label IGP domain with a label
distribution protocol distribution protocol
LSP follows IGP shortest path LSP diverges from IGP shortest path
ATE-CL032
MPLS uses a 32-bit label field that is inserted between Layer 2
and Layer 3 headers(frame-mode).
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
Label = 20 bits
COS/EXP = Class of Service, 3 bits
S = Bottom of Stack, 1 bit
TTL = Time to Live (Loop detection)
ATE-CL032
Ethertype 0x0800 refers to IP
Ethertype 0x8847 refers to MPLS
Based on the Ethertype, the packet is handed over to the
appropriate processing engine in the router
ATE-CL032
An MPLS packet may have more than one label
Frame Mode can handle a stack of two or more labels, depending
on the platform
Bottom most label has the S-bit set to 1
LSRs label switch packets based ONLY on the label at the top of
the stack
ATE-CL032
The following scenarios may produce more than one
label:
MPLS VPNs (two labels: The top label points to the egress router and
the second label identifies the VPN.)
MPLS TE with Fast Reroute (two or more labels: The top label is for
the backup tunnel and the second label points to the primary tunnel
destination.)
MPLS VPNs combined with MPLS TE (three or more labels.)
ATE-CL032
Troubleshooting MPLS
Control Plane
ATE-CL032
LDP_ID should be hardcoded via
mpls ldp router-ID <interface>
ATE-CL032
sh mpls ldp neighbor [neighbor]
Shows LDP neighbor and relevant info
PE1 P1
10.13.1.61/32 10.13.1.101/32
ATE-CL032
sh mpls ip binding <prefix> <mask> det
Lists all the LDP neighbors and their labels for that prefix
ATE-CL032
Be Careful on the production routers
debug mpls ldp advertisements
Useful to see label bindings that are advertised
debug mpls ldp binding
Useful to see label bindings that are received
debug mpls ldp message sent|received
Useful for the protocol understanding purposes
ATE-CL032
Troubleshooting MPLS
Forwarding Plane
ATE-CL032
With MPLS, the idea is to de-couple the forwarding from the IP
header
The forwarding decision is based on the MPLS header, not the IP
header
The above is true once the packet is inside the MPLS network
Forwarding is still based on the IP header at the edge where the
packet first enters the MPLS network
ATE-CL032
CEF must be configured on all the routers in a MPLS network.
CEF takes care of the crucial recursion and resolution
operations
CEF is must for the MPLS
ATE-CL032
PE-RTR#sh mpls forwarding 10.13.1.11
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
59 46 10.13.1.11/32 0 Se10/0/0 point2point
PE-RTR#
ATE-CL032
Untagged
Convert the incoming MPLS packet to an IP packet and forward it.
Pop
Pop the top label from the label stack present in an incoming MPLS
packet and forward it as an MPLS packet. If there was only one label in
the stack, then forward it as an IP packet. SAME as imp-null label.
Aggregate
Convert the incoming MPLS packet to an IP packet and then do a FIB
lookup for it to find out the outgoing interface.
ATE-CL032
Three cases in the MPLS forwarding:
1) Label Imposition - IP to MPLS conversion
2) Label swapping - MPLS to MPLS
3) Label disposition - MPLS to IP conversion
ATE-CL032
mpls mtu <bytes> can be applied to an interface to
change the MPLS MTU size on the interface
MPLS MTU size is checked by the router
while converting an IP packet into a labeled packet or
transmitting a labelled packet
Label imposition(s) increases the packet size by 4
bytes/label, hence the outgoing packet size may exceed
interface MTU size, hence the need to tune MTU
ATE-CL032
Remember that :
mpls mtu <bytes> command has no effect on interface
or IP MTU size.
By default, MPLS MTU = interface MTU
MPLS MTU setting doesnt affect MTU handling for IP-to-
IP packet switching
ATE-CL032
If the label imposition makes the packet bigger than the
MPLS MTU size of an outgoing interface, then:
- If the DF bit set, then discard the packet and send ICMP reply
back (with code=4)
- If the DF bit is not set, then fragment the IP packet (say, into 2
packets), and then impose the same label(s) on both the packets,
and then transmit MPLS packets
ATE-CL032
show mpls forwarding
Shows all LFIB entries (vpn, non-vpn, TE etc.)
ATE-CL032
Be Careful on the production routers
debug mpls lfib cef
Useful for seeing FIB and LFIB interaction when a label is
missing for a prefix
ATE-CL032
Label imposition is always done using FIB
ATE-CL032
Case Study
ATE-CL032
Customer reported traffic forwarding issue to the VRFs attached to a newly
configured PE2 router
The PE1 router has the VPN label which is being shared with the remote PE2
router
ATE-CL032
The first step in MPLS deployment is to verify if the LSP is complete or not.
Use ping mpls ipv4 <dest-pe-loopback> <subnet_mask> to verify LSP Path
Use traceroute mpls ipv4 <dest-pe-loopback> <subnet_mask> to verify what is the
path and see the point where MPLS packet is getting dropped
The other option is to check the labeling and LFIB information hop by hop or at
least on the node where the MPLS trace is dropped.
ATE-CL032
The MPLS PING failed
MPLS Trace dropped on P-1 router
Show mpls forwarding <PE2-loopback> output shows no label as outgoing label
Verified that LDP was enabled between the two routers but there was no
bindings
ATE-CL032
The P-1 router had an ACL to limit the allocation of labels for certain prefixes
Sometimes, there are too many prefixes in the core due to which the labels get
exhausted
To prevent such situations, LDP is configured to allocate labels for certain prefixes but
not all.
PE2 loopback address was added in the ACL which fixed the problem
ATE-CL032
References
Cisco Support Community Blog Post
- https://supportforums.cisco.com/blog/12599296/configuring-and-troubleshooting-basic-
mpls-layer3-vpn
ATE-CL032
Thank you
ATE-CL031