5. Deep dive on Label Distribution Modes
Let’s have a look at label distribution modes. There are basically two distribution modes, the downstream-on-demand and the unsolicited downstream. With downstream-on-demand, each LSR will actually request its next hop for a particular label for that LSP. What is the next hop? Well, basically, the next hop router is what you find in the routing table as the next hop for a particular prefix or FEC. So it will request the downstream neighbor for a particular label, and it will wait for that downstream LSR to come back with a label. With unsolicited downstream, in that label distribution mode, there is no request. Each LSR will just distribute label modes ad hoc to all its LDP neighbors. There is no requesting of labels at all. So we have the downstream-on-demand label distribution mode, or DOD, basically because there is a request and a reply for a particular label for a particular LSP. There will only be one remote binding per LSP. With the unsolicited downstream label distribution mode, there can be one, but there can be many more remote label bindings, because each LSR will typically get from each of its neighbors a remote binding for each LSP. Let’s have a look at the unsolicited downstream label distribution mode.
Basically, as soon as each LSR learns about a particular prefix, in this case, the prefix 10.1.1./24, on the right-hand side, it will start to advertise a label binding, in any given order. As soon as the route is in the routing table, LDP will advertise the label binding, so the prefix and the associated label, to all its LDP neighbor. In the end, every LSR will have a label binding for that prefix, from all its LDP neighbors. With the downstream-on-demand label distribution mode, you basically need to have an LSR that starts a request. So imagine here that the LSR on the left-hand side sees in its routing table the prefix 10.1.1.0/24. It could send out a request for a label for that prefix, and it will send that request downstream, so when it looks up the prefix in the routing table, it wilL find the next hop router, which is this router, in the routing table, and it will send a request for a label for that particular prefix to that router. That LSR will do the same, in term, and the downstream routers will do the same as well. Until we reach the LSR where the prefix is actually connected, in that case, that LSR will initiate the reply, so it will send the label binding back upstream towards the initiator of the request. Only when the LSR that initiated the request receives the label binding, now the packets can be forwarded downstream towards the destination prefix. There’s also something which is called the label retention modes. We basically have two label retention modes, the liberal label retention mode, and the conservative label retention mode. With the liberal retention mode, every router is going to store the label bindings for every prefix, from each and all of the LDP neighbors it received a remote binding from. There’s an advantage to that. The router will adapt quicker to routing changes, if there are any. With conservative label retention mode, the LSR will store only one remote binding per prefix. All the rest it will not store at all. So the advantage here is of course that it will need to store fewer labels. The disadvantage is that it will not have this quicker adaptation to routing changes, which is what the liberal label retention mode has. So let’s have a look at the quicker adaptation to routing changes with the liberal label retention mode. In this case, we will look at router A, and it is forwarding label traffic towards the prefix 10.1.1.0/24. Router A receives a label binding from its two LDP neighbors, neighbor router B and from router D. The traffic will be forwarded over router B because the top path is the least-cost path. So the traffic from router A will be forwarded towards the destination, to the next hop router, B, with a label 123 on top of the packet. However, if there is a routing change, like the link between router A and B going down, then router A will look what other labels it has toward. And it will look in its routing table, and it sees that the routing has changed. The next hub for the prefix is not router B anymore, but it’s now router D. As soon as it figures out that a routing table has changed, and the next hop router is now router D, it will look for the remote binding that router D has advertised, and it will find the remote binding for that prefix, and it will figure out that the label is 99, so now router A, as soon as routing table has converged, can now switch over to traffic with label 99, over router D. Whereas if you would not have the liberal label retention mode, router A would have to wait for router D to advertise a new label binding, so that would introduce an additional delay. We also have two LSP control modes. We have the independent LSP control mode and the ordered LSP control mode. With the independent LSP control mode, the LSR can create a local binding as soon as it learns about the FEC order LSP, and this happens independently from the other LSRs. This disadvantage is here that the router, or the LSR, might start to forward label packets where the downstream router is not ready yet to forward label packets, and then that downstream router will drop the label packets. This is not something that will happen with the ordered LSP control mode, because with the ordered LSP control mode, the LSR will only create a local binding if it recognizes that it’s the eagerest LSR for the FEC, for example, if the prefix is directly connected to that LSR, or if the LSR has received a label binding from the next hop router. The disadvantage is here that it takes more time to create the LSP end to end, but the advantage is here that the packets only are forwarded when every router along the path is ready to forward labeled packets. Let’s have a look at some routers, and let’s have a look at the label distribution modes. So let’s have a look at the lap. I have a lap set up here, and it’s actually running on Virl, which is some software that Cisco has to be running virtual lap routers. Throughout the course, I have a few set-ups, and for this particular lesson, I have this set-up. All the routers are running iOS, it’s kind of easy to use, it’s also kind of the de facto standard, most people still know how iOS works, they know to see a light and so on, so it’s pretty easy to use. With this network, I have seven routers here. The loopbacks typically have a loopback IP address, which is 10.100.1 dot something slash 32, and all the link IP addresses are 10.1 dot something dot something slash 24. And I will use that key throughout this live lesson course. So let’s have a look at some of the routers. Here we have router one, and it is running MPLS LDP with its neighbors, we’re going to have a look at that. So we can see that this router one actually has three LDP neighbors, and that makes sense, because router one has router two, router seven, and router six as LDP neighbors. But we are here to look at the bindings. What do we have as bindings? We just type “show npls ldp bindings” and we see all the bindings that router one received from its LDP neighbors. So what do we have here? While in the lib, which is the label information base, so it’s basically the table where we store all the label bindings, either the local ones or the remote ones. And typically we will see here the prefixes, different prefixes. These are all the IDP prefixes that this router has. So if you do show IP route, you will see all the prefixes in there, and for all the IDP prefixes in the routing table, you will see an entry here. For each of these prefixes, we will have one local binding, one binding only, and one or more remote bindings. How many remote bindings? Well it depends on the number of neighbors that you have, in this case, router one had three LDP neighbors, so we have three remote bindings. For each entry, for each prefix that we see here, we have a local binding. Now if the prefix is directly connected, we see this implicit null label assigned to it, we’ll come back to that in a later lesson, and then we have the remote bindings, so we either have implicit null again, which was advertised by the LDP neighbor, or an actual label value, which is between label 16 and one million and a bit. Remember that the labels between zero and 15 are actually reserved labels, they have a special value. So they will not show up as a number here. You can see that each neighboring router, this is neighbor two, this is router six, and this is R7, they all advertised a particular binding, a label, or that particular prefix. You can also look at a particular binding in detail. So let’s have a look at 10.100.1.5, which is the loopback of router five. So if you look at the topology, we are at router one here, and we are looking at 10.100.1.5/32, which is the loopback of router five. And we can see that we have a local binding for it, labeled 26, and we have three remote bindings, one received from router two, one received from router six, one received from router seven, each with a respective label.