Appendix C was added to the OECG in anticipation of Cisco requiring MPLS knowledge on the written exam. This has indeed happened, as of June 18, 2007. MPLS, then, is Multiprotocol Label Switching. Before we get into what MPLS is and what it does, we need to understand the challenges MPLS is designed to overcome. Specifically, MPLS allows large carrier networks to grow larger than they would be able to relying on traditional layer 3 IP forwarding. Why? What are the problems inherent in traditional IP forwarding that MPLS helps with?
Scalability and Flexibility of IP-Based Forwarding
- Routers rely on a routing protocol to populate their routing tables. This information is used to make packet-forwarding decisions, exclusively based on the destination unicast IP address.
- Layer 2 switches connect the layer 3 routers that forward the packets. The switches themselves do not make forwarding decisions based on the destination IP, but rather switch the frame from point to point, often across manually established virtual circuits. In that sense, the “in-path” switches aren’t really helping the layer 3 packet get to its ultimate destination. Rather, they are forwarding ignorantly.
- Layer 2 switches also suffer in that sub-optimal switching paths may arise because of a lack of established virtual circuits. Because VCs must be manually established, it would require someone to create a virtual circuit between every possible source and destination point to ensure that a packet always flows the most efficient way. However, this is impractical; building VCs between every possible endpoint doesn’t scale to large environments. (Consider every router building an adjacency to every other router, and the increase of routing protocol traffic the WAN would necessarily experience as a result.)
- Since traditional IP forwarding bases its forwarding decision solely on the destination IP, it becomes difficult to forward a packet along a non-traditional path (for instance, along a lightly-loaded alternate pathway). While technologies like policy-based routing exist, there hasn’t been a single technology that would scale to meet this challenge. To overcome this, then, a couple of things are desirable:
- Be able to forward a packet along an alternate path, and label that packet such that other routers in the path know to continue forwarding the packet along the alternate path.
- Packets should be able to be forwarded based on factors other than the destination IP, such as QoS requirement, ingress port, etc.
- Routing protocols communicate changes to all other routers in the domain. This convergence process takes time. It would be nice to have a means to change how a packet is forwarded, without having to tell all the other routers about that change. This could only be accomplished if the forwarding decision was based on something other than the IP header. Implicitly then, a label would need to be attached to the packet. A change in the how the packet is forwarded would then be accomplished via all routers receiving new labels.
- In a large IP network, every transit router must know about every possible IP route so that it can forward all possible packets correctly. However, if all you’re trying to do is get a packet from one specific edge network to another, it would be nice to be able to switch the packet between the two edge networks, without every transit router having to know all the network layer information to properly forward the packet.
And next, we’ll move to how MPLS helps with these challenges…