Network Working Group L. Andersson Request for Comments: 3036 Nortel Networks Inc. Category: Standards Track P. Doolan Ennovate Networks N. Feldman IBM Corp A. Fredette PhotonEx Corp B. Thomas Cisco Systems, Inc. January 2001 LDP Specification Status of this Memo This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited. Copyright Notice Copyright (C) The Internet Society (2001). All Rights Reserved. Abstract The architecture for Multi Protocol Label Switching (MPLS) is described in RFC 3031. A fundamental concept in MPLS is that two Label Switching Routers (LSRs) must agree on the meaning of the labels used to forward traffic between and through them. This common understanding is achieved by using a set of procedures, called a label distribution protocol, by which one LSR informs another of label bindings it has made. This document defines a set of such procedures called LDP (for Label Distribution Protocol) by which LSRs distribute labels to support MPLS forwarding along normally routed paths. Andersson, et al. Standards Track [Page 1] RFC 3036 LDP Specification January 2001 Table of Contents 1 LDP Overview ....................................... 5 1.1 LDP Peers .......................................... 6 1.2 LDP Message Exchange ............................... 6 1.3 LDP Message Structure .............................. 7 1.4 LDP Error Handling ................................. 7 1.5 LDP Extensibility and Future Compatibility ......... 7 1.6 Specification Language ............................. 7 2 LDP Operation ...................................... 8 2.1 FECs ............................................... 8 2.2 Label Spaces, Identifiers, Sessions and Transport .. 9 2.2.1 Label Spaces ....................................... 9 2.2.2 LDP Identifiers .................................... 10 2.2.3 LDP Sessions ....................................... 10 2.2.4 LDP Transport ...................................... 11 2.3 LDP Sessions between non-Directly Connected LSRs ... 11 2.4 LDP Discovery ..................................... 11 2.4.1 Basic Discovery Mechanism .......................... 12 2.4.2 Extended Discovery Mechanism ....................... 12 2.5 Establishing and Maintaining LDP Sessions .......... 13 2.5.1 LDP Session Establishment .......................... 13 2.5.2 Transport Connection Establishment ................. 13 2.5.3 Session Initialization ............................. 14 2.5.4 Initialization State Machine ....................... 17 2.5.5 Maintaining Hello Adjacencies ...................... 20 2.5.6 Maintaining LDP Sessions ........................... 20 2.6 Label Distribution and Management .................. 21 2.6.1 Label Distribution Control Mode .................... 21 2.6.1.1 Independent Label Distribution Control ............. 21 2.6.1.2 Ordered Label Distribution Control ................. 21 2.6.2 Label Retention Mode ............................... 22 2.6.2.1 Conservative Label Retention Mode .................. 22 2.6.2.2 Liberal Label Retention Mode ....................... 22 2.6.3 Label Advertisement Mode ........................... 23 2.7 LDP Identifiers and Next Hop Addresses ............. 23 2.8 Loop Detection ..................................... 24 2.8.1 Label Request Message .............................. 24 2.8.2 Label Mapping Message .............................. 26 2.8.3 Discussion ......................................... 27 2.9 Authenticity and Integrity of LDP Messages ......... 28 2.9.1 TCP MD5 Signature Option ........................... 28 2.9.2 LDP Use of TCP MD5 Signature Option ................ 30 2.10 Label Distribution for Explicitly Routed LSPs ...... 30 3 Protocol Specification ............................. 31 3.1 LDP PDUs ........................................... 31 3.2 LDP Procedures ..................................... 32 3.3 Type-Length-Value Encoding ......................... 32 Andersson, et al. Standards Track [Page 2] RFC 3036 LDP Specification January 2001 3.4 TLV Encodings for Commonly Used Parameters ......... 34 3.4.1 FEC TLV ............................................ 34 3.4.1.1 FEC Procedures ..................................... 37 3.4.2 Label TLVs ......................................... 37 3.4.2.1 Generic Label TLV .................................. 37 3.4.2.2 ATM Label TLV ...................................... 38 3.4.2.3 Frame Relay Label TLV .............................. 38 3.4.3 Address List TLV ................................... 39 3.4.4 Hop Count TLV ...................................... 40 3.4.4.1 Hop Count Procedures ............................... 40 3.4.5 Path Vector TLV .................................... 41 3.4.5.1 Path Vector Procedures ............................. 42 3.4.5.1.1 Label Request Path Vector .......................... 42 3.4.5.1.2 Label Mapping Path Vector .......................... 43 3.4.6 Status TLV ......................................... 43 3.5 LDP Messages ....................................... 45 3.5.1 Notification Message ............................... 47 3.5.1.1 Notification Message Procedures .................... 48 3.5.1.2 Events Signaled by Notification Messages ........... 49 3.5.1.2.1 Malformed PDU or Message ........................... 49 3.5.1.2.2 Unknown or Malformed TLV ........................... 50 3.5.1.2.3 Session KeepAlive Timer Expiration ................. 50 3.5.1.2.4 Unilateral Session Shutdown ........................ 51 3.5.1.2.5 Initialization Message Events ...................... 51 3.5.1.2.6 Events Resulting From Other Messages ............... 51 3.5.1.2.7 Internal Errors .................................... 51 3.5.1.2.8 Miscellaneous Events ............................... 51 3.5.2 Hello Message ...................................... 51 3.5.2.1 Hello Message Procedures ........................... 54 3.5.3 Initialization Message ............................. 55 3.5.3.1 Initialization Message Procedures .................. 63 3.5.4 KeepAlive Message .................................. 63 3.5.4.1 KeepAlive Message Procedures ....................... 63 3.5.5 Address Message .................................... 64 3.5.5.1 Address Message Procedures ......................... 64 3.5.6 Address Withdraw Message ........................... 65 3.5.6.1 Address Withdraw Message Procedures ................ 66 3.5.7 Label Mapping Message .............................. 66 3.5.7.1 Label Mapping Message Procedures ................... 67 3.5.7.1.1 Independent Control Mapping ........................ 67 3.5.7.1.2 Ordered Control Mapping ............................ 68 3.5.7.1.3 Downstream on Demand Label Advertisement ........... 68 3.5.7.1.4 Downstream Unsolicited Label Advertisement ......... 69 3.5.8 Label Request Message .............................. 69 3.5.8.1 Label Request Message Procedures ................... 70 3.5.9 Label Abort Request Message ........................ 72 3.5.9.1 Label Abort Request Message Procedures ............. 73 3.5.10 Label Withdraw Message ............................. 74 Andersson, et al. Standards Track [Page 3] RFC 3036 LDP Specification January 2001 3.5.10.1 Label Withdraw Message Procedures .................. 75 3.5.11 Label Release Message .............................. 76 3.5.11.1 Label Release Message Procedures ................... 77 3.6 Messages and TLVs for Extensibility ................ 78 3.6.1 LDP Vendor-private Extensions ...................... 78 3.6.1.1 LDP Vendor-private TLVs ............................ 78 3.6.1.2 LDP Vendor-private Messages ........................ 80 3.6.2 LDP Experimental Extensions ........................ 81 3.7 Message Summary .................................... 81 3.8 TLV Summary ........................................ 82 3.9 Status Code Summary ................................ 83 3.10 Well-known Numbers ................................. 84 3.10.1 UDP and TCP Ports .................................. 84 3.10.2 Implicit NULL Label ................................ 84 4 IANA Considerations ................................ 84 4.1 Message Type Name Space ............................ 84 4.2 TLV Type Name Space ................................ 85 4.3 FEC Type Name Space ................................ 85 4.4 Status Code Name Space ............................. 86 4.5 Experiment ID Name Space ........................... 86 5 Security Considerations ............................ 86 5.1 Spoofing ........................................... 86 5.2 Privacy ............................................ 87 5.3 Denial of Service .................................. 87 6 Areas for Future Study ............................. 89 7 Intellectual Property Considerations ............... 89 8 Acknowledgments .................................... 89 9 References ......................................... 89 10 Authors' Addresses ................................. 92 Appendix A LDP Label Distribution Procedures .................. 93 A.1 Handling Label Distribution Events ................. 95 A.1.1 Receive Label Request .............................. 96 A.1.2 Receive Label Mapping .............................. 99 A.1.3 Receive Label Abort Request ........................ 105 A.1.4 Receive Label Release .............................. 107 A.1.5 Receive Label Withdraw ............................. 109 A.1.6 Recognize New FEC .................................. 110 A.1.7 Detect Change in FEC Next Hop ...................... 113 A.1.8 Receive Notification / Label Request Aborted ....... 116 A.1.9 Receive Notification / No Label Resources .......... 116 A.1.10 Receive Notification / No Route .................... 117 A.1.11 Receive Notification / Loop Detected ............... 118 A.1.12 Receive Notification / Label Resources Available ... 118 A.1.13 Detect local label resources have become available . 119 A.1.14 LSR decides to no longer label switch a FEC ........ 120 A.1.15 Timeout of deferred label request .................. 121 A.2 Common Label Distribution Procedures ............... 121 A.2.1 Send_Label ......................................... 121 Andersson, et al. Standards Track [Page 4] RFC 3036 LDP Specification January 2001 A.2.2 Send_Label_Request ................................. 123 A.2.3 Send_Label_Withdraw ................................ 124 A.2.4 Send_Notification .................................. 125 A.2.5 Send_Message ....................................... 125 A.2.6 Check_Received_Attributes .......................... 126 A.2.7 Prepare_Label_Request_Attributes ................... 127 A.2.8 Prepare_Label_Mapping_Attributes ................... 129 Full Copyright Statement ...................................... 132 1. LDP Overview The MPLS architecture [RFC3031] defines a label distribution protocol as a set of procedures by which one Label Switched Router (LSR) informs another of the meaning of labels used to forward traffic between and through them. The MPLS architecture does not assume a single label distribution protocol. In fact, a number of different label distribution protocols are being standardized. Existing protocols have been extended so that label distribution can be piggybacked on them. New protocols have also been defined for the explicit purpose of distributing labels. The MPLS architecture discusses some of the considerations when choosing a label distribution protocol for use in particular MPLS applications such as Traffic Engineering [RFC2702]. The Label Distribution Protocol (LDP) defined in this document is a new protocol defined for distributing labels. It is the set of procedures and messages by which Label Switched Routers (LSRs) establish Label Switched Paths (LSPs) through a network by mapping network-layer routing information directly to data-link layer switched paths. These LSPs may have an endpoint at a directly attached neighbor (comparable to IP hop-by-hop forwarding), or may have an endpoint at a network egress node, enabling switching via all intermediary nodes. LDP associates a Forwarding Equivalence Class (FEC) [RFC3031] with each LSP it creates. The FEC associated with an LSP specifies which packets are "mapped" to that LSP. LSPs are extended through a network as each LSR "splices" incoming labels for a FEC to the outgoing label assigned to the next hop for the given FEC. More information about the applicability of LDP can be found in [RFC3037]. This document assumes familiarity with the MPLS architecture [RFC3031]. Note that [RFC3031] includes a glossary of MPLS terminology, such as ingress, label switched path, etc. Andersson, et al. Standards Track [Page 5] RFC 3036 LDP Specification January 2001 1.1. LDP Peers Two LSRs which use LDP to exchange label/FEC mapping information are known as "LDP Peers" with respect to that information and we speak of there being an "LDP Session" between them. A single LDP session allows each peer to learn the other's label mappings; i.e., the protocol is bi-directional. 1.2. LDP Message Exchange There are four categories of LDP messages: 1. Discovery messages, used to announce and maintain the presence of an LSR in a network. 2. Session messages, used to establish, maintain, and terminate sessions between LDP peers. 3. Advertisement messages, used to create, change, and delete label mappings for FECs. 4. Notification messages, used to provide advisory information and to signal error information. Di