From 4bfd864f10b68b71482b35c818559068ef8d5797 Mon Sep 17 00:00:00 2001 From: Thomas Voss Date: Wed, 27 Nov 2024 20:54:24 +0100 Subject: doc: Add RFC documents --- doc/rfc/rfc3036.txt | 7395 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 7395 insertions(+) create mode 100644 doc/rfc/rfc3036.txt (limited to 'doc/rfc/rfc3036.txt') diff --git a/doc/rfc/rfc3036.txt b/doc/rfc/rfc3036.txt new file mode 100644 index 0000000..63867bd --- /dev/null +++ b/doc/rfc/rfc3036.txt @@ -0,0 +1,7395 @@ + + + + + + +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. + + Discovery messages provide a mechanism whereby LSRs indicate their + presence in a network by sending a Hello message periodically. This + is transmitted as a UDP packet to the LDP port at the `all routers on + this subnet' group multicast address. When an LSR chooses to + establish a session with another LSR learned via the Hello message, + it uses the LDP initialization procedure over TCP transport. Upon + successful completion of the initialization procedure, the two LSRs + are LDP peers, and may exchange advertisement messages. + + When to request a label or advertise a label mapping to a peer is + largely a local decision made by an LSR. In general, the LSR + requests a label mapping from a neighboring LSR when it needs one, + and advertises a label mapping to a neighboring LSR when it wishes + the neighbor to use a label. + + Correct operation of LDP requires reliable and in order delivery of + messages. To satisfy these requirements LDP uses the TCP transport + for session, advertisement and notification messages; i.e., for + everything but the UDP-based discovery mechanism. + + + + + + + + +Andersson, et al. Standards Track [Page 6] + +RFC 3036 LDP Specification January 2001 + + +1.3. LDP Message Structure + + All LDP messages have a common structure that uses a Type-Length- + Value (TLV) encoding scheme; see Section "Type-Length-Value" + encoding. The Value part of a TLV-encoded object, or TLV for short, + may itself contain one or more TLVs. + +1.4. LDP Error Handling + + LDP errors and other events of interest are signaled to an LDP peer + by notification messages. + + There are two kinds of LDP notification messages: + + 1. Error notifications, used to signal fatal errors. If an LSR + receives an error notification from a peer for an LDP session, + it terminates the LDP session by closing the TCP transport + connection for the session and discarding all label mappings + learned via the session. + + 2. Advisory notifications, used to pass an LSR information about + the LDP session or the status of some previous message received + from the peer. + +1.5. LDP Extensibility and Future Compatibility + + Functionality may be added to LDP in the future. It is likely that + future functionality will utilize new messages and object types + (TLVs). It may be desirable to employ such new messages and TLVs + within a network using older implementations that do not recognize + them. While it is not possible to make every future enhancement + backwards compatible, some prior planning can ease the introduction + of new capabilities. This specification defines rules for handling + unknown message types and unknown TLVs for this purpose. + +1.6. Specification Language + + The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", + "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this + document are to be interpreted as described in [RFC2119]. + + + + + + + + + + + +Andersson, et al. Standards Track [Page 7] + +RFC 3036 LDP Specification January 2001 + + +2. LDP Operation + +2.1. FECs + + It is necessary to precisely specify which packets may be mapped to + each LSP. This is done by providing a FEC specification for each + LSP. The FEC identifies the set of IP packets which may be mapped to + that LSP. + + Each FEC is specified as a set of one or more FEC elements. Each FEC + element identifies a set of packets which may be mapped to the + corresponding LSP. When an LSP is shared by multiple FEC elements, + that LSP is terminated at (or before) the node where the FEC elements + can no longer share the same path. + + Following are the currently defined types of FEC elements. New + element types may be added as needed: + + 1. Address Prefix. This element is an address prefix of any + length from 0 to a full address, inclusive. + + 2. Host Address. This element is a full host address. + + (We will see below that an Address Prefix FEC element which is a full + address has a different effect than a Host Address FEC element which + has the same address.) + + We say that a particular address "matches" a particular address + prefix if and only if that address begins with that prefix. We also + say that a particular packet matches a particular LSP if and only if + that LSP has an Address Prefix FEC element which matches the packet's + destination address. With respect to a particular packet and a + particular LSP, we refer to any Address Prefix FEC element which + matches the packet as the "matching prefix". + + The procedure for mapping a particular packet to a particular LSP + uses the following rules. Each rule is applied in turn until the + packet can be mapped to an LSP. + + - If there is exactly one LSP which has a Host Address FEC + element that is identical to the packet's destination address, + then the packet is mapped to that LSP. + + - If there are multiple LSPs, each containing a Host Address FEC + element that is identical to the packet's destination address, + then the packet is mapped to one of those LSPs. The procedure + for selecting one of those LSPs is beyond the scope of this + document. + + + +Andersson, et al. Standards Track [Page 8] + +RFC 3036 LDP Specification January 2001 + + + - If a packet matches exactly one LSP, the packet is mapped to + that LSP. + + - If a packet matches multiple LSPs, it is mapped to the LSP + whose matching prefix is the longest. If there is no one LSP + whose matching prefix is longest, the packet is mapped to one + from the set of LSPs whose matching prefix is longer than the + others. The procedure for selecting one of those LSPs is + beyond the scope of this document. + + - If it is known that a packet must traverse a particular egress + router, and there is an LSP which has an Address Prefix FEC + element which is an address of that router, then the packet is + mapped to that LSP. The procedure for obtaining this knowledge + is beyond the scope of this document. + + The procedure for determining that a packet must traverse a + particular egress router is beyond the scope of this document. (As + an example, if one is running a link state routing algorithm, it may + be possible to obtain this information from the link state data base. + As another example, if one is running BGP, it may be possible to + obtain this information from the BGP next hop attribute of the + packet's route.) + + It is worth pointing out a few consequences of these rules: + + - A packet may be sent on the LSP whose Address Prefix FEC + element is the address of the packet's egress router ONLY if + there is no LSP matching the packet's destination address. + + - A packet may match two LSPs, one with a Host Address FEC + element and one with an Address Prefix FEC element. In this + case, the packet is always assigned to the former. + + - A packet which does not match a particular Host Address FEC + element may not be sent on the corresponding LSP, even if the + Host Address FEC element identifies the packet's egress router. + +2.2. Label Spaces, Identifiers, Sessions and Transport + +2.2.1. Label Spaces + + The notion of "label space" is useful for discussing the assignment + and distribution of labels. There are two types of label spaces: + + + + + + + +Andersson, et al. Standards Track [Page 9] + +RFC 3036 LDP Specification January 2001 + + + - Per interface label space. Interface-specific incoming labels + are used for interfaces that use interface resources for + labels. An example of such an interface is a label-controlled + ATM interface that uses VCIs as labels, or a Frame Relay + interface that uses DLCIs as labels. + + Note that the use of a per interface label space only makes + sense when the LDP peers are "directly connected" over an + interface, and the label is only going to be used for traffic + sent over that interface. + + - Per platform label space. Platform-wide incoming labels are + used for interfaces that can share the same labels. + +2.2.2. LDP Identifiers + + An LDP identifier is a six octet quantity used to identify an LSR + label space. The first four octets identify the LSR and must be a + globally unique value, such as a 32-bit router Id assigned to the + LSR. The last two octets identify a specific label space within the + LSR. The last two octets of LDP Identifiers for platform-wide label + spaces are always both zero. This document uses the following print + representation for LDP Identifiers: + + :