MPLS – multi protocol label switching
- can transport different payloads incl. L2/L3 protocols
- switches traffic between interfaces based on locally significant label values similar to DLCI’s for frame-relay.
Why use MPLS?
- independent of medium being transported across
- allows for BGP free core thus saving routing table space e.g. up to 200,000 routing table entries on the internet.
- less resources used, less lookups
- traffic engineering – use underutilised links, b/w guarantee, quick failure detection via fast re-route.
- L2/L3 VPN Service available, no need for additional VPN technologies.
MPLS Label defined in RFC3032 – label stack encoding.
- 20 bit label – local significance
3 bit EXP – CoS – 8 variations
S bit – define bottom label in label stack
8 bit TTL
- MPLS packet can be encapsulated several times
- Top most label is most significant and determines path taken.
- MPLS labels bound to forward equivalency classes [FEC]
- Label forwarding information base [LFIB] used as against CEF FIB or IP routing table to switch traffic – as a result IP debugging of no use when troubleshooting. The LFIB is built on a hop by hop basis based on the IGP routing table.
P\LSR – provider or label switch router – internal to ISP, only switch MPLS labels.
PE\LE – provider edge\label edge – facing customer, performs both IP & MPLS lookups
CE – customer edge [no mpls knowledge, unlabelled packets only]
MPLS Label Operations:
- Label push – places mpls label onto unlabelled packets otherwise know as imposition at PE
- Label pop – on PE, removes the mpls label prior to transporting onto CE otherwise known as disposition
- Label swap – completed on P routers, replaces the mpls label
- PHP – penultimate hop popping – used to reduce load on PE routers
Label mapping information advertised using Label Distribution Protocol. These include either LDP, TDP, MP-BGP & RSVP.
- MP-BGP – RFC 3107, seen in inter-AS MPLS.
- RSVP – Resource Reservation Protocol – seen in MPLS-TE.
- LDP – Label Distribution Protocol – open standard defined in RFC 3036 using port 646 and using UDP multicast to 22.214.171.124 to discover peers and to establish TCP sessions.
- TDP – Tag Distribution Protocol – Cisco Proprietary using UDP port 711 to discover neighbours and subsequently establish TCP sessions.
Note: IGP adjacency needs to be established ahead of time and labels are automatically advertised for IGP routes which means OSPF or ISIS for the SP Lab. If no IGP available, say only BGP, then neither TDP or LDP can be used.
Three commands are required -> ip cef [to enable cisco express forwarding] globally,
then entering either mpls ip or tag-switching ip under the interface.
Note that sometime mpls ip will display as tag-switching ip depending on the IOS in question. To verify the adjacency use sh mpls ldp nei.
The established TCP session is sourced from the router-id interface by default which is usually the highest active loopback address. You must watch for this in the lab is asked to create a second loopback address at a later stage on an MPLS enabled router – it may cause adjacencies to fail. Modification of this is achieved by mpls ldp disc transport-address command.
To explicitly specify a distribution protocol use the mpls label protocol command at an interface level -> mpls label protocol ldp. it is recommended to manually specify the distribution protocol especially for production networks as IOS upgrades\router changes could have different default values. Once configured across MPLS enabled routers the NBRCHG: TDP Neighbor 172.16.12.10 (1) is UP or similar will appear on each neighbor.
Once neighbors are established you will still see UDP broadcasts taking place even though TCP sessions have been established. Why? To monitor the network segments in case new neighbors appear in order to establish peering sessions.
When troubleshooting, check the mpls forwarding table via sh mpls forwarding-table on a hop by hop basis to ensure that all neighbors are building end to end LSP’s [label switch paths] for appropriate destinations.
Also be aware of Implicit Null possibilities for directly connected neighbors and the corresponding popping that will occur as a result.
sh ldp nei
sh mpls ldp nei
sh mpls forwarding-table [IPv4 to Label mappings]
sh ip route [Underlying transit checks]
do sh run int fa0/0
debug ip packet det – look for “UDP src=xxx” entries, 711 indicates TDP, etc. [Be careful with this command]
debug mpls ldp transport events
debug mpls packets
sh log, clear log
undebug all [when complete]