In conventional
Layer 3 forwarding mechanisms, as a packet traverses the network, each router
extracts all the information relevant to forwarding the packet from the Layer 3
header. This information is then used as an index for a routing table lookup to
determine the next hop for the packet.
In the most common
case, the only relevant field in the header is the destination address field,
but in some cases, other header fields might also be relevant. As a result, the
header analysis must be done independently at each router through which the
packet passes. In addition, a complicated table lookup must also be done at
each router.
In label switching,
the analysis of the Layer 3 header is done only once. The Layer 3 header is
then mapped into a fixed-length, unstructured value called a
label.
Many different headers
can map to the same label, as long as those headers always result in the same
choice of next hop. In effect, a label represents a forwarding equivalence
class—that is, a set of packets which, however different they may be, are
indistinguishable by the forwarding function.
The initial choice of
a label need not be based exclusively on the contents of the Layer 3 packet
header; for example, forwarding decisions at subsequent hops can also be based
on routing policy.
After a label is
assigned, a short label header is added at the front of the Layer 3 packet.
This header is carried across the network as part of the packet. At subsequent
hops through each MPLS router in the network, labels are swapped and forwarding
decisions are made by means of MPLS forwarding table lookup for the label
carried in the packet header. Hence, the packet header does not need to be
reevaluated during packet transit through the network. Because the label is of
fixed length and unstructured, the MPLS forwarding table lookup process is both
straightforward and fast.