tribution Protocol (LDP) [12]. Assuming all of the nodes in the network have labels informing them how to reach each PE over each of their outgoing interfaces, each node now uses its routing database to determine the lowest cost path for each destination PE. This path identifies the next hop-the next adjacent router in the lowest cost path toward that destination. It finds the label that the next hop has advertised to use for that destination PE and creates a binding in its forwarding table that looks like-"If a packet comes to me with label X, swap the label to Y (label next hop wants me to use for the same PE associated with X) and push the packet out the interface connected to the next hop on the shortest path to the destination." Figure 13.12 shows a simple network topology including the metric (the term weight is used interchangeably) for each link. For simplicity, we have only shown the label advertisements for PE3. use Label 17 for PE3 use Label 33 for PE3 use Label 56 for PE3 use Label 8 for PE3 A would load rule: if you receive a packet with label 56, swap the label to 8 and send packet on interface to B B would load rule: if you receive a packet with label 8, remove (pop) the label and send packet on interface to PE3 C would load rule: if you receive a packet with label 17, swap the label to 56 and send packet on interface to A D would load rule: if you receive a packet with label 33, swap the label to 8 and send packets on interface to B FIGURE 13.12 Basic LDP operations. Network Core As we can see, this process creates LSPs or tunnels from PE1 to PE3 and PE2 to PE3. The tunnel from PE2 to PE3 goes through C-A-B. When PE2 wants to get a packet to PE3 it: Pushes label 17 into the MPLS header and sends it C C then swaps the label to 56 and sends the MPLS packet to A A then swaps the label to 8 and sends to B B removes the MPLS overhead completely (the expression used is it that "pops" the label) and sends the packet to PE3 Prior to deploying MPLS, the core had to know how to route IP packets. It maintain