idnits 2.17.1 draft-ietf-mpls-ldp-06.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: ---------------------------------------------------------------------------- == 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 13 instances of too long lines in the document, the longest one being 2 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 895: '... LSR MUST wait until a label from a ...' RFC 2119 keyword, line 1044: '... Request message MUST include a Hop Co...' RFC 2119 keyword, line 1047: '... MUST include a Hop Count TLV with...' RFC 2119 keyword, line 1051: '...Hop Count TLV, R MUST increment the re...' RFC 2119 keyword, line 1052: '...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 (October 1999) is 8953 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 3624, but not defined == Missing Reference: 'Dobb' is mentioned on line 3657, but not defined == Missing Reference: 'RFC2385' is mentioned on line 3690, but not defined ** Obsolete undefined reference: RFC 2385 (Obsoleted by RFC 5925) == Unused Reference: 'DIFFSERV' is defined on line 3762, but no explicit reference was found in the text == Unused Reference: 'LSPTUN' is defined on line 3777, 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: 7 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: April 2000 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 October 1999 18 LDP Specification 20 draft-ietf-mpls-ldp-06.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 bindings it has made. This document defines 52 a set of such procedures called LDP (for Label Distribution 53 Protocol). 55 Table of Contents 57 1 LDP Overview ....................................... 6 58 1.1 LDP Peers .......................................... 6 59 1.2 LDP Message Exchange ............................... 7 60 1.3 LDP Message Structure .............................. 7 61 1.4 LDP Error Handling ................................. 8 62 1.5 LDP Extensibility and Future Compatibility ......... 8 63 2 LDP Operation ...................................... 8 64 2.1 FECs ............................................... 8 65 2.2 Label Spaces, Identifiers, Sessions and Transport .. 10 66 2.2.1 Label Spaces ....................................... 10 67 2.2.2 LDP Identifiers .................................... 11 68 2.2.3 LDP Sessions ....................................... 11 69 2.2.4 LDP Transport ...................................... 11 70 2.3 LDP Sessions between non-Directly Connected LSRs ... 12 71 2.4 LDP Discovery ..................................... 12 72 2.4.1 Basic Discovery Mechanism .......................... 12 73 2.4.2 Extended Discovery Mechanism ....................... 13 74 2.5 Establishing and Maintaining LDP Sessions .......... 14 75 2.5.1 LDP Session Establishment .......................... 14 76 2.5.2 Transport Connection Establishment ................. 14 77 2.5.3 Session Initialization ............................. 15 78 2.5.4 Initialization State Machine ....................... 17 79 2.5.5 Maintaining Hello Adjacencies ...................... 20 80 2.5.6 Maintaining LDP Sessions ........................... 20 81 2.6 Label Distribution and Management .................. 21 82 2.6.1 Label Distribution Control Mode .................... 21 83 2.6.1.1 Independent Label Distribution Control ............. 21 84 2.6.1.2 Ordered Label Distribution Control ................. 21 85 2.6.2 Label Retention Mode ............................... 22 86 2.6.2.1 Conservative Label Retention Mode .................. 22 87 2.6.2.2 Liberal Label Retention Mode ....................... 22 88 2.6.3 Label Advertisement Mode ........................... 23 89 2.7 LDP Identifiers and Next Hop Addresses ............. 23 90 2.8 Loop Detection ..................................... 24 91 2.8.1 Label Request Message .............................. 25 92 2.8.2 Label Mapping Message .............................. 26 93 2.8.3 Discussion ......................................... 28 94 2.9 Label Distribution for Explicitly Routed LSPs ...... 28 95 3 Protocol Specification ............................. 29 96 3.1 LDP PDUs ........................................... 29 97 3.2 LDP Procedures ..................................... 30 98 3.3 Type-Length-Value Encoding ......................... 30 99 3.4 TLV Encodings for Commonly Used Parameters ......... 32 100 3.4.1 FEC TLV ............................................ 32 101 3.4.1.1 FEC Procedures ..................................... 35 102 3.4.2 Label TLVs ......................................... 35 103 3.4.2.1 Generic Label TLV .................................. 35 104 3.4.2.2 ATM Label TLV ...................................... 35 105 3.4.2.3 Frame Relay Label TLV .............................. 36 106 3.4.3 Address List TLV ................................... 37 107 3.4.4 Hop Count TLV ...................................... 38 108 3.4.4.1 Hop Count Procedures ............................... 38 109 3.4.5 Path Vector TLV .................................... 39 110 3.4.5.1 Path Vector Procedures ............................. 40 111 3.4.5.1.1 Label Request Path Vector .......................... 40 112 3.4.5.1.2 Label Mapping Path Vector .......................... 41 113 3.4.6 Status TLV ......................................... 42 114 3.5 LDP Messages ....................................... 43 115 3.5.1 Notification Message ............................... 45 116 3.5.1.1 Notification Message Procedures .................... 47 117 3.5.1.2 Events Signaled by Notification Messages ........... 47 118 3.5.1.2.1 Malformed PDU or Message ........................... 47 119 3.5.1.2.2 Unknown or Malformed TLV ........................... 48 120 3.5.1.2.3 Session KeepAlive Timer Expiration ................. 49 121 3.5.1.2.4 Unilateral Session Shutdown ........................ 49 122 3.5.1.2.5 Initialization Message Events ...................... 49 123 3.5.1.2.6 Events Resulting From Other Messages ............... 49 124 3.5.1.2.7 Miscellaneous Events ............................... 49 125 3.5.2 Hello Message ...................................... 50 126 3.5.2.1 Hello Message Procedures ........................... 52 127 3.5.3 Initialization Message ............................. 53 128 3.5.3.1 Initialization Message Procedures .................. 61 129 3.5.4 KeepAlive Message .................................. 61 130 3.5.4.1 KeepAlive Message Procedures ....................... 62 131 3.5.5 Address Message .................................... 62 132 3.5.5.1 Address Message Procedures ......................... 63 133 3.5.6 Address Withdraw Message ........................... 63 134 3.5.6.1 Address Withdraw Message Procedures ................ 64 135 3.5.7 Label Mapping Message .............................. 64 136 3.5.7.1 Label Mapping Message Procedures ................... 65 137 3.5.7.1.1 Independent Control Mapping ........................ 66 138 3.5.7.1.2 Ordered Control Mapping ............................ 66 139 3.5.7.1.3 Downstream on Demand Label Advertisement ........... 67 140 3.5.7.1.4 Downstream Unsolicited Label Advertisement ......... 67 141 3.5.8 Label Request Message .............................. 68 142 3.5.8.1 Label Request Message Procedures ................... 69 143 3.5.9 Label Abort Request Message ........................ 70 144 3.5.9.1 Label Abort Request Message Procedures ............. 71 145 3.5.10 Label Withdraw Message ............................. 73 146 3.5.10.1 Label Withdraw Message Procedures .................. 74 147 3.5.11 Label Release Message .............................. 74 148 3.5.11.1 Label Release Message Procedures ................... 75 149 3.6 Messages and TLVs for Extensibility ................ 76 150 3.6.1 LDP Vendor-private Extensions ...................... 76 151 3.6.1.1 LDP Vendor-private TLVs ............................ 77 152 3.6.1.2 LDP Vendor-private Messages ........................ 78 153 3.6.2 LDP Experimental Extensions ........................ 79 154 3.7 Message Summary .................................... 80 155 3.8 TLV Summary ........................................ 80 156 3.9 Status Code Summary ................................ 81 157 3.10 Well-known Numbers ................................. 82 158 3.10.1 UDP and TCP Ports .................................. 82 159 3.10.2 Implicit NULL Label ................................ 82 160 4 Security Considerations ............................ 82 161 4.1 The TCP MD5 Signature Option ....................... 82 162 4.2 LDP Use of the TCP MD5 Signature Option ............ 84 163 5 Areas for Future Study ............................. 84 164 6 Intellectual Property Considerations ............... 85 165 7 Acknowledgments .................................... 85 166 8 References ......................................... 85 167 9 Author Information ................................. 87 169 Appendix.A LDP Label Distribution Procedures .................. 88 170 A.1 Handling Label Distribution Events ................. 90 171 A.1.1 Receive Label Request .............................. 91 172 A.1.2 Receive Label Mapping .............................. 94 173 A.1.3 Receive Label Abort Request ........................ 98 174 A.1.4 Receive Label Release .............................. 100 175 A.1.5 Receive Label Withdraw ............................. 102 176 A.1.6 Recognize New FEC .................................. 104 177 A.1.7 Detect Change in FEC Next Hop ...................... 106 178 A.1.8 Receive Notification / Label Request Aborted ....... 109 179 A.1.9 Receive Notification / No Label Resources .......... 110 180 A.1.10 Receive Notification / No Route .................... 110 181 A.1.11 Receive Notification / Loop Detected ............... 111 182 A.1.12 Receive Notification / Label Resources Available ... 112 183 A.1.13 Detect local label resources have become available . 112 184 A.1.14 LSR decides to no longer label switch a FEC ........ 113 185 A.1.15 Timeout of deferred label request .................. 114 186 A.2 Common Label Distribution Procedures ............... 115 187 A.2.1 Send_Label ......................................... 115 188 A.2.2 Send_Label_Request ................................. 116 189 A.2.3 Send_Label_Withdraw ................................ 118 190 A.2.4 Send_Notification .................................. 118 191 A.2.5 Send_Message ....................................... 119 192 A.2.6 Check_Received_Attributes .......................... 119 193 A.2.7 Prepare_Label_Request_Attributes ................... 120 194 A.2.8 Prepare_Label_Mapping_Attributes ................... 122 196 1. LDP Overview 198 Section 2.6 of the MPLS architecture [ARCH] defines a label 199 distribution protocol as a set of procedures by which one Label 200 Switched Router (LSR) informs another of the meaning of labels used 201 to forward traffic between and through them. 203 The MPLS architecture does not assume a single label distribution 204 protocol. In fact, a number of different label distribution 205 protocols are being standardized. Existing protocols have been 206 extended so that label distribution can be piggybacked on them. New 207 protocols have also been defined for the explicit purpose of 208 distributing labels. Section 2.29 of the architecture [ARCH] 209 discusses some of the considerations when choosing a label 210 distribution protocol for use in particular MPLS applications such as 211 Traffic Engineering [TE]. 213 The Label Distribution Protocol (LDP) defined in this document is a 214 new protocol defined for distributing labels. It is the set of 215 procedures and messages by which Label Switched Routers (LSRs) 216 establish Label Switched Paths (LSPs) through a network by mapping 217 network-layer routing information directly to data-link layer 218 switched paths. These LSPs may have an endpoint at a directly 219 attached neighbor (comparable to IP hop-by-hop forwarding), or may 220 have an endpoint at a network egress node, enabling switching via all 221 intermediary nodes. 223 LDP associates a Forwarding Equivalence Class (FEC) [ARCH] with each 224 LSP it creates. The FEC associated with an LSP specifies which 225 packets are "mapped" to that LSP. LSPs are extended through a 226 network as each LSR "splices" incoming labels for a FEC to the 227 outgoing label assigned to the next hop for the given FEC. 229 This document assumes familiarity with the MPLS architecture [ARCH]. 230 Note that [ARCH] includes a glossary of MPLS terminology, such as 231 ingress, label switched path, etc. 233 1.1. LDP Peers 235 Two LSRs which use LDP to exchange label/FEC mapping information are 236 known as "LDP Peers" with respect to that information and we speak of 237 there being an "LDP Session" between them. A single LDP session 238 allows each peer to learn the other's label mappings; i.e., the 239 protocol is bi-directional. 241 1.2. LDP Message Exchange 243 There are four categories of LDP messages: 245 1. Discovery messages, used to announce and maintain the presence 246 of an LSR in a network. 248 2. Session messages, used to establish, maintain, and terminate 249 sessions between LDP peers. 251 3. Advertisement messages, used to create, change, and delete 252 label mappings for FECs. 254 4. Notification messages, used to provide advisory information and 255 to signal error information. 257 Discovery messages provide a mechanism whereby LSRs indicate their 258 presence in a network by sending the Hello message periodically. 259 This is transmitted as a UDP packet to the LDP port at the `all 260 routers on this subnet' group multicast address. When an LSR chooses 261 to establish a session with another LSR learned via the Hello 262 message, it uses the LDP initialization procedure over TCP transport. 263 Upon successful completion of the initialization procedure, the two 264 LSRs are LDP peers, and may exchange advertisement messages. 266 When to request a label or advertise a label mapping to a peer is 267 largely a local decision made by an LSR. In general, the LSR 268 requests a label mapping from a neighboring LSR when it needs one, 269 and advertises a label mapping to a neighboring LSR when it wishes 270 the neighbor to use a label. 272 Correct operation of LDP requires reliable and in order delivery of 273 messages. To satisfy these requirements LDP uses the TCP transport 274 for session, advertisement and notification messages; i.e., for 275 everything but the UDP-based discovery mechanism. 277 1.3. LDP Message Structure 279 All LDP messages have a common structure that uses a Type-Length- 280 Value (TLV) encoding scheme; see Section "Type-Length-Value" 281 encoding. The Value part of a TLV-encoded object, or TLV for short, 282 may itself contain one or more TLVs. 284 1.4. LDP Error Handling 286 LDP errors and other events of interest are signaled to an LDP peer 287 by notification messages. 289 There are two kinds of LDP notification messages: 291 1. Error notifications, used to signal fatal errors. If an LSR 292 receives an error notification from a peer for an LDP session, 293 it terminates the LDP session by closing the TCP transport 294 connection for the session and discarding all label mappings 295 learned via the session. 297 2. Advisory notifications, used to pass an LSR information about 298 the LDP session or the status of some previous message received 299 from the peer. 301 1.5. LDP Extensibility and Future Compatibility 303 Functionality may be added to LDP in the future. It is likely that 304 future functionality will utilize new messages and object types 305 (TLVs). It may be desirable to employ such new messages and TLVs 306 within a network using older implementations that do not recognize 307 them. While it is not possible to make every future enhancement 308 backwards compatible, some prior planning can ease the introduction 309 of new capabilities. This specification defines rules for handling 310 unknown message types and unknown TLVs for this purpose. 312 2. LDP Operation 314 2.1. FECs 316 It is necessary to precisely specify which packets may be mapped to 317 each LSP. This is done by providing a FEC specification for each 318 LSP. The FEC identifies the set of IP packets which may be mapped to 319 that LSP. 321 Each FEC is specified as a set of one or more FEC elements. Each FEC 322 element identifies a set of packets which may be mapped to the 323 corresponding LSP. When an LSP is shared by multiple FEC elements, 324 that LSP is terminated at (or before) the node where the FEC elements 325 can no longer share the same path. 327 Following are the currently defined types of FEC elements. New 328 element types may be added as needed: 330 1. Address Prefix. This element is an address prefix of any 331 length from 0 to a full address, inclusive. 333 2. Host Address. This element is a full host address. 335 (We will see below that an Address Prefix FEC element which is a full 336 address has a different effect than a Host Address FEC element which 337 has the same address.) 339 We say that a particular address "matches" a particular address 340 prefix if and only if that address begins with that prefix. We also 341 say that a particular packet matches a particular LSP if and only if 342 that LSP has an Address Prefix FEC element which matches the packet's 343 destination address. With respect to a particular packet and a 344 particular LSP, we refer to any Address Prefix FEC element which 345 matches the packet as the "matching prefix". 347 The procedure for mapping a particular packet to a particular LSP 348 uses the following rules. Each rule is applied in turn until the 349 packet can be mapped to an LSP. 351 - If there is exactly one LSP which has a Host Address FEC element 352 that is identical to the packet's destination address, then the 353 packet is mapped to that LSP. 355 - If there multiple LSPs, each containing a Host Address FEC 356 element that is identical to the packet's destination address, 357 then the packet is mapped to one of those LSPs. The procedure 358 for selecting one of those LSPs is beyond the scope of this 359 document. 361 - If a packet matches exactly one LSP, the packet is mapped to that 362 LSP. 364 - If a packet matches multiple LSPs, it is mapped to the LSP whose 365 matching prefix is the longest. If there is no one LSP whose 366 matching prefix is longest, the packet is mapped to one from the 367 set of LSPs whose matching prefix is longer than the others. The 368 procedure for selecting one of those LSPs is beyond the scope of 369 this document. 371 - If it is known that a packet must traverse a particular egress 372 router, and there is an LSP which has an Address Prefix FEC 373 element which is an address of that router, then the packet is 374 mapped to that LSP. The procedure for obtaining this knowledge 375 is beyond the scope of this document. 377 The procedure for determining that a packet must traverse a 378 particular egress router is beyond the scope of this document. (As 379 an example, if one is running a link state routing algorithm, it may 380 be possible to obtain this information from the link state data base. 381 As another example, if one is running BGP, it may be possible to 382 obtain this information from the BGP next hop attribute of the 383 packet's route.) 385 It is worth pointing out a few consequences of these rules: 387 - A packet may be sent on the LSP whose Address Prefix FEC element 388 is the address of the packet's egress router ONLY if there is no 389 LSP matching the packet's destination address. 391 - A packet may match two LSPs, one with a Host Address FEC element 392 and one with an Address Prefix FEC element. In this case, the 393 packet is always assigned to the former. 395 - A packet which does not match a particular Host Address FEC 396 element may not be sent on the corresponding LSP, even if the 397 Host Address FEC element identifies the packet's egress router. 399 2.2. Label Spaces, Identifiers, Sessions and Transport 401 2.2.1. Label Spaces 403 The notion of "label space" is useful for discussing the assignment 404 and distribution of labels. There are two types of label spaces: 406 - Per interface label space. Interface-specific incoming labels 407 are used for interfaces that use interface resources for labels. 408 An example of such an interface is a label-controlled ATM 409 interface that uses VCIs as labels, or a Frame Relay interface 410 that uses DLCIs as labels. 412 Note that the use of a per interface label space only makes sense 413 when the LDP peers are "directly connected" over an interface, 414 and the label is only going to be used for traffic sent over that 415 interface. 417 - Per platform label space. Platform-wide incoming labels are used 418 for interfaces that can share the same labels. 420 2.2.2. LDP Identifiers 422 An LDP identifier is a six octet quantity used to identify an LSR 423 label space. The first four octets encode an IP address assigned to 424 the LSR, and the last two octets identify a specific label space 425 within the LSR. The last two octets of LDP Identifiers for 426 platform-wide label spaces are always both zero. This document uses 427 the following print representation for LDP Identifiers: 429 :