MPLS LDP (Label Distribution Protocol)

Thanks Rene.

Regards,
Madhu

1 Like

Hello
it is impossible to form LDP neighbor adjacency between R1 and R3? I mean, in order to become LDP neighbors the routers must be directly connected. Just in that case
 so R1-R3 will never become neighbors Am I Right?

Hello Rodrigo

By default, LDP neighbors are established between directly connected devices. This is done using a link-local multicast address via which a router will join a specific multicast group to receive hellos from other LSRs that are present on the specific physical link. Once neighbors are discovered, an LDP session using TCP is established.

However, it is possible to establish what are called “non-link” neighbours that could be multiple hops away on the network. This is done using the targeted hello mechanism. In such a case, hellos are sent using a directed unicast address. More on how this can be done can be found at the following Cisco documentation:

I hope this has been helpful!

Laz

Hi RenĂ© did some labs of MPLS, but i see the “No Label” in the outgoing label fo some routers. Don’t know what can be happening here.

Thanks in advance.

R1#show mpls ldp bindings 
  lib entry: 1.1.1.0/24, rev 4
	local binding:  label: imp-null
  lib entry: 1.1.1.1/32, rev 11
	remote binding: lsr: 2.2.2.2:0, label: 200
  lib entry: 2.2.2.0/24, rev 10
	remote binding: lsr: 2.2.2.2:0, label: imp-null
  lib entry: 2.2.2.2/32, rev 7
	local binding:  label: 101
  lib entry: 3.3.3.3/32, rev 13
	local binding:  label: 103
	remote binding: lsr: 2.2.2.2:0, label: 201
  lib entry: 192.168.12.0/24, rev 5
	local binding:  label: imp-null
	remote binding: lsr: 2.2.2.2:0, label: imp-null
  lib entry: 192.168.23.0/24, rev 9
	local binding:  label: 102
	remote binding: lsr: 2.2.2.2:0, label: imp-null
R1#show mpls forwarding-table 
Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop    
Label      Label      or Tunnel Id     Switched      interface              
101        No Label   2.2.2.2/32       0             Gi1/0      192.168.12.2
102        Pop Label  192.168.23.0/24  0             Gi1/0      192.168.12.2
103        201        3.3.3.3/32       0             Gi1/0      192.168.12.2
Gateway of last resort is not set

      1.0.0.0/8 is variably subnetted, 2 subnets, 2 masks
C        1.1.1.0/24 is directly connected, Loopback0
L        1.1.1.1/32 is directly connected, Loopback0
      2.0.0.0/32 is subnetted, 1 subnets
O        2.2.2.2 [110/2] via 192.168.12.2, 00:39:55, GigabitEthernet1/0
      3.0.0.0/32 is subnetted, 1 subnets
O        3.3.3.3 [110/3] via 192.168.12.2, 00:39:45, GigabitEthernet1/0
      192.168.12.0/24 is variably subnetted, 2 subnets, 2 masks
C        192.168.12.0/24 is directly connected, GigabitEthernet1/0
L        192.168.12.1/32 is directly connected, GigabitEthernet1/0
O     192.168.23.0/24 [110/2] via 192.168.12.2, 00:39:45, GigabitEthernet1/0

Hello Erick

A “No Label” scenario takes place when the label is no longer advertised by the appropriate router. In this case, the label for 2.2.2.2/32 is not advertised from R2 to R1. The pop label action is actually signalled from the ultimate router to the penultimate router. In other words, R2 tells R1 to perform a pop. This is done by advertising the label “implicit-null” for that particular prefix.

You can see from your output that there is no imp-null remote label for the 2.2.2.2/32 prefix. There is for the 2.2.2.0/24 however, but that is not enough. There is one for the 192.168.23.0/24, which shows a “Pop Label” and for 3.3.3.3/32 which also shows a “Pop Label”. The prefix must match exactly including subnet information.

Check to see what prefixes you are advertising for your loopbacks, and make sure they match the same config for 3.3.3.3/32 which is functioning correctly.

I hope this has been helpful!

Laz

The difference is that OSPF is advertising

prefix is no longer advertised by the

Hi Rene
Thanks for the great post. Many resources for LDP explains as follows.


This figure implies the sequence, which is receiving a remote binding --> local binding --> advertise. According to your post, prefix 10.0.0.0 can be locally binded and advertised regardless of receiving remote binding because all routers have a common RIB. All routers have Prefix 10.0.0.0. They can bind 10.0.0.0 to local label and advertise at any time. Is it right ?

Thanks
Michael

Hello Michael

All routers will have the 10.0.0.0/8 prefix in their LIB because it is advertised. However, the label used in each case will be different. The second router from the right in your diagram sees the remote binding of 10.0.0.0/8 with Label 33, and the same prefix has a local label of 17. This is said to be locally bound using label 17. This can indeed be advertised and is advertised to the next router to the left, which sees a remote binding of 17 and a local binding of 129.

Now routers won’t have a common RIB (each router has a unique view of the network from its point of view, so the RIBs will be different), but they will have the specific prefix in all of their RIBs and LIBs if it is advertised to them.

I hope this has been helpful!

Laz

Hi Laz
Thanks for the reply. My point is : Is it possible for a intermediate router do local binding only after receiving a remote binding(label) ? If so, the initial local binding of a network prefix should be generated by the router which has direct connection to that network segment(prefix). All the outcome of “show mpls ldp bindingsconfiguration” in this lesson are the result, which LDP has finished.

Thanks
Michael

Hello Michael

