MPLS improves the speed of deciding (finding) the next hop by classifying the various packets arriving at a node (ingress) and then using that classification information for all subsequent packets. This classification is achieved beforehand (using label bindings). The iteration of calculating the next hop for every packet (even though the packets have same forwarding information) in IP networks is avoided in MPLS.
Scenario: H1 is transmitting to H2
IP Routing:
For every service extensions, such as traffic engineering, differentiated service or VPNs a different architecture is used and glued to IP.
MPLS Routing:
LIB (Label Information Base)
M1 LIB
Inlabel |
Outlabel |
Outinterface |
FEC |
X |
20 |
2 |
H2 |
M2 LIB
Inlabel |
Outlabel |
Outinterface |
FEC |
20 |
31 |
2 |
H2 |
M3 LIB
Inlabel |
Outlabel |
Outinterface |
FEC |
31 |
43 |
2 |
H2 |
M4 LIB
Inlabel |
Outlabel |
Outinterface |
FEC |
43 |
X |
3 |
H2 |
How MPLS improves routing?
In the preceding eg, routers M2 & M3 have got to do is label swapping i.e. a simple table lookup such as packet.outlabel = LIB[inlabel]. More interestingly this is even true for service extensions such as traffic engineering, differentiated service and VPNs.
Assume that LIB table in every LSR is empty.
Inlabel |
Outlabel |
Outinterface |
FEC |
43 |
X |
3 |
H2 |
Inlabel |
Outlabel |
Outinterface |
FEC |
31 |
43 |
2 |
H2 |
Inlabel |
Outlabel |
Outinterface |
FEC |
20 |
31 |
2 |
H2 |
6. M1 receives label binding packet with outlabel 20. M1 knows it had initiated the label request sequence and hence it is an ingress for FEC H2. Now LIB table for M1 is:
Inlabel |
Outlabel |
Outinterface |
FEC |
X |
20 |
2 |
H2 |