MPLS: Architecture, Applications, and Fault Tolerance