MPLS is the abbreviation of Multiprotocol Label Switching. It is a WAN protocol that sends data from one router to another router, based on short path labels rather than IP network addresses. It was created from 1994 to 1999 as an alternative to Internet Protocol (IP) routing. It was the more effective alternative to multilayer switching and IP over ATM. In the IP routing, Each router is independently resolved the next hop for the packet by examining the destination IP address before consulting its routing table. The routing process is time-consuming and also consumes hardware resources. This is resulting in the degrading process of real-time applications, for example, voice and video.

MPLS is multiprotocol because it carries any payload including IPv4, IPv6, Ethernet, ATM, DSL, and Frame Relay. MPLS labels a packet which helps the router what to do with a packet. The labels also recognize paths between remote routers rather than endpoints. The third figure is switching, MPLS only routes IPv4 and IPv6 packets, everything else is switched.

Usually, service providers used Multiprotocol Label Switching. It can transport any type of packet between different sites. It can encapsulate packets of different network protocols. It supports a broad range of WAN technologies as well as T-carrier links, E-carrier links, Ethernet carrier, ATM, Frame Relay, and DSL. We can connect different sites to the MPLS cloud using different access technologies.

MPLS Labels

When a packet enters a label-switched path (LSP), the ingress switch examines the packet and labels the packet based on its destination. The label is placed in the packet’s header. The label transforms the packet from IP routing to label switching. The packet is then forwarded to the next provider switch in the label-switched path (LSP).  The LSRs perform packet forwarding based only on those MPLS labels. In the end, the egress router removes the labels and forwards the original IP packet toward its destination. MPLS labels have four parts. The 20 bits label value, 3 bit experimental, 1 bit bottom of the stack and 8 bits TTL.