rfc-3478

Graceful Restart Mechanism for Label Distribution Protocol

M. Leelanivas, Y. Rekhter, R. Aggarwal
date2003-02 streamIETF areartg wgmpls statusPROPOSED STANDARD pages12 canonicalhttps://www.rfc-editor.org/rfc/rfc3478 doi10.17487/RFC3478
This document describes a mechanism that helps to minimize the negative effects on MPLS traffic caused by Label Switching Router's (LSR's) control plane restart, specifically by the restart of its Label Distribution Protocol (LDP) component, on LSRs that are capable of preserving the MPLS forwarding component across the restart. The mechanism described in this document is applicable to all LSRs, both those with the ability to preserve forwarding state during LDP restart and those without (although the latter needs to implement only a subset of the mechanism described in this document). Supporting (a subset of) the mechanism described here by the LSRs that can not preserve their MPLS forwarding state across the restart would not reduce the negative impact on MPLS traffic caused by their control plane restart, but it would minimize the impact if their neighbor(s) are capable of preserving the forwarding state across the restart of their control plane and implement the mechanism described here. The mechanism makes minimalistic assumptions on what has to be preserved across restart - the mechanism assumes that only the actual MPLS forwarding state has to be preserved; the mechanism does not require any of the LDP-related states to be preserved across the restart. The procedures described in this document apply to downstream unsolicited label distribution. Extending these procedures to downstream on demand label distribution is for further study. [STANDARDS-TRACK]

Extracted elements (24)

design-rationale §3.2

An alternative restart procedure (Section 3.2) is described for LSRs that have at least as many unallocated as allocated labels. During restart, these LSRs create new label bindings via normal LDP, potentially holding two bindings per FEC simultaneously (old stale + new); both share the same outgoing label and next hop, and the stale one is deleted on restart completion.

mpls, routing

design-rationale §1

LSRs that cannot preserve MPLS forwarding state across restart still benefit from implementing a subset of this mechanism, because their neighbors who can preserve state will be able to minimize traffic disruption. Supporting the mechanism is thus useful even for non-preserving LSRs.

mpls, routing

design-rationale §1

The mechanism makes minimalistic assumptions: only the actual MPLS forwarding state (incoming label to outgoing label/next-hop mappings) must be preserved across restart; no LDP-related state needs to be preserved. This is the minimum required not to perturb LSPs traversing a restarting LSR.

mpls, routing

interoperability-note §1

The procedures in this document apply only to downstream unsolicited label distribution. Extending these graceful restart procedures to downstream on-demand label distribution is explicitly left for further study.

mpls, routing

normative-requirement §3.3 SHOULD NOT

After releasing a label, an LSR SHOULD NOT re-use that label for advertising a <label, FEC> binding to a graceful-restart-capable neighbor for at least the sum of the FT Reconnect Timeout plus Recovery Time as advertised by that neighbor. This prevents mis-routing from premature label reuse.

mpls, routing

normative-requirement §3.1 MUST

After restarting, an LSR MUST check whether it was able to preserve its MPLS forwarding state. If not, the LSR sets Recovery Time to 0 in the FT Session TLV sent to neighbors.

mpls, routing

normative-requirement §3.3 SHOULD

If a session is re-established and the neighbor indicates it did not preserve forwarding state (Recovery Time = 0), the LSR SHOULD immediately delete all stale label-FEC bindings received from that neighbor. If forwarding state was preserved (non-zero Recovery Time), the LSR SHOULD keep stale bindings for the lesser of the Recovery Time and the local Maximum Recovery Time.

mpls, routing

normative-requirement §3.3 SHOULD

Once an LSR creates a <label, FEC> binding, it SHOULD keep that label value as long as it has a route to the FEC. To minimize mis-routing from label reuse, when assigning a new label the LSR SHOULD pick the least recently used label.

mpls, routing

normative-requirement §2 MUST

The L (Learn from Network) flag in the FT Session TLV MUST be set to 1 to indicate that the LDP Graceful Restart procedures defined in this document are in use. All other FT flags are set to 0 by the sender and ignored on receipt.

mpls, routing

normative-requirement §3.3 SHOULD

The LSR SHOULD complete the exchange of label mapping information with a restarted neighbor within 1/2 of the Recovery Time advertised in the neighbor's FT Session TLV.

