Cisco Express Forwarding (CEF) the technology which has been invented by Cisco omitted layer 3 in order to accelerate packets switching. It has increased significantly the efficiency and speed of packets forwarding, but there was a problem because CEF is Cisco proprietary and has worked only with Cisco devices. Then MPLS has been invented as an expansion of CEF and as an open standard solution.
MPLS is being called layer 2.5 protocol. That’s mean it works independently from 2nd and 3rd layer. It doesn’t matter which medium you are going to use to send information and what upper protocol you are using. The major thing that happens behind the scene is that each router assigns a label to each route which is being stored in the routing table and packets are being sent based on the labels. Thanks to MPLS we have one unified network infrastructure to provide many L2 and L3 services like L3 VPN scalable peer to peer model. The core routing protocol is OSPF rather EIGRP, however we use BGP vpnv4 (MultiProtocol BGP) in order to exchange routing information between Provider Edge routers.
Key terms regarding MPLS:
LSR (Label Switch Router) – router running MPLS
LSP (Label Switched Path) – the series of LSR that switch a labeled packet
LDP (Label Distribution Protocol) – actually the MPLS, LDP requires underlying protocol because on its own doesn’t participate in choosing the best path !
FEC Forwarding Equivalency Class – the group of packets forwarded in the same way through MPLS network based on common criteria. Every packet in the same FEC enters the MPLS network with the same label.
MPLS Control Plane
step1 Every LSR generates a local labels for every connected , static and IGP prefix
step2 Exchanging of prefixes to labels bindings with all LDP (label distribution protocol) neighbors
step3 Once labels are exchanged the MPLS data plane (LFIB) can be constructed. Only the best prefixes to label bindings from LIB (counterpart of RIB) get into LFIB (counterpart of FIB) . The best path is still choosen by IGP !
MPLS router sends LDP hello messages to discover LDP neighbors (UDP port 646). Each router has LDP RID.- LDP router id (the highest loopback, next highest IP assigned)
MPLS Data Plane
LSR uses FIB– Forwarding Information Base (the routing table) to forward unlabelled IP packets and LFIB – Label FIB to forward labelled packets.The FIB and LFIB databases are built by various control plane protocols like OSPF, EIGRP, BGP.
MPLS labels are significant locally (the next hop), so the LFIB (Label Forwarding Information Base) is not so huge like routing table. LFIB is being build, based on the LIB (Label Information Base) the place where a router stores the routes linked with labels.The decision about packet switching is being made based on LFIB.
LSRs advertise also a special label called Implicit NULL (label value 3) if there is a need to forward IP packets only (outside MPLS). The implicit NULL label that is being advertised by PE router, tells the downstream neighbor to remove the most outer label before sending the packet, it is an efficiency mechanism, if there is the last one MPLS router on the path, there is no need to use MPLS anymore. Remove label or remove tag means remove the label and send as a simple IP packet according to the implicity null entries in LDP neighbors table. The penultimate router before the PE (provider edge router) removes MPLS label from the packet and sends to the PE edge router bare IP packet. PE sends it to the CE (customer edge router) that uses only IP. Entire mechanism is being called PHP – Penultimate Hop Popping. Of course if we use VRFs and MP-BGP then we have the second label, called VPN label, that is meaningful only between PE routers. So MPLS label is being removed and from penultimate router is sent the “bare” packet with the VPN label, that points out to which customer the packet is destined.
How does the whole process of MPLS look like?
10.0.0.0(destination network) —-> local —–> 110 (the local label for network)
10.0.0.0(destination network) —->22.214.171.124(next hop address) —- 220 (the route label)
110 (destination network label)——->220 (next hop route label)——>serial/0/0
The router with implemented MPLS acts like a switch. Of course there can be a lot of routers in different networks with different underlay routing protocols deployed . MPLS is very flexible and not fussy. MPLS works regardless what has been deployed in layer 2 and layer 3 , the prerequisite is that MPLS technology must be run on all routers. If you are running MPLS on Cisco routers you have to run CEF in order to correct forwarding data structures required by MPLS.