MPLS protocol uses labels to forward traffic between point A and B. These labels are binded to FECs and distributed on the network by means of different protocols like (LDP, RSVP, BGP-LS, SPRING).
LDP (Label Distribution Protocol “RFC5036”) is still by far the widely used protocol among them and was developed to do label distribution unlike RSVP and BGP.
In this article we will discuss how LDP binds labels to FECs and how it distributes these labels on the network.
As stated above the main goal of LDP is to distribute labels on the network so once activated on the routers LDP will try to discover directly connected peers by sending multicast messages to UDP port number 646 but it allows for discovery of remote peers using targeted hello messages that span multiple hops for some specific use cases.
Once a peer is discovered, a TCP session is established to it using the port 646 in a way to stat the exchange of Label/FEC bindings based on the features and mode that are negotiated between the peers.
To establish LSPs, LDP relies on IGP protocols and LSPs are always following the best path to destination which means that the two protocols have to work on tandem and kept synchronized to avoid any traffic loop or blackhole situation.
Label retention mode:
Label Retention means what labels a router have to conserve for a given FEC. Should a router conserve labels coming from different routers even if are not all in the forwarding path? or should it conserve only labels from the IGP best next hop router to destination and discard the rest?
The first option is called Liberal Retention and the second option is called Conservative label retention.
To explain the difference between these two modes, let’s use the diagram below:
Assuming that all links have the same cost hence to reach Loopback 0 from R1 the path “R1″>”R2″>”R4″>”R5” will be used.
- “R5” associate “L1” label to the connected loopback interface and send it to its neighbor “R4”
- “R4” binds label “L2” and send it to both “R2” and “R3”
- “R3” binds label “L3” and send it toward “R2”
- “R2” binds label “L4” to the FEC represented by the Loopback0.
From here we can raise to points :
- R2 receive two labels to the same FEC,one from “R4” and the other from “R3”
- Each router advertises a Label to its peers and expects receiving the flow tagged with that label. This method is called downstream distribution
The first remark is about retention mode. In LDP we have to mode:
- liberal retention mode: on which “R2” will retain label from “R3” and from “R4” even if in normal circumstance the LSP will be establish through trough the short path “R1″>”R2″>”R4″>”R5” this mode is resource consumer as the router will install in the Label Information Base some labels that won’t be used immediately but in case of “R2” “R4” link failure the label will switch swap rapidly to the label received and installed from “R3” earlier to repair the LSP.
- Conservative retention mode: on which R2″ and on the reception for label “L3” from “R3” it will discard it. Which make sense in case you have to preserve resources and uses them for other processes but this method comes at cost since unwanted labels are discarded,if the link between “R2” “R4” fails the traffic will be blackholed until the reception and the installation of the Label from “R3”.
Within today network, Routers come with large memory capacity to handle a large label space so the Liberal retention mode is the widely used mode.
The second remark is about the mode of label distribution:
Based on RFC3031: ” the decision to bind a particular label L to a particular FEC F is made by the LSR which is DOWNSTREAM with respect to that binding. The downstream LSR then informs the upstream LSR of the binding. Thus, labels are “downstream-assigned”, and label bindings are distributed in the “downstream to upstream” direction ” If we apply the RFC above to our diagram when “R4” receives label “L1” to loopback 0 from “R5” it assigns a label “L2” and sends it downstream to “R3” and “R2” then R2 expect that for all traffic going to Loopback 0 be tagged with “L2” label in the incoming interface before it swaps the label to “L1” and send it upstream to “R5”. This method is called downstream allocation In the other side should “R4” send label for the Loopback0 to “R3” and “R2” (unsolicited label distribution) or only for routers ask for them (On demand label distribution)?. Having known about the unwanted blackhole situation that will be raised if the second option has been used. The vast majority of vendors prefer the first mode of label distribution. So, the label distribution mode used by LDP is called downstream unsolicited.