idnits 2.17.1 draft-ietf-mpls-ldp-05.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- ** Looks like you're using RFC 2026 boilerplate. This must be updated to follow RFC 3978/3979, as updated by RFC 4748. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- ** Missing expiration date. The document expiration date should appear on the first and last page. == No 'Intended status' indicated for this document; assuming Proposed Standard == It seems as if not all pages are separated by form feeds - found 0 form feeds but 124 pages Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- ** The document seems to lack an IANA Considerations section. (See Section 2.2 of https://www.ietf.org/id-info/checklist for how to handle the case when there are no actions for IANA.) ** The document seems to lack separate sections for Informative/Normative References. All references will be assumed normative when checking for downward references. ** There are 14 instances of too long lines in the document, the longest one being 3 characters in excess of 72. ** The abstract seems to contain references ([ARCH], [FRAMEWORK]), which it shouldn't. Please replace those with straight textual mentions of the documents in question. ** The document seems to lack a both a reference to RFC 2119 and the recommended RFC 2119 boilerplate, even if it appears to use RFC 2119 keywords. RFC 2119 keyword, line 922: '... LSR MUST wait until a label from a ...' RFC 2119 keyword, line 1071: '... Request message MUST include a Hop Co...' RFC 2119 keyword, line 1074: '... MUST include a Hop Count TLV with...' RFC 2119 keyword, line 1078: '...Hop Count TLV, R MUST increment the re...' RFC 2119 keyword, line 1079: '...t value by 1 and MUST pass the resulti...' (25 more instances...) Miscellaneous warnings: ---------------------------------------------------------------------------- -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (June 1999) is 9081 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) == Missing Reference: 'RFC1321' is mentioned on line 3649, but not defined == Missing Reference: 'Dobb' is mentioned on line 3682, but not defined == Missing Reference: 'RFC2385' is mentioned on line 3715, but not defined ** Obsolete undefined reference: RFC 2385 (Obsoleted by RFC 5925) == Unused Reference: 'DIFFSERV' is defined on line 3764, but no explicit reference was found in the text == Unused Reference: 'LSPTUN' is defined on line 3779, but no explicit reference was found in the text -- Possible downref: Non-RFC (?) normative reference: ref. 'ARCH' -- Possible downref: Non-RFC (?) normative reference: ref. 'ATM' -- Possible downref: Non-RFC (?) normative reference: ref. 'ATM-VP' -- Possible downref: Non-RFC (?) normative reference: ref. 'CRLDP' -- Possible downref: Non-RFC (?) normative reference: ref. 'DIFFSERV' -- Possible downref: Non-RFC (?) normative reference: ref. 'ENCAP' -- Possible downref: Non-RFC (?) normative reference: ref. 'FR' -- Possible downref: Non-RFC (?) normative reference: ref. 'FRAMEWORK' -- Possible downref: Non-RFC (?) normative reference: ref. 'LSPTUN' -- Possible downref: Non-RFC (?) normative reference: ref. 'TE' Summary: 8 errors (**), 0 flaws (~~), 7 warnings (==), 12 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 1 Network Working Group Loa Andersson 2 Internet Draft Nortel Networks Inc. 3 Expiration Date: December 1999 4 Paul Doolan 5 Ennovate Networks 7 Nancy Feldman 8 IBM Corp 10 Andre Fredette 11 Nortel Networks Inc. 13 Bob Thomas 14 Cisco Systems, Inc. 16 June 1999 18 LDP Specification 20 draft-ietf-mpls-ldp-05.txt 22 Status of this Memo 24 This document is an Internet-Draft and is in full conformance with 25 all provisions of Section 10 of RFC2026. 27 Internet-Drafts are working documents of the Internet Engineering 28 Task Force (IETF), its areas, and its working groups. Note that 29 other groups may also distribute working documents as Internet- 30 Drafts. 32 Internet-Drafts are draft documents valid for a maximum of six months 33 and may be updated, replaced, or obsoleted by other documents at any 34 time. It is inappropriate to use Internet-Drafts as reference 35 material or to cite them other than as "work in progress." 37 The list of current Internet-Drafts can be accessed at 38 http://www.ietf.org/ietf/1id-abstracts.txt 40 The list of Internet-Draft Shadow Directories can be accessed at 41 http://www.ietf.org/shadow.html. 43 Abstract 45 An overview of Multi Protocol Label Switching (MPLS) is provided in 46 [FRAMEWORK] and a proposed architecture in [ARCH]. A fundamental 47 concept in MPLS is that two Label Switching Routers (LSRs) must agree 48 on the meaning of the labels used to forward traffic between and 49 through them. This common understanding is achieved by using a set 50 of procedures, called a label distribution protocol, by which one LSR 51 informs another of label bindins it has made. This document defines 52 a set of such procedures called LDP (for Label Distribution 53 Protocol). 55 Changes from Previous Draft 57 - This draft addresses issues raised during the LDP last call held 58 February 8, 1999 through February 24, 1999. 60 Open Issues 62 The following LDP issues are left unresolved with this version of the 63 spec: 65 - Section 2.16 of the MPLS architecture [ARCH] requires that the 66 initial label distribution protocol negotiation between peer LSRs 67 enable each LSR to determine whether its peer is capable of 68 popping the label stack. This version of LDP assumes that LSRs 69 support label popping for all link types except ATM and Frame 70 Relay. A future version may specify means to make this 71 determination part of the session initiation negotiation. 73 - LDP support for CoS is not specified in this version. CoS 74 support may be addressed in a future version. 76 - LDP support for multicast is not specified in this version. 77 Multicast support will be addressed in a future version. 79 - LDP support for multipath label switching is not specified in 80 this version. Multipath support will be addressed in a future 81 version. 83 Table of Contents 85 1 LDP Overview ....................................... 6 86 1.1 LDP Peers .......................................... 6 87 1.2 LDP Message Exchange ............................... 7 88 1.3 LDP Message Structure .............................. 7 89 1.4 LDP Error Handling ................................. 8 90 1.5 LDP Extensibility and Future Compatibility ......... 8 91 2 LDP Operation ...................................... 8 92 2.1 FECs ............................................... 8 93 2.2 Label Spaces, Identifiers, Sessions and Transport .. 10 94 2.2.1 Label Spaces ....................................... 10 95 2.2.2 LDP Identifiers .................................... 11 96 2.2.3 LDP Sessions ....................................... 11 97 2.2.4 LDP Transport ...................................... 11 98 2.3 LDP Sessions between non-Directly Connected LSRs ... 12 99 2.4 LDP Discovery ..................................... 12 100 2.4.1 Basic Discovery Mechanism .......................... 12 101 2.4.2 Extended Discovery Mechanism ....................... 13 102 2.5 Establishing and Maintaining LDP Sessions .......... 14 103 2.5.1 LDP Session Establishment .......................... 14 104 2.5.2 Transport Connection Establishment ................. 14 105 2.5.3 Session Initialization ............................. 15 106 2.5.4 Initialization State Machine ....................... 17 107 2.5.5 Maintaining Hello Adjacencies ...................... 20 108 2.5.6 Maintaining LDP Sessions ........................... 20 109 2.6 Label Distribution and Management .................. 21 110 2.6.1 Label Distribution Control Mode .................... 21 111 2.6.1.1 Independent Label Distribution Control ............. 21 112 2.6.1.2 Ordered Label Distribution Control ................. 21 113 2.6.2 Label Retention Mode ............................... 22 114 2.6.2.1 Conservative Label Retention Mode .................. 22 115 2.6.2.2 Liberal Label Retention Mode ....................... 22 116 2.6.3 Label Advertisement Mode ........................... 23 117 2.7 LDP Identifiers and Next Hop Addresses ............. 23 118 2.8 Loop Detection ..................................... 24 119 2.8.1 Label Request Message .............................. 25 120 2.8.2 Label Mapping Message .............................. 26 121 2.8.3 Discussion ......................................... 28 122 2.9 Label Distribution for Explicitly Routed LSPs ...... 28 123 3 Protocol Specification ............................. 29 124 3.1 LDP PDUs ........................................... 29 125 3.2 LDP Procedures ..................................... 30 126 3.3 Type-Length-Value Encoding ......................... 30 127 3.4 TLV Encodings for Commonly Used Parameters ......... 32 128 3.4.1 FEC TLV ............................................ 32 129 3.4.1.1 FEC Procedures ..................................... 35 130 3.4.2 Label TLVs ......................................... 35 131 3.4.2.1 Generic Label TLV .................................. 35 132 3.4.2.2 ATM Label TLV ...................................... 35 133 3.4.2.3 Frame Relay Label TLV .............................. 36 134 3.4.3 Address List TLV ................................... 37 135 3.4.4 Hop Count TLV ...................................... 38 136 3.4.4.1 Hop Count Procedures ............................... 38 137 3.4.5 Path Vector TLV .................................... 39 138 3.4.5.1 Path Vector Procedures ............................. 40 139 3.4.5.1.1 Label Request Path Vector .......................... 40 140 3.4.5.1.2 Label Mapping Path Vector .......................... 41 141 3.4.6 Status TLV ......................................... 42 142 3.5 LDP Messages ....................................... 43 143 3.5.1 Notification Message ............................... 45 144 3.5.1.1 Notification Message Procedures .................... 47 145 3.5.1.2 Events Signaled by Notification Messages ........... 47 146 3.5.1.2.1 Malformed PDU or Message ........................... 47 147 3.5.1.2.2 Unknown or Malformed TLV ........................... 48 148 3.5.1.2.3 Session KeepAlive Timer Expiration ................. 49 149 3.5.1.2.4 Unilateral Session Shutdown ........................ 49 150 3.5.1.2.5 Initialization Message Events ...................... 49 151 3.5.1.2.6 Events Resulting From Other Messages ............... 49 152 3.5.1.2.7 Miscellaneous Events ............................... 49 153 3.5.2 Hello Message ...................................... 50 154 3.5.2.1 Hello Message Procedures ........................... 52 155 3.5.3 Initialization Message ............................. 53 156 3.5.3.1 Initialization Message Procedures .................. 61 157 3.5.4 KeepAlive Message .................................. 61 158 3.5.4.1 KeepAlive Message Procedures ....................... 62 159 3.5.5 Address Message .................................... 62 160 3.5.5.1 Address Message Procedures ......................... 63 161 3.5.6 Address Withdraw Message ........................... 63 162 3.5.6.1 Address Withdraw Message Procedures ................ 64 163 3.5.7 Label Mapping Message .............................. 64 164 3.5.7.1 Label Mapping Message Procedures ................... 65 165 3.5.7.1.1 Independent Control Mapping ........................ 66 166 3.5.7.1.2 Ordered Control Mapping ............................ 66 167 3.5.7.1.3 Downstream on Demand Label Advertisement ........... 67 168 3.5.7.1.4 Downstream Unsolicited Label Advertisement ......... 67 169 3.5.8 Label Request Message .............................. 68 170 3.5.8.1 Label Request Message Procedures ................... 69 171 3.5.9 Label Abort Request Message ........................ 70 172 3.5.9.1 Label Abort Request Message Procedures ............. 71 173 3.5.10 Label Withdraw Message ............................. 73 174 3.5.10.1 Label Withdraw Message Procedures .................. 73 175 3.5.11 Label Release Message .............................. 74 176 3.5.11.1 Label Release Message Procedures ................... 75 177 3.6 Messages and TLVs for Extensibility ................ 76 178 3.6.1 LDP Vendor-private Extensions ...................... 76 179 3.6.1.1 LDP Vendor-private TLVs ............................ 76 180 3.6.1.2 LDP Vendor-private Messages ........................ 78 181 3.6.2 LDP Experimental Extensions ........................ 79 182 3.7 Message Summary .................................... 79 183 3.8 TLV Summary ........................................ 80 184 3.9 Status Code Summary ................................ 81 185 3.10 Well-known Numbers ................................. 82 186 3.10.1 UDP and TCP Ports .................................. 82 187 3.10.2 Implicit NULL Label ................................ 82 188 4 Security Considerations ............................ 82 189 4.1 The TCP MD5 Signature Option ....................... 82 190 4.2 LDP Use of the TCP MD5 Signature Option ............ 84 191 5 Intellectual Property Considerations ............... 84 192 6 Acknowledgments .................................... 85 193 7 References ......................................... 85 194 8 Author Information ................................. 86 196 Appendix.A LDP Label Distribution Procedures .................. 87 197 A.1 Handling Label Distribution Events ................. 89 198 A.1.1 Receive Label Request .............................. 90 199 A.1.2 Receive Label Mapping .............................. 93 200 A.1.3 Receive Label Abort Request ........................ 98 201 A.1.4 Receive Label Release .............................. 99 202 A.1.5 Receive Label Withdraw ............................. 101 203 A.1.6 Recognize New FEC .................................. 103 204 A.1.7 Detect Change in FEC Next Hop ...................... 106 205 A.1.8 Receive Notification / Label Request Aborted ....... 108 206 A.1.9 Receive Notification / No Label Resources .......... 109 207 A.1.10 Receive Notification / No Route .................... 110 208 A.1.11 Receive Notification / Loop Detected ............... 110 209 A.1.12 Receive Notification / Label Resources Available ... 111 210 A.1.13 Detect local label resources have become available . 112 211 A.1.14 LSR decides to no longer label switch a FEC ........ 113 212 A.1.15 Timeout of deferred label request .................. 113 213 A.2 Common Label Distribution Procedures ............... 114 214 A.2.1 Send_Label ......................................... 114 215 A.2.2 Send_Label_Request ................................. 116 216 A.2.3 Send_Label_Withdraw ................................ 117 217 A.2.4 Send_Notification .................................. 117 218 A.2.5 Send_Message ....................................... 118 219 A.2.6 Check_Received_Attributes .......................... 118 220 A.2.7 Prepare_Label_Request_Attributes ................... 120 221 A.2.8 Prepare_Label_Mapping_Attributes ................... 121 223 1. LDP Overview 225 Section 2.6 of the MPLS architecture [ARCH] defines a label 226 distribution protocol as a set of procedures by which one Label 227 Switched Router (LSR) informs another of the meaning of labels used 228 to forward traffic between and through them. 230 The MPLS architecture does not assume a single label distribution 231 protocol. In fact, a number of different label distribution 232 protocols are being standardized. Existing protocols have been 233 extended so that label distribution can be piggybacked on them. New 234 protocols have also been defined for the explicit purpose of 235 distributing labels. Section 2.29 of the architecture [ARCH] 236 discusses some of the considerations when chosing a label 237 distribution protocol for use in particular MPLS applications such as 238 Traffic Engineering [TE]. 240 The Label Distribution Protocol (LDP) defined in this document is a 241 new protocol defined for distributing labels. It is the set of 242 procedures and messages by which Label Switched Routers (LSRs) 243 establish Label Switched Paths (LSPs) through a network by mapping 244 network-layer routing information directly to data-link layer 245 switched paths. These LSPs may have an endpoint at a directly 246 attached neighbor (comparable to IP hop-by-hop forwarding), or may 247 have an endpoint at a network egress node, enabling switching via all 248 intermediary nodes. 250 LDP associates a Forwarding Equivalence Class (FEC) [ARCH] with each 251 LSP it creates. The FEC associated with an LSP specifies which 252 packets are "mapped" to that LSP. LSPs are extended through a 253 network as each LSR "splices" incoming labels for a FEC to the 254 outgoing label assigned to the next hop for the given FEC. 256 This document assumes familiarity with the MPLS architecture [ARCH]. 257 Note that [ARCH] includes a glossary of MPLS terminology, such as 258 ingress, label switched path, etc. 260 1.1. LDP Peers 262 Two LSRs which use LDP to exchange label/stream mapping information 263 are known as "LDP Peers" with respect to that information and we 264 speak of there being an "LDP Session" between them. A single LDP 265 session allows each peer to learn the other's label mappings; i.e., 266 the protocol is bi-directional. 268 1.2. LDP Message Exchange 270 There are four categories of LDP messages: 272 1. Discovery messages, used to announce and maintain the presence 273 of an LSR in a network. 275 2. Session messages, used to establish, maintain, and terminate 276 sessions between LDP peers. 278 3. Advertisement messages, used to create, change, and delete 279 label mappings for FECs. 281 4. Notification messages, used to provide advisory information and 282 to signal error information. 284 Discovery messages provide a mechanism whereby LSRs indicate their 285 presence in a network by sending the Hello message periodically. 286 This is transmitted as a UDP packet to the LDP port at the `all 287 routers on this subnet' group multicast address. When an LSR chooses 288 to establish a session with another LSR learned via the Hello 289 message, it uses the LDP initialization procedure over TCP transport. 290 Upon successful completion of the initialization procedure, the two 291 LSRs are LDP peers, and may exchange advertisement messages. 293 When to request a label or advertise a label mapping to a peer is 294 largely a local decision made by an LSR. In general, the LSR 295 requests a label mapping from a neighboring LSR when it needs one, 296 and advertises a label mapping to a neighboring LSR when it wishes 297 the neighbor to use a label. 299 Correct operation of LDP requires reliable and in order delivery of 300 messages. To satisfy these requirements LDP uses the TCP transport 301 for session, advertisement and notification messages; i.e., for 302 everything but the UDP-based discovery mechanism. 304 1.3. LDP Message Structure 306 All LDP messages have a common structure that uses a Type-Length- 307 Value (TLV) encoding scheme; see Section "Type-Length-Value" 308 encoding. The Value part of a TLV-encoded object, or TLV for short, 309 may itself contain one or more TLVs. 311 1.4. LDP Error Handling 313 LDP errors and other events of interest are signaled to an LDP peer 314 by notification messages. 316 There are two kinds of LDP notification messages: 318 1. Error notifications, used to signal fatal errors. If an LSR 319 receives an error notification from a peer for an LDP session, 320 it terminates the LDP session by closing the TCP transport 321 connection for the session and discarding all label mappings 322 learned via the session. 324 2. Advisory notifications, used to pass an LSR information about 325 the LDP session or the status of some previous message received 326 from the peer. 328 1.5. LDP Extensibility and Future Compatibility 330 Functionality may be added to LDP in the future. It is likely that 331 future functionality will utilize new messages and object types 332 (TLVs). It may be desirable to employ such new messages and TLVs 333 within a network using older implementations that do not recognize 334 them. While it is not possible to make every future enhancement 335 backwards compatible, some prior planning can ease the introduction 336 of new capabilities. This specification defines rules for handling 337 unknown message types and unknown TLVs for this purpose. 339 2. LDP Operation 341 2.1. FECs 343 It is necessary to precisely specify which packets may be mapped to 344 each LSP. This is done by providing a FEC specification for each 345 LSP. The FEC identifies the set of IP packets which may be mapped to 346 that LSP. 348 Each FEC is specified as a set of one or more FEC elements. Each FEC 349 element identifies a set of packets which may be mapped to the 350 corresponding LSP. When an LSP is shared by multiple FEC elements, 351 that LSP is terminated at (or before) the node where the FEC elements 352 can no longer share the same path. 354 Following are the currently defined types of FEC elements. New 355 element types may be added as needed: 357 1. Address Prefix. This element is an address prefix of any 358 length from 0 to a full address, inclusive. 360 2. Host Address. This element is a full host address. 362 (We will see below that an Address Prefix FEC element which is a full 363 address has a different effect than a Host Address FEC element which 364 has the same address.) 366 We say that a particular address "matches" a particular address 367 prefix if and only if that address begins with that prefix. We also 368 say that a particular packet matches a particular LSP if and only if 369 that LSP has an Address Prefix FEC element which matches the packet's 370 destination address. With respect to a particular packet and a 371 particular LSP, we refer to any Address Prefix FEC element which 372 matches the packet as the "matching prefix". 374 The procedure for mapping a particular packet to a particular LSP 375 uses the following rules. Each rule is applied in turn until the 376 packet can be mapped to an LSP. 378 - If there is exactly one LSP which has a Host Address FEC element 379 that is identical to the packet's destination address, then the 380 packet is mapped to that LSP. 382 - If there multiple LSPs, each containing a Host Address FEC 383 element that is identical to the packet's destination address, 384 then the packet is mapped to one of those LSPs. The procedure 385 for selecting one of those LSPs is beyond the scope of this 386 document. 388 - If a packet matches exactly one LSP, the packet is mapped to that 389 LSP. 391 - If a packet matches multiple LSPs, it is mapped to the LSP whose 392 matching prefix is the longest. If there is no one LSP whose 393 matching prefix is longest, the packet is mapped to one from the 394 set of LSPs whose matching prefix is longer than the others. The 395 procedure for selecting one of those LSPs is beyond the scope of 396 this document. 398 - If it is known that a packet must traverse a particular egress 399 router, and there is an LSP which has an Address Prefix FEC 400 element which is an address of that router, then the packet is 401 mapped to that LSP. The procedure for obtaining this knowledge 402 is beyond the scope of this document. 404 The procedure for determining that a packet must traverse a 405 particular egress router is beyond the scope of this document. (As 406 an example, if one is running a link state routing algorithm, it may 407 be possible to obtain this information from the link state data base. 408 As another example, if one is running BGP, it may be possible to 409 obtain this information from the BGP next hop attribute of the 410 packet's route.) 412 It is worth pointing out a few consequences of these rules: 414 - A packet may be sent on the LSP whose Address Prefix FEC element 415 is the address of the packet's egress router ONLY if there is no 416 LSP matching the packet's destination address. 418 - A packet may match two LSPs, one with a Host Address FEC element 419 and one with an Address Prefix FEC element. In this case, the 420 packet is always assigned to the former. 422 - A packet which does not match a particular Host Address FEC 423 element may not be sent on the corresponding LSP, even if the 424 Host Address FEC element identifies the packet's egress router. 426 2.2. Label Spaces, Identifiers, Sessions and Transport 428 2.2.1. Label Spaces 430 The notion of "label space" is useful for discussing the assignment 431 and distribution of labels. There are two types of label spaces: 433 - Per interface label space. Interface-specific incoming labels 434 are used for interfaces that use interface resources for labels. 435 An example of such an interface is a label-controlled ATM 436 interface that uses VCIs as labels, or a Frame Relay interface 437 that uses DLCIs as labels. 439 Note that the use of a per interface label space only makes sense 440 when the LDP peers are "directly connected" over an interface, 441 and the label is only going to be used for traffic sent over that 442 interface. 444 - Per platform label space. Platform-wide incoming labels are used 445 for interfaces that can share the same labels. 447 2.2.2. LDP Identifiers 449 An LDP identifier is a six octet quantity used to identify an LSR 450 label space. The first four octets encode an IP address assigned to 451 the LSR, and the last two octets identify a specific label space 452 within the LSR. The last two octets of LDP Identifiers for 453 platform-wide label spaces are always both zero. This document uses 454 the following print representation for LDP Identifiers: 456 :