Yes, you are correct. A router does not need to create a local binding only after it receives the remote binding from another router. It creates it directly from the prefix found in the RIB. As soon as the prefix appears in the RIB, it creates a label binding and places it in the LIB, and this is done independently of any label information it received from other routers. But remember, this is the process for prefixes found within the RIB.

When using MPLS, there are customer networks that are not included in the RIB of P routers found within the MPLS infrastructure. In such cases, the local bindings are generated only after they have received the label from neighboring routers simply because that prefix is not found in the RIB.

An example of this can be found at the following lesson:

I hope this has been helpful!

Laz

Hi,

Please can someone explain hwo MPLS ping and Traceroute works ??

Thanks
Ravi

Hello Ravi

You can find a little bit of information about traceroute for MPLS here:


You can find a more comprehensive explanation of traceroute over MPLS at this Cisco documentation:

You can also find information about both ping and traceroute over MPLS at the following link as well:

I hope this has been helpful!

Laz

Hi Rene / Laz,

I have one doubt about below statement:

When we use LDP on Cisco IOS, we locally generate a label for each prefix that we can find in the RIB, except for BGP prefixes.

If the above statement is correct, then my question is how come in lesson: “Introduction to MPLS” BGP advertised routes are reachable on both the CE1 and CE2.

I had a similar Lab as made on “Introduction to MPLS” and on PE1 i have below logs:

CE1 Loopback: 4.4.4.4
CE2 Loopback: 5.5.5.5

I don’t see entry for 5.5.5.5 in LFIB and FIB, but when i search the specific entry in FIB i see an entry.

IOU2#show mpls ldp bindings            
  lib entry: 1.1.1.1/32, rev 10
	local binding:  label: 102
	remote binding: lsr: 1.1.1.1:0, label: imp-null
  lib entry: 2.2.2.2/32, rev 8
	local binding:  label: imp-null
	remote binding: lsr: 1.1.1.1:0, label: 203
  lib entry: 3.3.3.3/32, rev 14
	local binding:  label: 104
	remote binding: lsr: 1.1.1.1:0, label: 202
  lib entry: 192.168.12.0/24, rev 5
	local binding:  label: imp-null
	remote binding: lsr: 1.1.1.1:0, label: imp-null
  lib entry: 192.168.13.0/24, rev 12
	local binding:  label: 103
	remote binding: lsr: 1.1.1.1:0, label: imp-null
  lib entry: 192.168.24.0/24, rev 6
	local binding:  label: imp-null
IOU2#show mpls forwarding-table 
Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop    
Label      Label      or Tunnel Id     Switched      interface              
102        Pop Label  1.1.1.1/32       0             Et0/1      192.168.12.1
103        Pop Label  192.168.13.0/24  0             Et0/1      192.168.12.1
104        202        3.3.3.3/32       0             Et0/1      192.168.12.1
IOU2#show mpls forwarding-table 5.5.5.5
Local      Outgoing   Prefix           Bytes Label   Outgoing   Next Hop    
Label      Label      or Tunnel Id     Switched      interface              
None       202        5.5.5.5/32       0             Et0/1      192.168.12.1

Regards,
Justin

Hello Justin

In the Introduction to MPLS lesson, BGP advertised routes are reachable on both CE1 and CE2 because they have been learned via BGP. Remember that LDP is used only for the MPLS backbone and the CE routers do not participate in this.

Now in your output, you say that you don’t see 5.5.5.5, but you see it only if you search for that particular prefix. You will find that under the Local Label column, you see that it says None which verifies it has not been assigned a local label.

The following Cisco documentation is quite comprehensive and useful to further describe the functionality of LDP as far as BGP goes:

I hope this has been helpful!

Laz

1 Like

can two router having the same loopback address form ldp adjacency and become neighbor ?

Hello Rohit

When becoming LDP neighbors, routers identify themselves with a unique ID called the Label Switch Router (LSR) ID. This ID by default is the highest IP address on a loopback interface. But this is not only an ID, but it is also the transport address, which is the IP address that will be used to allow these devices to communicate and exchange information over a TCP connection.

As with any communication on an IP network, the IP addresses used as transport addresses must be unique and must be advertised using a routing protocol (or static routing). If you have the same IP address on two such loopback interfaces, then as you know, this will not function correctly. So the loopbacks must be unique.

I hope this has been helpful!

Laz

Hi Rene. In the explanation about the route table and the output of show mpls ldp bindings, you stated that R1 does’t create a label for any of the connected routes. Why would this be the case? I thought I had read earlier that a label is assigned to EVERY prefix.

Hello Buck

It is true that it is stated in the lesson that “LDP will create a label for each prefix.” It also states that “we locally generate a label for each prefix that we can find in the RIB, except for BGP prefixes. This information is then added to the LIB (Label Information Base).”

You must keep in mind, however, that we can see prefixes and labels from different points of view. If you are looking from the point of view of R1, then any directly connected prefixes will not have a label in the local LIB. That prefix will however participate in LDP having a label assigned to it when viewed from other routers. When looking at the network as a whole, all prefixes on interfaces where the mpls ip command has been implemented will be assigned a label. It makes sense, however, from a routing point of view, that within any particular router, labels need not be assigned to a prefix that is directly connected.

I hope this has been helpful!

Laz

Is LSR ID is same as transport address in LDP ?

Nihar

hello Nihar

By default, LDP advertises its LSR ID as the transport address within the LDP discovery hello messages. This can also be seen in the Wireshark capture shown in the lesson where the LSR ID is the same as the transport IP:

However, if you choose to you can change the transport IP to use a different address using the discovery transport-address command. More about this command can be found here:

I hope this has been helpful!

Laz

Hi Team,

Could you please explain why LDP will not add label for BGP prefix ?

Thanks,
Abhi