Multi-Protocol Label Switching (MPLS) was introduced for improving the speed of routers and providing traffic-engineering functions (i.e., determining the path that traffic takes in the network). MPLS generates short and fixed-length label that represents an IP packet's header. Traditionally in IP networks, routers use a packet's destination IP address located in the packet header to determine the next hop of the packet until it gets to its destination. However, in MPLS networks IP packets are encapsulated with an MPLS label by the first MPLS node encountered in the network (usually an ingress node or MPLS edge router). The MPLS edge router analyzes the contents of the IP header and selects an appropriate label to encapsulate the packet. Unlike an IP network, where the only factor taken is the destination IP address, an MPLS ingress node utilizes quality of service analysis as well as the destination IP address when routing the packet. This is the first step toward traffic engineering in MPLS networks. Inside the network, intermediate MPLS nodes use the MPLS label instead of the IP header to make forwarding decisions.