mpls, routing

normative-requirement §3.1 SHOULD

The MPLS Forwarding State Holding timer value SHOULD be configurable. At expiration, all entries still marked as stale SHOULD be deleted.

mpls, routing

normative-requirement §2 SHOULD

The Recovery Time SHOULD be long enough to allow neighboring LSRs to re-sync all LSPs in a graceful manner without creating congestion in the LDP control plane.

mpls, routing

normative-requirement §3.3 SHOULD

When an LSR detects that an LDP session with a neighbor went down, and the neighbor had advertised FT capability, the LSR SHOULD retain the label-FEC bindings received over that session (marking them stale) rather than discarding them immediately, to allow graceful re-synchronization.

mpls, routing

protocol-element §2

An LSR signals LDP Graceful Restart capability by including the Fault Tolerant (FT) Session TLV as an Optional Parameter in the LDP Initialization message. The TLV carries two key fields: FT Reconnect Timeout and Recovery Time, both in milliseconds.

mpls, routing

protocol-element §3.1.1

For a non-egress restarting LSR receiving a Label Mapping message with a non-Implicit-NULL label, the LSR searches for a forwarding state entry with matching outgoing label and next hop. If found, the entry is un-marked as stale and the incoming label is re-associated with the received FEC and re-advertised to neighbors.

mpls, routing

protocol-element §3.1.2

For a restarting egress LSR configured to generate a non-NULL label, the LSR searches for a Label-pop forwarding entry with a next hop matching the FEC's next hop. If found, the entry is un-marked as stale and the incoming label is re-advertised. If the LSR generates a NULL label for a FEC, it simply re-advertises that NULL label via LDP.

mpls, routing

protocol-element §3.1.1

For a restarting LSR acting as penultimate hop (Implicit NULL received), the LSR searches for a forwarding entry indicating Label pop with matching next hop. If found, the entry is un-marked as stale, the incoming label is associated with the FEC, and advertised to neighbors.

mpls, routing

protocol-element §2

The FT Reconnect Timeout specifies how long (in ms) the receiver of the TLV should wait after detecting LDP communication failure before discarding preserved MPLS forwarding state for LSPs traversing the link. A value of 0 means the sender will not preserve forwarding state but still supports Section 3.3 procedures.

mpls, routing

protocol-element §3.3

The Neighbor Liveness Timer is a local, configurable timer started when an LDP session with a neighbor goes down. Stale label-FEC bindings are kept for the lesser of the FT Reconnect Timeout advertised by the neighbor and the Neighbor Liveness Timer; if no session is re-established in this window, stale bindings SHOULD be deleted.

mpls, routing

protocol-element §2

The Recovery Time field in the FT Session TLV specifies how long (in ms) a restarting LSR will retain its preserved MPLS forwarding state after sending the post-restart Initialization message. A value of 0 means forwarding state was not preserved (or is no longer available).

mpls, routing

protocol-element §3.3

When handling Label Mapping messages from a restarted neighbor, the LSR treats stale LIB entries as if received over the new session. If the received binding matches a stale entry exactly, the stale mark is cleared. If the label differs from the stale entry, the LIB is updated with the new label.

mpls, routing

security-consideration §4

An intruder impersonating an LDP peer can force TCP session failure and reconnect with Recovery Time set to 0, causing all previously received labels to be released. Similarly, an intruder intercepting traffic between peers can override Recovery Time to 0 in the FT Session TLV. Both attacks are countered by MD5-based or other peer authentication as outlined in the base LDP specification.

mpls, security, routing

security-consideration §4

Continuing to use labels after session expiry creates a mis-routing risk: if the upstream LSR detects session failure after the downstream LSR has released and re-used the label, traffic may be sent to unintended destinations. This vulnerability is exacerbated by the Reconnect Timeout, which extends the period of valid-but-stale label use. To reduce this risk, the document requires labels not be re-used for at least Reconnect Timeout plus Recovery Time.

mpls, security, routing

state-machine §3.1

Upon preserving forwarding state, the restarting LSR starts an MPLS Forwarding State Holding timer and marks all forwarding state entries as 'stale'. The LSR is 'in the process of restarting' while the timer runs; it 'completes restart' when the timer expires. At expiry, all entries still marked stale SHOULD be deleted.

mpls, routing