| < draft-ietf-mpls-rfc3036bis-01.txt | draft-ietf-mpls-rfc3036bis-02.txt > | |||
|---|---|---|---|---|
| Network Working Group Loa Andersson | Network Working Group Loa Andersson | |||
| Internet Draft Ina Minei | Internet Draft Ina Minei | |||
| Expiration Date: May 2005 Bob Thomas | Expiration Date: January 2006 Bob Thomas | |||
| Editors | Editors | |||
| November 2004 | July 2005 | |||
| LDP Specification | LDP Specification | |||
| draft-ietf-mpls-rfc3036bis-01.txt | draft-ietf-mpls-rfc3036bis-02.txt | |||
| Status of this Memo | Status of this Memo | |||
| By submitting this Internet-Draft, we certify that any applicable | By submitting this Internet-Draft, each author represents that any | |||
| patent or other IPR claims of which we are aware have been disclosed, | applicable patent or other IPR claims of which he or she is aware | |||
| or will be disclosed, and any of which we become aware will be | have been or will be disclosed, and any of which he or she becomes | |||
| disclosed, in accordance with RFC 3668. | aware will be disclosed, in accordance with Section 6 of BCP 79. | |||
| This document is an Internet-Draft and is in full conformance with | ||||
| all provisions of Section 10 of RFC2026. | ||||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that other | Task Force (IETF), its areas, and its working groups. Note that other | |||
| groups may also distribute working documents as Internet-Drafts. | groups may also distribute working documents as Internet-Drafts. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| How to read this document | ||||
| This section will be removed prior to publication. | ||||
| This document is produced as part of advancing the LDP specification | ||||
| to draft standard status. This document contains the original text | ||||
| of RFC3036, with a few changes that are the result of the experience | ||||
| gained with the protocol. | ||||
| Sections that changed from RFC3036 are marked ### in the body of this | ||||
| document, to facilitate the review process. The marking will be | ||||
| removed prior to publication. | ||||
| A list of changes from RFC 3036 is also included. This list will | ||||
| remain in the final version of the document, but will move towards | ||||
| the end of the document. | ||||
| Source of this document | Source of this document | |||
| ### | ||||
| This document is produced as part of advancing the LDP specification | This document is produced as part of advancing the LDP specification | |||
| to draft standard status. The LDP specification was originally | to draft standard status. The LDP specification was originally | |||
| published as RFC 3036 in January 2001. It was produced by the MPLS | published as RFC 3036 in January 2001. It was produced by the MPLS | |||
| working of the IETF and was jointly authored by Loa Andersson, Paul | working of the IETF and was jointly authored by Loa Andersson, Paul | |||
| Doolan, Nancy Feldman, Andre Fredette and Bob Thomas. | Doolan, Nancy Feldman, Andre Fredette and Bob Thomas. | |||
| ### | ||||
| ### | ||||
| Changes from version 00 | ||||
| 1. Removed the host address fec and the references to it. | ||||
| 2. Removed the text added in version 00 regarding use of wildcard | ||||
| fec in label request messages, as it contradicts section 3.4.1. | ||||
| 3. Reversed the change from version 00: In the "receive label | ||||
| mapping" procedures, removed unnecessary checks in step LMp.29. | ||||
| The checks are left in place since they make the code more | ||||
| readable. | ||||
| Changes from RFC3036 | ||||
| Here is a list of changes from RFC3036 | ||||
| 1. Removed the Host Address FEC and references to it, since it is | ||||
| not used by any implementation. | ||||
| 2. Split the reference list into normative and non-normative | ||||
| references | ||||
| 3. Removed "MPLS using ATM VP Switching" from the list of | ||||
| normative references. | ||||
| 4. Clarified the use of the F bit. | ||||
| 5. Added option to allow split horizon when doing ordered control. | ||||
| 6. Clarified the processing of messages with the U-bit set during | ||||
| the session initialization procedures | ||||
| 7. Clarified the processing of the E-bit during session | ||||
| initialization procedures. | ||||
| 8. Added case for TLV length too short in the specification for | ||||
| handling malformed TLVs. | ||||
| 9. In the section describing handling of unknown TLV, removed | ||||
| reference to inexistent section (errata in original document) | ||||
| 10. In the "receive label request" procedures, if a loop is | ||||
| detected, changed the procedure to send a notification before | ||||
| aborting the rest of the processing. | ||||
| 11. In "receive label release" procedures, clarified the behavior | ||||
| for merge-capable LSRs. | ||||
| 12. In "receive label release" procedures, clarified the behavior | ||||
| for receipt of an unknown FEC. | ||||
| 13. In note 4 of "Detect Change in FEC Next Hop", modified the text | ||||
| to reference the correct set of conditions for sending a label | ||||
| request procedure (typo in the original document) | ||||
| 14. In the procedures for "LSR decides to no longer label switch a | ||||
| FEC", clarified the fact that the label must not be reused | ||||
| until a label release is received. | ||||
| 15. In the routine "Prepare_Label_Mapping_Attributes" added a note | ||||
| regarding the treatment of unknown TLVs according to their U | ||||
| and F bits. | ||||
| 16. In the address message processing procedures, clarified the | ||||
| behavior for the case where an LSR receives re-advertisement of | ||||
| an address previously advertised it, or withdrawal of an | ||||
| address from an LSR that has not previously advertised that | ||||
| address. | ||||
| 17. In the routine "Receive Label Mapping" clarified the meaning | ||||
| of PrevAdvLabel when no label advertisement message has been | ||||
| sent previously. | ||||
| 18. In the "receive label mapping" procedures, if a loop is | ||||
| detected, modified the procedure to send a notification before | ||||
| aborting the rest of the processing. | ||||
| 19. In the "receive label mapping" procedures, corrected step | ||||
| LMp.10 to handle label mapping messages for additional (non- | ||||
| merged) LSPs for the FEC. | ||||
| 20. In the routine "Receive Label Abort Request" clarified the | ||||
| behavior for non-merging LSRs. | ||||
| 21. Added the following items to the section discussing areas for | ||||
| future study: | ||||
| o extensions for communicating the maximum transmission unit | ||||
| o basic peer discovery on NBMA media | ||||
| o option of shutting down an adjacency | ||||
| o mechanisms for securing Hello messages | ||||
| o detection of a stateless fast control plane restart | ||||
| o o support of "end of LIB" message | ||||
| o mechanisms for dealing with the case where different LSRs | ||||
| advertise the same address. | ||||
| #### | ||||
| Abstract | Abstract | |||
| The architecture for Multi Protocol Label Switching (MPLS) is | The architecture for Multi Protocol Label Switching (MPLS) is | |||
| described in RFC 3031. A fundamental concept in MPLS is that two | described in RFC 3031. A fundamental concept in MPLS is that two | |||
| Label Switching Routers (LSRs) must agree on the meaning of the | Label Switching Routers (LSRs) must agree on the meaning of the | |||
| labels used to forward traffic between and through them. This common | labels used to forward traffic between and through them. This common | |||
| understanding is achieved by using a set of procedures, called a | understanding is achieved by using a set of procedures, called a | |||
| label distribution protocol, by which one LSR informs another of | label distribution protocol, by which one LSR informs another of | |||
| label bindings it has made. This document defines a set of such | label bindings it has made. This document defines a set of such | |||
| procedures called LDP (for Label Distribution Protocol) by which LSRs | procedures called LDP (for Label Distribution Protocol) by which LSRs | |||
| distribute labels to support MPLS forwarding along normally routed | distribute labels to support MPLS forwarding along normally routed | |||
| paths. | paths. | |||
| Table of Contents | Table of Contents | |||
| How to read this document ............................. 1 | Source of this document ............................... 1 | |||
| Source of this document ............................... 2 | 1 LDP Overview .......................................... 7 | |||
| Changes from version 00 ............................... 2 | 1.1 LDP Peers ............................................. 8 | |||
| Changes from RFC3036 .................................. 2 | 1.2 LDP Message Exchange .................................. 8 | |||
| 1 LDP Overview .......................................... 9 | 1.3 LDP Message Structure ................................. 9 | |||
| 1.1 LDP Peers ............................................. 10 | 1.4 LDP Error Handling .................................... 9 | |||
| 1.2 LDP Message Exchange .................................. 10 | 1.5 LDP Extensibility and Future Compatibility ............ 9 | |||
| 1.3 LDP Message Structure ................................. 11 | 1.6 Specification Language ................................ 9 | |||
| 1.4 LDP Error Handling .................................... 11 | 2 LDP Operation ......................................... 10 | |||
| 1.5 LDP Extensibility and Future Compatibility ............ 11 | 2.1 FECs .................................................. 10 | |||
| 1.6 Specification Language ................................ 11 | 2.2 Label Spaces, Identifiers, Sessions and Transport ..... 11 | |||
| 2 LDP Operation ......................................... 12 | 2.2.1 Label Spaces .......................................... 11 | |||
| 2.1 FECs .................................................. 12 | 2.2.2 LDP Identifiers ....................................... 11 | |||
| 2.2 Label Spaces, Identifiers, Sessions and Transport ..... 13 | 2.2.3 LDP Sessions .......................................... 12 | |||
| 2.2.1 Label Spaces .......................................... 13 | 2.2.4 LDP Transport ......................................... 12 | |||
| 2.2.2 LDP Identifiers ....................................... 14 | 2.3 LDP Sessions between non-Directly Connected LSRs ...... 12 | |||
| 2.2.3 LDP Sessions .......................................... 14 | 2.4 LDP Discovery ......................................... 13 | |||
| 2.2.4 LDP Transport ......................................... 14 | 2.4.1 Basic Discovery Mechanism ............................. 13 | |||
| 2.3 LDP Sessions between non-Directly Connected LSRs ...... 15 | 2.4.2 Extended Discovery Mechanism .......................... 13 | |||
| 2.4 LDP Discovery ......................................... 15 | 2.5 Establishing and Maintaining LDP Sessions ............ 14 | |||
| 2.4.1 Basic Discovery Mechanism ............................. 15 | 2.5.1 LDP Session Establishment ............................. 14 | |||
| 2.4.2 Extended Discovery Mechanism .......................... 16 | 2.5.2 Transport Connection Establishment .................... 15 | |||
| 2.5 Establishing and Maintaining LDP Sessions ............ 17 | 2.5.3 Session Initialization ................................ 16 | |||
| 2.5.1 LDP Session Establishment ............................. 17 | 2.5.4 Initialization State Machine .......................... 19 | |||
| 2.5.2 Transport Connection Establishment .................... 17 | 2.5.5 Maintaining Hello Adjacencies ......................... 21 | |||
| 2.5.3 Session Initialization ................................ 18 | 2.5.6 Maintaining LDP Sessions .............................. 21 | |||
| 2.5.4 Initialization State Machine .......................... 21 | 2.6 Label Distribution and Management ..................... 22 | |||
| 2.5.5 Maintaining Hello Adjacencies ......................... 24 | 2.6.1 Label Distribution Control Mode ....................... 22 | |||
| 2.5.6 Maintaining LDP Sessions .............................. 24 | 2.6.1.1 Independent Label Distribution Control ................ 22 | |||
| 2.6 Label Distribution and Management ..................... 25 | 2.6.1.2 Ordered Label Distribution Control .................... 22 | |||
| 2.6.1 Label Distribution Control Mode ....................... 25 | 2.6.2 Label Retention Mode .................................. 23 | |||
| 2.6.1.1 Independent Label Distribution Control ................ 25 | 2.6.2.1 Conservative Label Retention Mode ..................... 23 | |||
| 2.6.1.2 Ordered Label Distribution Control .................... 25 | 2.6.2.2 Liberal Label Retention Mode .......................... 24 | |||
| 2.6.2 Label Retention Mode .................................. 26 | 2.6.3 Label Advertisement Mode .............................. 24 | |||
| 2.6.2.1 Conservative Label Retention Mode ..................... 26 | 2.7 LDP Identifiers and Next Hop Addresses ................ 24 | |||
| 2.6.2.2 Liberal Label Retention Mode .......................... 27 | 2.8 Loop Detection ........................................ 25 | |||
| 2.6.3 Label Advertisement Mode .............................. 27 | 2.8.1 Label Request Message ................................. 26 | |||
| 2.7 LDP Identifiers and Next Hop Addresses ................ 27 | 2.8.2 Label Mapping Message ................................. 27 | |||
| 2.8 Loop Detection ........................................ 28 | 2.8.3 Discussion ............................................ 29 | |||
| 2.8.1 Label Request Message ................................. 29 | 2.9 Authenticity and Integrity of LDP Messages ............ 29 | |||
| 2.8.2 Label Mapping Message ................................. 30 | 2.9.1 TCP MD5 Signature Option .............................. 29 | |||
| 2.8.3 Discussion ............................................ 32 | 2.9.2 LDP Use of TCP MD5 Signature Option ................... 31 | |||
| 2.9 Authenticity and Integrity of LDP Messages ............ 32 | 2.10 Label Distribution for Explicitly Routed LSPs ......... 32 | |||
| 2.9.1 TCP MD5 Signature Option .............................. 33 | 3 Protocol Specification ................................ 32 | |||
| 2.9.2 LDP Use of TCP MD5 Signature Option ................... 34 | 3.1 LDP PDUs .............................................. 32 | |||
| 2.10 Label Distribution for Explicitly Routed LSPs ......... 35 | 3.2 LDP Procedures ........................................ 33 | |||
| 3 Protocol Specification ................................ 35 | 3.3 Type-Length-Value Encoding ............................ 34 | |||
| 3.1 LDP PDUs .............................................. 35 | 3.4 TLV Encodings for Commonly Used Parameters ............ 35 | |||
| 3.2 LDP Procedures ........................................ 36 | 3.4.1 FEC TLV ............................................... 36 | |||
| 3.3 Type-Length-Value Encoding ............................ 37 | 3.4.1.1 FEC Procedures ........................................ 37 | |||
| 3.4 TLV Encodings for Commonly Used Parameters ............ 39 | 3.4.2 Label TLVs ............................................ 38 | |||
| 3.4.1 FEC TLV ............................................... 39 | 3.4.2.1 Generic Label TLV ..................................... 38 | |||
| 3.4.1.1 FEC Procedures ........................................ 42 | 3.4.2.2 ATM Label TLV ......................................... 38 | |||
| 3.4.2 Label TLVs ............................................ 43 | 3.4.2.3 Frame Relay Label TLV ................................. 39 | |||
| 3.4.2.1 Generic Label TLV ..................................... 43 | 3.4.3 Address List TLV ...................................... 40 | |||
| 3.4.2.2 ATM Label TLV ......................................... 44 | 3.4.4 Hop Count TLV ......................................... 40 | |||
| 3.4.2.3 Frame Relay Label TLV ................................. 44 | 3.4.4.1 Hop Count Procedures .................................. 41 | |||
| 3.4.3 Address List TLV ...................................... 45 | 3.4.5 Path Vector TLV ....................................... 42 | |||
| 3.4.4 Hop Count TLV ......................................... 46 | 3.4.5.1 Path Vector Procedures ................................ 43 | |||
| 3.4.4.1 Hop Count Procedures .................................. 46 | 3.4.5.1.1 Label Request Path Vector ............................. 43 | |||
| 3.4.5 Path Vector TLV ....................................... 48 | 3.4.5.1.2 Label Mapping Path Vector ............................. 43 | |||
| 3.4.5.1 Path Vector Procedures ................................ 48 | 3.4.6 Status TLV ............................................ 44 | |||
| 3.4.5.1.1 Label Request Path Vector ............................. 48 | 3.5 LDP Messages .......................................... 46 | |||
| 3.4.5.1.2 Label Mapping Path Vector ............................. 50 | 3.5.1 Notification Message .................................. 48 | |||
| 3.4.6 Status TLV ............................................ 51 | 3.5.1.1 Notification Message Procedures ....................... 49 | |||
| 3.5 LDP Messages .......................................... 53 | 3.5.1.2 Events Signaled by Notification Messages .............. 49 | |||
| 3.5.1 Notification Message .................................. 55 | 3.5.1.2.1 Malformed PDU or Message .............................. 50 | |||
| 3.5.1.1 Notification Message Procedures ....................... 56 | 3.5.1.2.2 Unknown or Malformed TLV .............................. 51 | |||
| 3.5.1.2 Events Signaled by Notification Messages .............. 57 | 3.5.1.2.3 Session KeepAlive Timer Expiration .................... 51 | |||
| 3.5.1.2.1 Malformed PDU or Message .............................. 57 | 3.5.1.2.4 Unilateral Session Shutdown ........................... 51 | |||
| 3.5.1.2.2 Unknown or Malformed TLV .............................. 59 | 3.5.1.2.5 Initialization Message Events ......................... 51 | |||
| 3.5.1.2.3 Session KeepAlive Timer Expiration .................... 60 | 3.5.1.2.6 Events Resulting From Other Messages .................. 52 | |||
| 3.5.1.2.4 Unilateral Session Shutdown ........................... 61 | 3.5.1.2.7 Internal Errors ....................................... 52 | |||
| 3.5.1.2.5 Initialization Message Events ......................... 61 | 3.5.1.2.8 Miscellaneous Events .................................. 52 | |||
| 3.5.1.2.6 Events Resulting From Other Messages .................. 61 | 3.5.2 Hello Message ......................................... 52 | |||
| 3.5.1.2.7 Internal Errors ....................................... 61 | 3.5.2.1 Hello Message Procedures .............................. 54 | |||
| 3.5.1.2.8 Miscellaneous Events .................................. 61 | 3.5.3 Initialization Message ................................ 56 | |||
| 3.5.2 Hello Message ......................................... 61 | 3.5.3.1 Initialization Message Procedures ..................... 64 | |||
| 3.5.2.1 Hello Message Procedures .............................. 64 | 3.5.4 KeepAlive Message ..................................... 64 | |||
| 3.5.3 Initialization Message ................................ 65 | 3.5.4.1 KeepAlive Message Procedures .......................... 64 | |||
| 3.5.3.1 Initialization Message Procedures ..................... 73 | 3.5.5 Address Message ....................................... 65 | |||
| 3.5.4 KeepAlive Message ..................................... 73 | 3.5.5.1 Address Message Procedures ............................ 65 | |||
| 3.5.4.1 KeepAlive Message Procedures .......................... 74 | 3.5.6 Address Withdraw Message .............................. 66 | |||
| 3.5.5 Address Message ....................................... 74 | 3.5.6.1 Address Withdraw Message Procedures ................... 67 | |||
| 3.5.5.1 Address Message Procedures ............................ 75 | 3.5.7 Label Mapping Message ................................. 67 | |||
| 3.5.6 Address Withdraw Message .............................. 75 | 3.5.7.1 Label Mapping Message Procedures ...................... 68 | |||
| 3.5.6.1 Address Withdraw Message Procedures ................... 76 | 3.5.7.1.1 Independent Control Mapping ........................... 69 | |||
| 3.5.7 Label Mapping Message ................................. 76 | 3.5.7.1.2 Ordered Control Mapping ............................... 69 | |||
| 3.5.7.1 Label Mapping Message Procedures ...................... 78 | 3.5.7.1.3 Downstream on Demand Label Advertisement .............. 70 | |||
| 3.5.7.1.1 Independent Control Mapping ........................... 78 | 3.5.7.1.4 Downstream Unsolicited Label Advertisement ............ 70 | |||
| 3.5.7.1.2 Ordered Control Mapping ............................... 79 | 3.5.8 Label Request Message ................................. 71 | |||
| 3.5.7.1.3 Downstream on Demand Label Advertisement .............. 79 | 3.5.8.1 Label Request Message Procedures ...................... 72 | |||
| 3.5.7.1.4 Downstream Unsolicited Label Advertisement ............ 81 | 3.5.9 Label Abort Request Message ........................... 73 | |||
| 3.5.8 Label Request Message ................................. 81 | 3.5.9.1 Label Abort Request Message Procedures ................ 74 | |||
| 3.5.8.1 Label Request Message Procedures ...................... 82 | 3.5.10 Label Withdraw Message ................................ 76 | |||
| 3.5.9 Label Abort Request Message ........................... 84 | 3.5.10.1 Label Withdraw Message Procedures ..................... 77 | |||
| 3.5.9.1 Label Abort Request Message Procedures ................ 85 | 3.5.11 Label Release Message ................................. 77 | |||
| 3.5.10 Label Withdraw Message ................................ 86 | 3.5.11.1 Label Release Message Procedures ...................... 78 | |||
| 3.5.10.1 Label Withdraw Message Procedures ..................... 87 | 3.6 Messages and TLVs for Extensibility ................... 79 | |||
| 3.5.11 Label Release Message ................................. 89 | 3.6.1 LDP Vendor-private Extensions ......................... 79 | |||
| 3.5.11.1 Label Release Message Procedures ...................... 90 | 3.6.1.1 LDP Vendor-private TLVs ............................... 79 | |||
| 3.6 Messages and TLVs for Extensibility ................... 91 | 3.6.1.2 LDP Vendor-private Messages ........................... 81 | |||
| 3.6.1 LDP Vendor-private Extensions ......................... 91 | 3.6.2 LDP Experimental Extensions ........................... 82 | |||
| 3.6.1.1 LDP Vendor-private TLVs ............................... 91 | 3.7 Message Summary ....................................... 82 | |||
| 3.6.1.2 LDP Vendor-private Messages ........................... 94 | 3.8 TLV Summary ........................................... 83 | |||
| 3.6.2 LDP Experimental Extensions ........................... 95 | 3.9 Status Code Summary ................................... 84 | |||
| 3.7 Message Summary ....................................... 95 | 3.10 Well-known Numbers .................................... 85 | |||
| 3.8 TLV Summary ........................................... 96 | 3.10.1 UDP and TCP Ports ..................................... 85 | |||
| 3.9 Status Code Summary ................................... 97 | 3.10.2 Implicit NULL Label ................................... 85 | |||
| 3.10 Well-known Numbers .................................... 99 | 4 IANA Considerations ................................... 85 | |||
| 3.10.1 UDP and TCP Ports ..................................... 99 | 4.1 Message Type Name Space ............................... 85 | |||
| 3.10.2 Implicit NULL Label ................................... 99 | 4.2 TLV Type Name Space ................................... 86 | |||
| 4 IANA Considerations ................................... 99 | 4.3 FEC Type Name Space ................................... 86 | |||
| 4.1 Message Type Name Space ............................... 99 | 4.4 Status Code Name Space ................................ 87 | |||
| 4.2 TLV Type Name Space ................................... 101 | 4.5 Experiment ID Name Space .............................. 87 | |||
| 4.3 FEC Type Name Space ................................... 101 | 5 Security Considerations ............................... 87 | |||
| 4.4 Status Code Name Space ................................ 102 | 5.1 Spoofing .............................................. 87 | |||
| 4.5 Experiment ID Name Space .............................. 102 | 5.2 Privacy ............................................... 88 | |||
| 5 Security Considerations ............................... 102 | 5.3 Denial of Service ..................................... 89 | |||
| 5.1 Spoofing .............................................. 102 | 6 Areas for Future Study ................................ 90 | |||
| 5.2 Privacy ............................................... 104 | 7 Changes from RFC3036 .................................. 91 | |||
| 5.3 Denial of Service ..................................... 104 | 8 Acknowledgments ....................................... 93 | |||
| 6 Areas for Future Study ................................ 106 | 9 References ............................................ 93 | |||
| 7 Acknowledgments ....................................... 107 | 9.1 Normative references .................................. 93 | |||
| 8 References ............................................ 108 | 9.2 Non-normative references .............................. 94 | |||
| 8.1 Normative references .................................. 108 | 10 Intellectual Property Statement ....................... 95 | |||
| 8.2 Non-normative references .............................. 109 | 11 Editors' Addresses .................................... 95 | |||
| 9 Intellectual Property Statement ....................... 111 | Appendix A LDP Label Distribution Procedures ..................... 96 | |||
| 10 Editors' Addresses .................................... 111 | A.1 Handling Label Distribution Events .................... 98 | |||
| Appendix A LDP Label Distribution Procedures ..................... 113 | A.1.1 Receive Label Request ................................. 99 | |||
| A.1 Handling Label Distribution Events .................... 115 | A.1.2 Receive Label Mapping ................................. 102 | |||
| A.1.1 Receive Label Request ................................. 116 | A.1.3 Receive Label Abort Request ........................... 108 | |||
| A.1.2 Receive Label Mapping ................................. 120 | A.1.4 Receive Label Release ................................. 110 | |||
| A.1.3 Receive Label Abort Request ........................... 130 | A.1.5 Receive Label Withdraw ................................ 112 | |||
| A.1.4 Receive Label Release ................................. 133 | A.1.6 Recognize New FEC ..................................... 113 | |||
| A.1.5 Receive Label Withdraw ................................ 135 | A.1.7 Detect Change in FEC Next Hop ......................... 116 | |||
| A.1.6 Recognize New FEC ..................................... 137 | A.1.8 Receive Notification / Label Request Aborted .......... 119 | |||
| A.1.7 Detect Change in FEC Next Hop ......................... 140 | A.1.9 Receive Notification / No Label Resources ............. 119 | |||
| A.1.8 Receive Notification / Label Request Aborted .......... 143 | A.1.10 Receive Notification / No Route ....................... 120 | |||
| A.1.9 Receive Notification / No Label Resources ............. 144 | A.1.11 Receive Notification / Loop Detected .................. 121 | |||
| A.1.10 Receive Notification / No Route ....................... 144 | A.1.12 Receive Notification / Label Resources Available ...... 121 | |||
| A.1.11 Receive Notification / Loop Detected .................. 146 | A.1.13 Detect local label resources have become available .... 122 | |||
| A.1.12 Receive Notification / Label Resources Available ...... 146 | A.1.14 LSR decides to no longer label switch a FEC ........... 123 | |||
| A.1.13 Detect local label resources have become available .... 147 | A.1.15 Timeout of deferred label request ..................... 124 | |||
| A.1.14 LSR decides to no longer label switch a FEC ........... 148 | A.2 Common Label Distribution Procedures .................. 124 | |||
| A.1.15 Timeout of deferred label request ..................... 149 | A.2.1 Send_Label ............................................ 125 | |||
| A.2 Common Label Distribution Procedures .................. 150 | A.2.2 Send_Label_Request .................................... 126 | |||
| A.2.1 Send_Label ............................................ 150 | A.2.3 Send_Label_Withdraw ................................... 127 | |||
| A.2.2 Send_Label_Request .................................... 151 | A.2.4 Send_Notification ..................................... 128 | |||
| A.2.3 Send_Label_Withdraw ................................... 153 | A.2.5 Send_Message .......................................... 128 | |||
| A.2.4 Send_Notification ..................................... 154 | A.2.6 Check_Received_Attributes ............................. 129 | |||
| A.2.5 Send_Message .......................................... 154 | A.2.7 Prepare_Label_Request_Attributes ...................... 130 | |||
| A.2.6 Check_Received_Attributes ............................. 155 | A.2.8 Prepare_Label_Mapping_Attributes ...................... 132 | |||
| A.2.7 Prepare_Label_Request_Attributes ...................... 156 | Full Copyright Statement .............................. 135 | |||
| A.2.8 Prepare_Label_Mapping_Attributes ...................... 158 | ||||
| Full Copyright Statement .............................. 162 | ||||
| 1. LDP Overview | 1. LDP Overview | |||
| The MPLS architecture [RFC3031] defines a label distribution protocol | The MPLS architecture [RFC3031] defines a label distribution protocol | |||
| as a set of procedures by which one Label Switched Router (LSR) | as a set of procedures by which one Label Switched Router (LSR) | |||
| informs another of the meaning of labels used to forward traffic | informs another of the meaning of labels used to forward traffic | |||
| between and through them. | between and through them. | |||
| The MPLS architecture does not assume a single label distribution | The MPLS architecture does not assume a single label distribution | |||
| protocol. In fact, a number of different label distribution proto- | protocol. In fact, a number of different label distribution proto- | |||
| cols are being standardized. Existing protocols have been extended | cols are being standardized. Existing protocols have been extended | |||
| so that label distribution can be piggybacked on them. New protocols | so that label distribution can be piggybacked on them. New protocols | |||
| have also been defined for the explicit purpose of distributing | have also been defined for the explicit purpose of distributing | |||
| labels. The MPLS architecture discusses some of the considerations | labels. The MPLS architecture discusses some of the considerations | |||
| when choosing a label distribution protocol for use in particular | when choosing a label distribution protocol for use in particular | |||
| MPLS applications such as Traffic Engineering [RFC2702]. | MPLS applications such as Traffic Engineering [RFC2702]. | |||
| ### New text to reflect that this document builds on 3036 | ||||
| The Label Distribution Protocol (LDP) is a protocol defined for dis- | The Label Distribution Protocol (LDP) is a protocol defined for dis- | |||
| tributing labels. It was originally published as RFC3036 in January | tributing labels. It was originally published as RFC3036 in January | |||
| 2001. It was produced by the MPLS working of the IETF and was jointly | 2001. It was produced by the MPLS working of the IETF and was jointly | |||
| authored by Loa Andersson, Paul Doolan, Nancy Feldman, Andre Fredette | authored by Loa Andersson, Paul Doolan, Nancy Feldman, Andre Fredette | |||
| and Bob Thomas. | and Bob Thomas. | |||
| ### | ||||
| LDP is a protocol defined for distributing labels. It is the set of | LDP is a protocol defined for distributing labels. It is the set of | |||
| procedures and messages by which Label Switched Routers (LSRs) estab- | procedures and messages by which Label Switched Routers (LSRs) estab- | |||
| lish Label Switched Paths (LSPs) through a network by mapping net- | lish Label Switched Paths (LSPs) through a network by mapping net- | |||
| work-layer routing information directly to data-link layer switched | work-layer routing information directly to data-link layer switched | |||
| paths. These LSPs may have an endpoint at a directly attached neigh- | paths. These LSPs may have an endpoint at a directly attached neigh- | |||
| bor (comparable to IP hop-by-hop forwarding), or may have an endpoint | bor (comparable to IP hop-by-hop forwarding), or may have an endpoint | |||
| at a network egress node, enabling switching via all intermediary | at a network egress node, enabling switching via all intermediary | |||
| nodes. | nodes. | |||
| LDP associates a Forwarding Equivalence Class (FEC) [RFC3031] with | LDP associates a Forwarding Equivalence Class (FEC) [RFC3031] with | |||
| skipping to change at page 12, line 20 ¶ | skipping to change at page 10, line 20 ¶ | |||
| each LSP. This is done by providing a FEC specification for each | 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 | LSP. The FEC identifies the set of IP packets which may be mapped to | |||
| that LSP. | that LSP. | |||
| Each FEC is specified as a set of one or more FEC elements. Each FEC | 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 corre- | element identifies a set of packets which may be mapped to the corre- | |||
| sponding LSP. When an LSP is shared by multiple FEC elements, that | sponding LSP. When an LSP is shared by multiple FEC elements, that | |||
| LSP is terminated at (or before) the node where the FEC elements can | LSP is terminated at (or before) the node where the FEC elements can | |||
| no longer share the same path. | no longer share the same path. | |||
| ### | ||||
| Changed the text to the end of the section to reflect removal of the | ||||
| host address fec. This includes changing the processing rules (remov- | ||||
| ing the unnecessary ones). | ||||
| ### | ||||
| This specification defines a single type of FEC element, the "Address | This specification defines a single type of FEC element, the "Address | |||
| Prefix FEC element". This element is an address prefix of any length | Prefix FEC element". This element is an address prefix of any length | |||
| from 0 to a full address, inclusive. | from 0 to a full address, inclusive. | |||
| Additional FEC elements may be defined, as needed, by other specifi- | Additional FEC elements may be defined, as needed, by other specifi- | |||
| cations. | cations. | |||
| In the remainder of this section we give the rules to be used for | In the remainder of this section we give the rules to be used for | |||
| mapping packets to LSPs that have been set up using an Address Prefix | mapping packets to LSPs that have been set up using an Address Prefix | |||
| FEC element. | FEC element. | |||
| skipping to change at page 19, line 51 ¶ | skipping to change at page 17, line 33 ¶ | |||
| ters it wishes to use and a KeepAlive message to signal | ters it wishes to use and a KeepAlive message to signal | |||
| acceptance of LSR2's parameters. If the parameters are not | acceptance of LSR2's parameters. If the parameters are not | |||
| acceptable, LSR1 responds by sending a Session | acceptable, LSR1 responds by sending a Session | |||
| Rejected/Parameters Error Notification message and closing | Rejected/Parameters Error Notification message and closing | |||
| the TCP connection. | the TCP connection. | |||
| c. If LSR1 cannot find a matching Hello adjacency it sends a | c. If LSR1 cannot find a matching Hello adjacency it sends a | |||
| Session Rejected/No Hello Error Notification message and | Session Rejected/No Hello Error Notification message and | |||
| closes the TCP connection. | closes the TCP connection. | |||
| d. If LSR1 receives a KeepAlive in response to its | d. If LSR1 receives a KeepAlive in response to its Initializa- | |||
| Initialization message, the session is operational from | tion message, the session is operational from LSR1's point | |||
| LSR1's point of view. | of view. | |||
| e. If LSR1 receives an Error Notification message, LSR2 has | e. If LSR1 receives an Error Notification message, LSR2 has | |||
| rejected its proposed session and LSR1 closes the TCP con- | rejected its proposed session and LSR1 closes the TCP con- | |||
| nection. | nection. | |||
| 2. When LSR1 plays the active role: | 2. When LSR1 plays the active role: | |||
| a. If LSR1 receives an Error Notification message, LSR2 has | a. If LSR1 receives an Error Notification message, LSR2 has | |||
| rejected its proposed session and LSR1 closes the TCP con- | rejected its proposed session and LSR1 closes the TCP con- | |||
| nection. | nection. | |||
| skipping to change at page 20, line 30 ¶ | skipping to change at page 18, line 12 ¶ | |||
| ters are unacceptable, LSR1 sends a Session Rejected/Param- | ters are unacceptable, LSR1 sends a Session Rejected/Param- | |||
| eters Error Notification message and closes the connection. | eters Error Notification message and closes the connection. | |||
| c. If LSR1 receives a KeepAlive message, LSR2 has accepted its | c. If LSR1 receives a KeepAlive message, LSR2 has accepted its | |||
| proposed session parameters. | proposed session parameters. | |||
| d. When LSR1 has received both an acceptable Initialization | d. When LSR1 has received both an acceptable Initialization | |||
| message and a KeepAlive message the session is operational | message and a KeepAlive message the session is operational | |||
| from LSR1's point of view. | from LSR1's point of view. | |||
| ### | ||||
| Until the LDP session is established, no other messages | Until the LDP session is established, no other messages | |||
| except those listed in the procedures above may be | except those listed in the procedures above may be | |||
| exchanged, and the rules for processing the U-bit in LDP | exchanged, and the rules for processing the U-bit in LDP | |||
| messages are overridden. | messages are overridden. | |||
| ### | ||||
| It is possible for a pair of incompatibly configured LSRs that | It is possible for a pair of incompatibly configured LSRs that | |||
| disagree on session parameters to engage in an endless sequence | disagree on session parameters to engage in an endless sequence | |||
| of messages as each NAKs the other's Initialization messages with | of messages as each NAKs the other's Initialization messages with | |||
| Error Notification messages. | Error Notification messages. | |||
| An LSR must throttle its session setup retry attempts with an | An LSR must throttle its session setup retry attempts with an | |||
| exponential backoff in situations where Initialization messages | exponential backoff in situations where Initialization messages | |||
| are being NAK'd. It is also recommended that an LSR detecting | are being NAK'd. It is also recommended that an LSR detecting | |||
| such a situation take action to notify an operator. | such a situation take action to notify an operator. | |||
| skipping to change at page 21, line 25 ¶ | skipping to change at page 19, line 10 ¶ | |||
| ration of the passive LSR will go unnoticed by the active LSR | ration of the passive LSR will go unnoticed by the active LSR | |||
| without some further action. Section "Hello Message" describes | without some further action. Section "Hello Message" describes | |||
| an optional mechanism an LSR can use to signal potential LDP | an optional mechanism an LSR can use to signal potential LDP | |||
| peers that it has been reconfigured. | peers that it has been reconfigured. | |||
| 2.5.4. Initialization State Machine | 2.5.4. Initialization State Machine | |||
| It is convenient to describe LDP session negotiation behavior in | It is convenient to describe LDP session negotiation behavior in | |||
| terms of a state machine. We define the LDP state machine to have | terms of a state machine. We define the LDP state machine to have | |||
| five possible states and present the behavior as a state transition | five possible states and present the behavior as a state transition | |||
| table and as a state transition diagram. | table and as a state transition diagram. Note that a shutdown message | |||
| is implemented as a notification message with a status TLV indicating | ||||
| a fatal error. | ||||
| Session Initialization State Transition Table | Session Initialization State Transition Table | |||
| STATE EVENT NEW STATE | STATE EVENT NEW STATE | |||
| NON EXISTENT Session TCP connection established INITIALIZED | NON EXISTENT Session TCP connection established INITIALIZED | |||
| established | established | |||
| INITIALIZED Transmit Initialization msg OPENSENT | INITIALIZED Transmit Initialization msg OPENSENT | |||
| (Active Role) | (Active Role) | |||
| skipping to change at page 33, line 52 ¶ | skipping to change at page 30, line 46 ¶ | |||
| TCP implementations with changing passwords). | TCP implementations with changing passwords). | |||
| Finally, there is no negotiation for the use of this option in | Finally, there is no negotiation for the use of this option in | |||
| a connection, rather it is purely a matter of site policy | a connection, rather it is purely a matter of site policy | |||
| whether or not its connections use the option." | whether or not its connections use the option." | |||
| "MD5 as a Hashing Algorithm | "MD5 as a Hashing Algorithm | |||
| Since this memo was first issued (under a different title), the | Since this memo was first issued (under a different title), the | |||
| MD5 algorithm has been found to be vulnerable to collision | MD5 algorithm has been found to be vulnerable to collision | |||
| search attacks [Dobb], and is considered by some to be | search attacks [Dobb], and is considered by some to be insuffi- | |||
| insufficiently strong for this type of application. | ciently strong for this type of application. | |||
| This memo still specifies the MD5 algorithm, however, since the | This memo still specifies the MD5 algorithm, however, since the | |||
| option has already been deployed operationally, and there was | option has already been deployed operationally, and there was | |||
| no "algorithm type" field defined to allow an upgrade using the | no "algorithm type" field defined to allow an upgrade using the | |||
| same option number. The original document did not specify a | same option number. The original document did not specify a | |||
| type field since this would require at least one more byte, and | type field since this would require at least one more byte, and | |||
| it was felt at the time that taking 19 bytes for the complete | it was felt at the time that taking 19 bytes for the complete | |||
| option (which would probably be padded to 20 bytes in TCP | option (which would probably be padded to 20 bytes in TCP | |||
| implementations) would be too much of a waste of the already | implementations) would be too much of a waste of the already | |||
| limited option space. | limited option space. | |||
| skipping to change at page 38, line 31 ¶ | skipping to change at page 34, line 41 ¶ | |||
| and the entire message must be ignored; if U is set (=1), the | and the entire message must be ignored; if U is set (=1), the | |||
| unknown TLV is silently ignored and the rest of the message is | unknown TLV is silently ignored and the rest of the message is | |||
| processed as if the unknown TLV did not exist. The sections fol- | processed as if the unknown TLV did not exist. The sections fol- | |||
| lowing that define TLVs specify a value for the U-bit. | lowing that define TLVs specify a value for the U-bit. | |||
| F bit | F bit | |||
| Forward unknown TLV bit. This bit applies only when the U bit is | Forward unknown TLV bit. This bit applies only when the U bit is | |||
| set and the LDP message containing the unknown TLV is to be for- | set and the LDP message containing the unknown TLV is to be for- | |||
| warded. If F is clear (=0), the unknown TLV is not forwarded with | warded. If F is clear (=0), the unknown TLV is not forwarded with | |||
| the containing message; if F is set (=1), the unknown TLV is for- | the containing message; if F is set (=1), the unknown TLV is for- | |||
| warded with the containing message. | warded with the containing message. The sections following that | |||
| define TLVs specify a value for the F-bit. By setting both the U | ||||
| ### | and F bits, a TLV can be propagated as opaque data through nodes | |||
| that do not recognize the TLV. | ||||
| Thus, by setting both the U and F bits, a TLV can be propagated as | ||||
| opaque data through nodes that do not recognize the TLV. | ||||
| ### | ||||
| The sections following that define TLVs specify a value for the F- | ||||
| bit. | ||||
| Type | Type | |||
| Encodes how the Value field is to be interpreted. | Encodes how the Value field is to be interpreted. | |||
| Length | Length | |||
| Specifies the length of the Value field in octets. | Specifies the length of the Value field in octets. | |||
| Value | Value | |||
| Octet string of Length octets that encodes information to be | Octet string of Length octets that encodes information to be | |||
| interpreted as specified by the Type field. | interpreted as specified by the Type field. | |||
| skipping to change at page 40, line 39 ¶ | skipping to change at page 36, line 44 ¶ | |||
| itself is one where standard LDP TLV encoding is not used. | itself is one where standard LDP TLV encoding is not used. | |||
| The FEC Element value encoding is: | The FEC Element value encoding is: | |||
| FEC Element Type Value | FEC Element Type Value | |||
| type name | type name | |||
| Wildcard 0x01 No value; i.e., 0 value octets; | Wildcard 0x01 No value; i.e., 0 value octets; | |||
| see below. | see below. | |||
| Prefix 0x02 See below. | Prefix 0x02 See below. | |||
| ### | ||||
| Removed reference to host address fec | ||||
| ### | ||||
| Note that this version of LDP supports the use of multiple FEC | Note that this version of LDP supports the use of multiple FEC | |||
| Elements per FEC for the Label Mapping message only. The use of | Elements per FEC for the Label Mapping message only. The use of | |||
| multiple FEC Elements in other messages is not permitted in this | multiple FEC Elements in other messages is not permitted in this | |||
| version, and is a subject for future study. | version, and is a subject for future study. | |||
| Wildcard FEC Element | Wildcard FEC Element | |||
| To be used only in the Label Withdraw and Label Release Mes- | ||||
| sages. Indicates the withdraw/release is to be applied to all | To be used only in the Label Withdraw and Label Release | |||
| FECs associated with the label within the following label TLV. | Messages. Indicates the withdraw/release is to be applied to | |||
| Must be the only FEC Element in the FEC TLV. | all FECs associated with the label within the following label | |||
| TLV. Must be the only FEC Element in the FEC TLV. | ||||
| Prefix FEC Element value encoding: | Prefix FEC Element value encoding: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Prefix (2) | Address Family | PreLen | | | Prefix (2) | Address Family | PreLen | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Prefix | | | Prefix | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 42, line 31 ¶ | skipping to change at page 37, line 34 ¶ | |||
| One octet unsigned integer containing the length in bits of the | One octet unsigned integer containing the length in bits of the | |||
| address prefix that follows. A length of zero indicates a pre- | address prefix that follows. A length of zero indicates a pre- | |||
| fix that matches all addresses (the default destination); in | fix that matches all addresses (the default destination); in | |||
| this case the Prefix itself is zero octets). | this case the Prefix itself is zero octets). | |||
| Prefix | Prefix | |||
| An address prefix encoded according to the Address Family | An address prefix encoded according to the Address Family | |||
| field, whose length, in bits, was specified in the PreLen | field, whose length, in bits, was specified in the PreLen | |||
| field, padded to a byte boundary. | field, padded to a byte boundary. | |||
| ### | ||||
| Removed Host address FEC element encoding | ||||
| ### | ||||
| 3.4.1.1. FEC Procedures | 3.4.1.1. FEC Procedures | |||
| If in decoding a FEC TLV an LSR encounters a FEC Element with an | If in decoding a FEC TLV an LSR encounters a FEC Element with an | |||
| Address Family it does not support, it should stop decoding the FEC | Address Family it does not support, it should stop decoding the FEC | |||
| TLV, abort processing the message containing the TLV, and send an | TLV, abort processing the message containing the TLV, and send an | |||
| "Unsupported Address Family" Notification message to its LDP peer | "Unsupported Address Family" Notification message to its LDP peer | |||
| signaling an error. | signaling an error. | |||
| If it encounters a FEC Element type it cannot decode, it should stop | If it encounters a FEC Element type it cannot decode, it should stop | |||
| decoding the FEC TLV, abort processing the message containing the | decoding the FEC TLV, abort processing the message containing the | |||
| skipping to change at page 48, line 12 ¶ | skipping to change at page 42, line 35 ¶ | |||
| If Loop Detection is configured, the LSR must follow the procedures | If Loop Detection is configured, the LSR must follow the procedures | |||
| specified in Section "Loop Detection". | specified in Section "Loop Detection". | |||
| 3.4.5. Path Vector TLV | 3.4.5. Path Vector TLV | |||
| The Path Vector TLV is used with the Hop Count TLV in Label Request | The Path Vector TLV is used with the Hop Count TLV in Label Request | |||
| and Label Mapping messages to implement the optional LDP loop detec- | and Label Mapping messages to implement the optional LDP loop detec- | |||
| tion mechanism. See Section "Loop Detection". Its use in the Label | tion mechanism. See Section "Loop Detection". Its use in the Label | |||
| Request message records the path of LSRs the request has traversed. | Request message records the path of LSRs the request has traversed. | |||
| Its use in the Label Mapping message records the path of LSRs a label | Its use in the Label Mapping message records the path of LSRs a label | |||
| advertisement has traversed to setup an LSP. | advertisement has traversed to setup an LSP. Its encoding is: | |||
| Its encoding is: | ||||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| |0|0| Path Vector (0x0104) | Length | | |0|0| Path Vector (0x0104) | Length | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | LSR Id 1 | | | LSR Id 1 | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | | |||
| ~ ~ | ~ ~ | |||
| skipping to change at page 57, line 18 ¶ | skipping to change at page 49, line 39 ¶ | |||
| closing the session TCP connection and discard all state associated | closing the session TCP connection and discard all state associated | |||
| with the session, including all label-FEC bindings learned via the | with the session, including all label-FEC bindings learned via the | |||
| session. | session. | |||
| When an LSR receives a Notification message that carries a Status | When an LSR receives a Notification message that carries a Status | |||
| Code that indicates a fatal error, it should terminate the LDP ses- | Code that indicates a fatal error, it should terminate the LDP ses- | |||
| sion immediately by closing the session TCP connection and discard | sion immediately by closing the session TCP connection and discard | |||
| all state associated with the session, including all label-FEC bind- | all state associated with the session, including all label-FEC bind- | |||
| ings learned via the session. | ings learned via the session. | |||
| ### | ||||
| The above statement does not apply to the processing of the shutdown | The above statement does not apply to the processing of the shutdown | |||
| message in the session initialization procedure. When an LSR receives | message in the session initialization procedure. When an LSR receives | |||
| a shutdown message during session initialization, it should transmit | a shutdown message during session initialization, it should transmit | |||
| a shutdown message and then close the transport connection. | a shutdown message and then close the transport connection. | |||
| ### | ||||
| 3.5.1.2. Events Signaled by Notification Messages | 3.5.1.2. Events Signaled by Notification Messages | |||
| It is useful for descriptive purpose to classify events signaled by | It is useful for descriptive purpose to classify events signaled by | |||
| Notification Messages into the following categories. | Notification Messages into the following categories. | |||
| 3.5.1.2.1. Malformed PDU or Message | 3.5.1.2.1. Malformed PDU or Message | |||
| Malformed LDP PDUs or Messages that are part of the LDP Discovery | Malformed LDP PDUs or Messages that are part of the LDP Discovery | |||
| mechanism are handled by silently discarding them. | mechanism are handled by silently discarding them. | |||
| skipping to change at page 59, line 13 ¶ | skipping to change at page 50, line 45 ¶ | |||
| error signaled by the Unknown Message Type Status Code. | error signaled by the Unknown Message Type Status Code. | |||
| If the Message Type is >= 0x8000 (high order bit = 1) it is | If the Message Type is >= 0x8000 (high order bit = 1) it is | |||
| silently discarded. | silently discarded. | |||
| - The Message Length is too large, that is, indicates that the | - The Message Length is too large, that is, indicates that the | |||
| message extends beyond the end of the containing LDP PDU. This | message extends beyond the end of the containing LDP PDU. This | |||
| is a fatal error signaled by the Bad Message Length Status | is a fatal error signaled by the Bad Message Length Status | |||
| Code. | Code. | |||
| ### | - The Message Length is too small, that is, smaller than the | |||
| - The Message Length is too small, that is, smaller than the | ||||
| smallest possible value component. This is a fatal error sig- | smallest possible value component. This is a fatal error sig- | |||
| naled by the Bad Message Length Status Code. | naled by the Bad Message Length Status Code. | |||
| ### | ||||
| - The message is missing one or more Mandatory Parameters. This | - The message is missing one or more Mandatory Parameters. This | |||
| is a non-fatal error signalled by the Missing Message Parame- | is a non-fatal error signalled by the Missing Message Parame- | |||
| ters Status Code. | ters Status Code. | |||
| 3.5.1.2.2. Unknown or Malformed TLV | 3.5.1.2.2. Unknown or Malformed TLV | |||
| Malformed TLVs contained in LDP messages that are part of the LDP | Malformed TLVs contained in LDP messages that are part of the LDP | |||
| Discovery mechanism are handled by silently discarding the containing | Discovery mechanism are handled by silently discarding the containing | |||
| message. | message. | |||
| skipping to change at page 59, line 46 ¶ | skipping to change at page 51, line 26 ¶ | |||
| fatal error signaled by the Bad TLV Length Status Code. | fatal error signaled by the Bad TLV Length Status Code. | |||
| - The TLV type is unknown. | - The TLV type is unknown. | |||
| If the TLV type is < 0x8000 (high order bit 0) it is an error | If the TLV type is < 0x8000 (high order bit 0) it is an error | |||
| signaled by the Unknown TLV Status Code. | signaled by the Unknown TLV Status Code. | |||
| If the TLV type is >= 0x8000 (high order bit 1) the TLV is | If the TLV type is >= 0x8000 (high order bit 1) the TLV is | |||
| silently dropped. | silently dropped. | |||
| ### Remove the following line | ||||
| Section "Unknown TLV in Known Message Type" elaborates on this | ||||
| behavior. | ||||
| Here is why: http://www.rfc-editor.org/cgi- | ||||
| bin/errataSearch.pl?rfc=3036& The referenced section does not | ||||
| exist. This behavior is covered in section 3.3. | ||||
| ### | ||||
| - The TLV Value is malformed. This occurs when the receiver han- | - The TLV Value is malformed. This occurs when the receiver han- | |||
| dles the TLV but cannot decode the TLV Value. This is inter- | dles the TLV but cannot decode the TLV Value. This is inter- | |||
| preted as indicative of a bug in either the sending or receiv- | preted as indicative of a bug in either the sending or receiv- | |||
| ing LSR. It is a fatal error signaled by the Malformed TLV | ing LSR. It is a fatal error signaled by the Malformed TLV | |||
| Value Status Code. | Value Status Code. | |||
| 3.5.1.2.3. Session KeepAlive Timer Expiration | 3.5.1.2.3. Session KeepAlive Timer Expiration | |||
| This is a fatal error signaled by the KeepAlive Timer Expired Status | This is a fatal error signaled by the KeepAlive Timer Expired Status | |||
| Code. | Code. | |||
| skipping to change at page 71, line 35 ¶ | skipping to change at page 62, line 33 ¶ | |||
| following values are supported in this version of the specifi- | following values are supported in this version of the specifi- | |||
| cation: | cation: | |||
| Value Meaning | Value Meaning | |||
| 0 Merge not supported | 0 Merge not supported | |||
| 1 Merge supported | 1 Merge supported | |||
| Non-merge and merge Frame Relay LSRs may freely interoperate. | Non-merge and merge Frame Relay LSRs may freely interoperate. | |||
| N, Number of label range components | N, Number of label range components Specifies the number of Frame | |||
| Specifies the number of Frame Relay Label Range Components | Relay Label Range Components included in the TLV. | |||
| included in the TLV. | ||||
| D, VC Directionality | D, VC Directionality | |||
| A value of 0 specifies bidirectional VC capability, meaning the | A value of 0 specifies bidirectional VC capability, meaning the | |||
| LSR can support the use of a given DLCI as a label for both | LSR can support the use of a given DLCI as a label for both | |||
| link directions independently. A value of 1 specifies unidi- | link directions independently. A value of 1 specifies unidi- | |||
| rectional VC capability, meaning a given DLCI may appear in a | rectional VC capability, meaning a given DLCI may appear in a | |||
| label mapping for one direction on the link only. When either | label mapping for one direction on the link only. Wheneither | |||
| or both of the peers specifies unidirectional VC capability, | or both of the peers specifies unidirectional VC capability, | |||
| both LSRs use unidirectional VC label assignment for the link | both LSRs use unidirectional VC label assignment for the link | |||
| as follows. The LSRs compare their LDP Identifiers as unsigned | as follows. The LSRs compare their LDP Identifiers as unsigned | |||
| integers. The LSR with the larger LDP | integers. The LSR with the larger LDP Identifier may assign | |||
| Identifier may assign only odd-numbered DLCIs in the range as | only odd-numbered DLCIs in the range as labels. The system | |||
| labels. The system with the smaller LDP Identifier may assign | with the smaller LDP Identifier may assign only even-numbered | |||
| only even-numbered DLCIs in the range as labels. | DLCIs in the range as labels. | |||
| Reserved | Reserved | |||
| This field is reserved. It must be set to zero on transmission | This field is reserved. It must be set to zero on transmission | |||
| and ignored on receipt. | and ignored on receipt. | |||
| One or more Frame Relay Label Range Components | One or more Frame Relay Label Range Components | |||
| A list of Frame Relay Label Range Components which together | A list of Frame Relay Label Range Components which together | |||
| specify the Label range supported by the transmitting LSR. | specify the Label range supported by the transmitting LSR. | |||
| A receiving LSR MUST calculate the intersection between the | A receiving LSR MUST calculate the intersection between the | |||
| skipping to change at page 73, line 14 ¶ | skipping to change at page 63, line 52 ¶ | |||
| Minimum DLCI | Minimum DLCI | |||
| This 23-bit field specifies the lower bound of a block of | This 23-bit field specifies the lower bound of a block of | |||
| Data Link Connection Identifiers (DLCIs) that is supported | Data Link Connection Identifiers (DLCIs) that is supported | |||
| on the originating switch. The DLCI should be right justi- | on the originating switch. The DLCI should be right justi- | |||
| fied in this field and unused bits should be set to 0. | fied in this field and unused bits should be set to 0. | |||
| Maximum DLCI | Maximum DLCI | |||
| This 23-bit field specifies the upper bound of a block of | This 23-bit field specifies the upper bound of a block of | |||
| Data Link Connection Identifiers (DLCIs) that is supported | Data Link Connection Identifiers (DLCIs) that is supported | |||
| on the originating switch. The DLCI should be right justi- | on the originating switch. The DLCI should be right | |||
| fied in this field and unused bits should be set to 0. | justified in this field and unused bits should be set to 0. | |||
| Note that there is no Generic Session Parameters TLV for sessions | Note that there is no Generic Session Parameters TLV for sessions | |||
| which advertise Generic Labels. | which advertise Generic Labels. | |||
| 3.5.3.1. Initialization Message Procedures | 3.5.3.1. Initialization Message Procedures | |||
| See Section "LDP Session Establishment" and particularly Section | See Section "LDP Session Establishment" and particularly Section | |||
| "Session Initialization" for general procedures for handling the Ini- | "Session Initialization" for general procedures for handling the Ini- | |||
| tialization Message. | tialization Message. | |||
| skipping to change at page 75, line 16 ¶ | skipping to change at page 65, line 49 ¶ | |||
| An LSR that receives an Address Message message uses the addresses it | An LSR that receives an Address Message message uses the addresses it | |||
| learns to maintain a database for mapping between peer LDP Identi- | learns to maintain a database for mapping between peer LDP Identi- | |||
| fiers and next hop addresses; see Section "LDP Identifiers and Next | fiers and next hop addresses; see Section "LDP Identifiers and Next | |||
| Hop Addresses". | Hop Addresses". | |||
| When a new LDP session is initialized and before sending Label Map- | When a new LDP session is initialized and before sending Label Map- | |||
| ping or Label Request messages an LSR should advertise its interface | ping or Label Request messages an LSR should advertise its interface | |||
| addresses with one or more Address messages. | addresses with one or more Address messages. | |||
| Whenever an LSR "activates" a new interface address, it should adver- | Whenever an LSR "activates" a new interface address, it should | |||
| tise the new address with an Address message. | advertise the new address with an Address message. | |||
| Whenever an LSR "de-activates" a previously advertised address, it | Whenever an LSR "de-activates" a previously advertised address, it | |||
| should withdraw the address with an Address Withdraw message; see | should withdraw the address with an Address Withdraw message; see | |||
| Section "Address Withdraw Message". | Section "Address Withdraw Message". | |||
| If an LSR does not support the Address Family specified in the | If an LSR does not support the Address Family specified in the | |||
| Address List TLV, it should send an "Unsupported Address Family" | Address List TLV, it should send an "Unsupported Address Family" | |||
| Notification to its LDP signalling an error and abort processing the | Notification to its LDP signalling an error and abort processing the | |||
| message. | message. | |||
| ### | ||||
| An LSR may re-advertise an address (A) that it has previously adver- | An LSR may re-advertise an address (A) that it has previously adver- | |||
| tised without explicitly withdrawing the address. If the receiver | tised without explicitly withdrawing the address. If the receiver | |||
| already has address binding (LSR, A) it should take no further | already has address binding (LSR, A) it should take no further | |||
| action. | action. | |||
| An LSR may withdraw an address (A) without having previously adver- | An LSR may withdraw an address (A) without having previously adver- | |||
| tised it. If the receiver has no address binding (LSR, A), it should | tised it. If the receiver has no address binding (LSR, A), it should | |||
| take no further action. | take no further action. | |||
| ### | ||||
| 3.5.6. Address Withdraw Message | 3.5.6. Address Withdraw Message | |||
| An LSR sends the Address Withdraw Message to an LDP peer to withdraw | An LSR sends the Address Withdraw Message to an LDP peer to withdraw | |||
| previously advertised interface addresses. | previously advertised interface addresses. | |||
| The encoding for the Address Withdraw Message is: | The encoding for the Address Withdraw Message is: | |||
| 0 1 2 3 | 0 1 2 3 | |||
| 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 76, line 19 ¶ | skipping to change at page 66, line 50 ¶ | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Optional Parameters | | | Optional Parameters | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Message ID | Message ID | |||
| 32-bit value used to identify this message. | 32-bit value used to identify this message. | |||
| Address list TLV | Address list TLV | |||
| The list of interface addresses being withdrawn by the sending | The list of interface addresses being withdrawn by the sending | |||
| LSR. The encoding for the Address list TLV is specified in Sec- | LSR. The encoding for the Address list TLV is specified in | |||
| tion "Address List TLV". | Section "Address List TLV". | |||
| Optional Parameters | Optional Parameters | |||
| No optional parameters are defined for the Address Withdraw mes- | No optional parameters are defined for the Address Withdraw mes- | |||
| sage. | sage. | |||
| 3.5.6.1. Address Withdraw Message Procedures | 3.5.6.1. Address Withdraw Message Procedures | |||
| See Section "Address Message Procedures" | See Section "Address Message Procedures" | |||
| 3.5.7. Label Mapping Message | 3.5.7. Label Mapping Message | |||
| skipping to change at page 78, line 36 ¶ | skipping to change at page 68, line 43 ¶ | |||
| The Mapping message is used by an LSR to distribute a label mapping | The Mapping message is used by an LSR to distribute a label mapping | |||
| for a FEC to an LDP peer. If an LSR distributes a mapping for a FEC | for a FEC to an LDP peer. If an LSR distributes a mapping for a FEC | |||
| to multiple LDP peers, it is a local matter whether it maps a single | to multiple LDP peers, it is a local matter whether it maps a single | |||
| label to the FEC, and distributes that mapping to all its peers, or | label to the FEC, and distributes that mapping to all its peers, or | |||
| whether it uses a different mapping for each of its peers. | whether it uses a different mapping for each of its peers. | |||
| An LSR is responsible for the consistency of the label mappings it | An LSR is responsible for the consistency of the label mappings it | |||
| has distributed, and that its peers have these mappings. | has distributed, and that its peers have these mappings. | |||
| An LSR receiving a Label Mapping message from a downstream LSR for a | An LSR receiving a Label Mapping message from a downstream LSR for a | |||
| Prefix ### Removed mention of the Host Address FEC Element ### should | Prefix should not use the label for forwarding unless its routing ta- | |||
| not use the label for forwarding unless its routing table contains an | ble contains an entry that exactly matches the FEC Element. | |||
| entry that exactly matches the FEC Element. | ||||
| See Appendix A "LDP Label Distribution Procedures" for more details. | See Appendix A "LDP Label Distribution Procedures" for more details. | |||
| 3.5.7.1.1. Independent Control Mapping | 3.5.7.1.1. Independent Control Mapping | |||
| If an LSR is configured for independent control, a mapping message is | If an LSR is configured for independent control, a mapping message is | |||
| transmitted by the LSR upon any of the following conditions: | transmitted by the LSR upon any of the following conditions: | |||
| 1. The LSR recognizes a new FEC via the forwarding table, and the | 1. The LSR recognizes a new FEC via the forwarding table, and the | |||
| label advertisement mode is Downstream Unsolicited advertise- | label advertisement mode is Downstream Unsolicited advertise- | |||
| skipping to change at page 83, line 34 ¶ | skipping to change at page 72, line 44 ¶ | |||
| each upstream peer requesting a label, it must send a separate | each upstream peer requesting a label, it must send a separate | |||
| Label Request for each such peer. A consequence of this is | Label Request for each such peer. A consequence of this is | |||
| that a non-merge LSR may have multiple Label Request messages | that a non-merge LSR may have multiple Label Request messages | |||
| for a given FEC outstanding at the same time. | for a given FEC outstanding at the same time. | |||
| The receiving LSR should respond to a Label Request message with a | The receiving LSR should respond to a Label Request message with a | |||
| Label Mapping for the requested label or with a Notification message | Label Mapping for the requested label or with a Notification message | |||
| indicating why it cannot satisfy the request. | indicating why it cannot satisfy the request. | |||
| When the FEC for which a label is requested is a Prefix FEC Element, | When the FEC for which a label is requested is a Prefix FEC Element, | |||
| ### Removed mention of the host address fec ### the receiving LSR | the receiving LSR uses its routing table to determine its response. | |||
| uses its routing table to determine its response. Unless its routing | Unless its routing table includes an entry that exactly matches the | |||
| table includes an entry that exactly matches the requested Prefix, | requested Prefix, the LSR must respond with a No Route Notification | |||
| the LSR must respond with a No Route Notification message. | message. | |||
| The message ID of the Label Request message serves as an identifier | The message ID of the Label Request message serves as an identifier | |||
| for the Label Request transaction. When the receiving LSR responds | for the Label Request transaction. When the receiving LSR responds | |||
| with a Label Mapping message, the mapping message must include a | with a Label Mapping message, the mapping message must include a | |||
| Label Request/Returned Message ID TLV optional parameter which | Label Request/Returned Message ID TLV optional parameter which | |||
| includes the message ID of the Label Request message. Note that | includes the message ID of the Label Request message. Note that | |||
| since LSRs use Label Request message IDs as transaction identifiers | since LSRs use Label Request message IDs as transaction identifiers | |||
| an LSR should not reuse the message ID of a Label Request message | an LSR should not reuse the message ID of a Label Request message | |||
| until the corresponding transaction completes. | until the corresponding transaction completes. | |||
| skipping to change at page 97, line 4 ¶ | skipping to change at page 83, line 49 ¶ | |||
| IPv6 Transport Address 0x0403 "Hello Message" | IPv6 Transport Address 0x0403 "Hello Message" | |||
| Common Session 0x0500 "Initialization Message" | Common Session 0x0500 "Initialization Message" | |||
| Parameters | Parameters | |||
| ATM Session Parameters 0x0501 "Initialization Message" | ATM Session Parameters 0x0501 "Initialization Message" | |||
| Frame Relay Session 0x0502 "Initialization Message" | Frame Relay Session 0x0502 "Initialization Message" | |||
| Parameters | Parameters | |||
| Label Request 0x0600 "Label Mapping Message" | Label Request 0x0600 "Label Mapping Message" | |||
| Message ID | Message ID | |||
| Vendor-Private 0x3E00- "LDP Vendor-private Extensions" | Vendor-Private 0x3E00- "LDP Vendor-private Extensions" | |||
| 0x3EFF | 0x3EFF | |||
| Experimental 0x3F00- "LDP Experimental Extensions" | Experimental 0x3F00- "LDP Experimental Extensions" | |||
| 0x3FFF | 0x3FFF | |||
| 3.9. Status Code Summary | 3.9. Status Code Summary | |||
| The following are the Status Codes defined in this version of the | The following are the Status Codes defined in this version of the | |||
| protocol. | protocol. | |||
| The "E" column is the required setting of the Status Code E-bit; the | The "E" column is the required setting of the Status Code E-bit; the | |||
| "Status Data" column is the value of the 30-bit Status Data field in | "Status Data" column is the value of the 30-bit Status Data field in | |||
| the Status Code TLV. | the Status Code TLV. Note that the setting of the Status Code F-bit | |||
| is at the discretion of the LSR originating the Status TLV. | ||||
| Note that the setting of the Status Code F-bit is at the discretion | ||||
| of the LSR originating the Status TLV. | ||||
| Status Code E Status Data Section Title | Status Code E Status Data Section Title | |||
| Success 0 0x00000000 "Status TLV" | Success 0 0x00000000 "Status TLV" | |||
| Bad LDP Identifier 1 0x00000001 "Events Signaled by ..." | Bad LDP Identifier 1 0x00000001 "Events Signaled by ..." | |||
| Bad Protocol Version 1 0x00000002 "Events Signaled by ..." | Bad Protocol Version 1 0x00000002 "Events Signaled by ..." | |||
| Bad PDU Length 1 0x00000003 "Events Signaled by ..." | Bad PDU Length 1 0x00000003 "Events Signaled by ..." | |||
| Unknown Message Type 0 0x00000004 "Events Signaled by ..." | Unknown Message Type 0 0x00000004 "Events Signaled by ..." | |||
| Bad Message Length 1 0x00000005 "Events Signaled by ..." | Bad Message Length 1 0x00000005 "Events Signaled by ..." | |||
| Unknown TLV 0 0x00000006 "Events Signaled by ..." | Unknown TLV 0 0x00000006 "Events Signaled by ..." | |||
| skipping to change at page 106, line 31 ¶ | skipping to change at page 90, line 40 ¶ | |||
| - LDP support for CoS is not specified in this version. CoS sup- | - LDP support for CoS is not specified in this version. CoS sup- | |||
| port may be addressed in a future version. | port may be addressed in a future version. | |||
| - LDP support for multicast is not specified in this version. | - LDP support for multicast is not specified in this version. | |||
| Multicast support may be addressed in a future version. | Multicast support may be addressed in a future version. | |||
| - LDP support for multipath label switching is not specified in | - LDP support for multipath label switching is not specified in | |||
| this version. Multipath support may be addressed in a future | this version. Multipath support may be addressed in a future | |||
| version. | version. | |||
| ### | - LDP support for signalling the maximum transmission unit is not | |||
| specified in this version. It is discussed in the experimental | ||||
| - LDP support for signalling the maximum transmission unit is | document [LDP-MTU]. | |||
| not specified in this version. It is discussed in the experi- | ||||
| mental document [LDP-MTU]. | ||||
| ### | ||||
| ### - The current specification does not address basic peer dis- | - The current specification does not address basic peer discovery | |||
| covery on non-broadcast multi access (NBMA) media. The solution | on non-broadcast multi access (NBMA) media. The solution avail- | |||
| available in the current specification is to use extended peer | able in the current specification is to use extended peer dis- | |||
| discovery in such setups. The issue of defining a mechanism | covery in such setups. The issue of defining a mechanism seman- | |||
| semantically similar to basic discovery (1 hop limit, bind the | tically similar to basic discovery (1 hop limit, bind the hello | |||
| hello adjacency to an interface) that uses a preconfigured | adjacency to an interface) that uses a preconfigured neighbor | |||
| neighbor addresses, is left for further study. ### | addresses, is left for further study. | |||
| ### - The current specification does not support shutting down an | - The current specification does not support shutting down an | |||
| adjacency. The motivation for doing it, and the mechanisms for | adjacency. The motivation for doing it, and the mechanisms for | |||
| achieving it are left for further study. ### | achieving it are left for further study. | |||
| ### - The current specification does not include a method for | - The current specification does not include a method for secur- | |||
| securing Hello messages, to detect spoofing of Hellos. The sce- | ing Hello messages, to detect spoofing of Hellos. The scenarios | |||
| narios where this is necessary, as well as the mechanism for | where this is necessary, as well as the mechanism for achieving | |||
| achieving it are left for future study. ### | it are left for future study. | |||
| ### - The current specification does not have the ability to | - The current specification does not have the ability to detect a | |||
| detect a stateless fast control plane restart. The method for | stateless fast control plane restart. The method for achieving | |||
| achieving this, possibly through an "incarnation/instance" num- | this, possibly through an "incarnation/instance" number carried | |||
| ber carried in the Hello message is left for future study. ### | in the Hello message is left for future study. | |||
| ### - The current specification does not support an "end of LIB" | - The current specification does not support an "end of LIB" mes- | |||
| message, analogous to BGP's end of RIB message which an LDP LSR | sage, analogous to BGP's end of RIB message which an LDP LSR | |||
| (operating in DU mode) would use following session establish- | (operating in DU mode) would use following session establish- | |||
| ment. The discussion on the need for such a mechanism and its | ment. The discussion on the need for such a mechanism and its | |||
| implementation are left for future study. ### | implementation are left for future study. | |||
| ### - The current specification does not deal with situations | - The current specification does not deal with situations where | |||
| where different LSRs advertise the same address. Such situa- | different LSRs advertise the same address. Such situations | |||
| tions typically occur as the result of configuration errors, | typically occur as the result of configuration errors, and the | |||
| and the goal in this case is to provide the LSRs advertising | goal in this case is to provide the LSRs advertising the same | |||
| the same address with enough information to enable operators to | address with enough information to enable operators to take | |||
| take corrective action. The specification of this mechanism is | corrective action. The specification of this mechanism is left | |||
| left for a separate document. ### | for a separate document. | |||
| 7. Acknowledgments | 7. Changes from RFC3036 | |||
| ### | Here is a list of changes from RFC3036 | |||
| 1. Removed the Host Address FEC and references to it, since it is | ||||
| not used by any implementation. | ||||
| 2. Split the reference list into normative and non-normative ref- | ||||
| erences | ||||
| 3. Removed "MPLS using ATM VP Switching" from the list of norma- | ||||
| tive references. | ||||
| 4. Clarified the use of the F bit. | ||||
| 5. Added option to allow split horizon when doing ordered control. | ||||
| 6. Clarified the processing of messages with the U-bit set during | ||||
| the session initialization procedures | ||||
| 7. Clarified the processing of the E-bit during session initial- | ||||
| ization procedures. | ||||
| 8. Added text explaining that the shutdown message in the state | ||||
| transition diagram is implemented as as a notification message | ||||
| with a status TLV indicating a fatal error. | ||||
| 9. Added case for TLV length too short in the specification for | ||||
| handling malformed TLVs. | ||||
| 10. In the section describing handling of unknown TLV, removed ref- | ||||
| erence to inexistent section (errata in original document) | ||||
| 11. In the "receive label request" procedures, if a loop is | ||||
| detected, changed the procedure to send a notification before | ||||
| aborting the rest of the processing. | ||||
| 12. In "receive label release" procedures, clarified the behavior | ||||
| for merge-capable LSRs. | ||||
| 13. In "receive label release" procedures, clarified the behavior | ||||
| for receipt of an unknown FEC. | ||||
| 14. In note 4 of "Detect Change in FEC Next Hop", modified the text | ||||
| to reference the correct set of conditions for sending a label | ||||
| request procedure (typo in the original document). | ||||
| 15. In the procedures for "LSR decides to no longer label switch a | ||||
| FEC", clarified the fact that the label must not be reused | ||||
| until a label release is received. | ||||
| 16. In the routine "Prepare_Label_Mapping_Attributes" added a note | ||||
| regarding the treatment of unknown TLVs according to their U | ||||
| and F bits. | ||||
| 17. In the address message processing procedures, clarified the | ||||
| behavior for the case where an LSR receives re-advertisement of | ||||
| an address previously advertised it, or withdrawal of an | ||||
| address from an LSR that has not previously advertised that | ||||
| address. | ||||
| 18. In the routine "Receive Label Mapping" clarified the meaning of | ||||
| PrevAdvLabel when no label advertisement message has been sent | ||||
| previously. | ||||
| 19. In the "receive label mapping" procedures, if a loop is | ||||
| detected, modified the procedure to send a notification before | ||||
| aborting the rest of the processing. | ||||
| 20. In the "receive label mapping" procedures, corrected step | ||||
| LMp.10 to handle label mapping messages for additional (non- | ||||
| merged) LSPs for the FEC. | ||||
| 21. In the routine "Receive Label Abort Request" clarified the | ||||
| behavior for non-merging LSRs. | ||||
| 22. Added the following items to the section discussing areas for | ||||
| future study: | ||||
| o extensions for communicating the maximum transmission unit | ||||
| o basic peer discovery on NBMA media | ||||
| o option of shutting down an adjacency | ||||
| o mechanisms for securing Hello messages | ||||
| o detection of a stateless fast control plane restart | ||||
| o support of "end of LIB" message | ||||
| o mechanisms for dealing with the case where different LSRs advertise | ||||
| the same address. | ||||
| 8. Acknowledgments | ||||
| This document was originally published as RFC 3036 in January 2001. | This document was originally published as RFC 3036 in January 2001. | |||
| It was produced by the MPLS working of the IETF and was jointly | It was produced by the MPLS working of the IETF and was jointly | |||
| authored by Loa Andersson, Paul Doolan, Nancy Feldman, Andre Fredette | authored by Loa Andersson, Paul Doolan, Nancy Feldman, Andre Fredette | |||
| and Bob Thomas. | and Bob Thomas. | |||
| The ideas and text in RFC3036 were collected from a number of | The ideas and text in RFC3036 were collected from a number of | |||
| sources. We would like to thank Rick Boivie, Ross Callon, Alex | sources. We would like to thank Rick Boivie, Ross Callon, Alex | |||
| Conta, Eric Gray, Yoshihiro Ohba, Eric Rosen, Bernard Suter, Yakov | Conta, Eric Gray, Yoshihiro Ohba, Eric Rosen, Bernard Suter, Yakov | |||
| Rekhter, and Arun Viswanathan for their input for RFC3036. | Rekhter, and Arun Viswanathan for their input for RFC3036. | |||
| The editors would like to thank Eric Gray for his insight and input | The editors would like to thank Eric Gray for his insight and input | |||
| to the current document. | to the current document. | |||
| In addition, the editors would like to thank the members of the mpls | In addition, the editors would like to thank the members of the mpls | |||
| working group for their ideas and the support they have given to this | working group for their ideas and the support they have given to this | |||
| document, and in particular to Eric Rosen, Luca Martini, Markus Jork, | document, and in particular to Eric Rosen, Luca Martini, Markus Jork, | |||
| Mark Duffy, Vach Kompella, Kishore Tiruveedhula. Rama Ramakrishnan | Mark Duffy, Vach Kompella, Kishore Tiruveedhula. Rama Ramakrishnan | |||
| and Nick Weeds. | and Nick Weeds. | |||
| ### | 9. References | |||
| 8. References | ||||
| 8.1. Normative references | ||||
| ### Remove the following reference, it never went past the -00 stage. | ||||
| [ATM-VP] N. Feldman, B. Jamoussi, S. Komandur, A, | 9.1. Normative references | |||
| Viswanathan, T Worster, "MPLS using ATM VP Switching", | ||||
| Work in Progress. ### | ||||
| [IANA] Narten, T. and H. Alvestrand, "Guidelines for Writing an | [IANA] Narten, T. and H. Alvestrand, "Guidelines for Writing an | |||
| IANA Considerations Section in RFCs", BCP 26, RFC 2434, | IANA Considerations Section in RFCs", BCP 26, RFC 2434, | |||
| October 1998. | October 1998. | |||
| [RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm," RFC 1321, | [RFC1321] Rivest, R., "The MD5 Message-Digest Algorithm," RFC 1321, | |||
| April 1992. | April 1992. | |||
| [RFC1483] Heinanen, J., "Multiprotocol Encapsulation over ATM Adap- | [RFC1483] Heinanen, J., "Multiprotocol Encapsulation over ATM Adap- | |||
| tation Layer 5", RFC 1483, July 1993. | tation Layer 5", RFC 1483, July 1993. | |||
| skipping to change at page 109, line 12 ¶ | skipping to change at page 94, line 16 ¶ | |||
| ing on Frame Relay Networks Specification", RFC 3034, | ing on Frame Relay Networks Specification", RFC 3034, | |||
| January 2001. | January 2001. | |||
| [RFC3035] Davie, B., Lawrence, J., McCloghrie, K., Rekhter, Y., | [RFC3035] Davie, B., Lawrence, J., McCloghrie, K., Rekhter, Y., | |||
| Rosen, E., Swallow, G. and P. Doolan, "MPLS using LDP and | Rosen, E., Swallow, G. and P. Doolan, "MPLS using LDP and | |||
| ATM VC Switching", RFC 3035, January 2001. | ATM VC Switching", RFC 3035, January 2001. | |||
| [RFC3037] Thomas, B. and E. Gray, "LDP Applicability", RFC 3037, | [RFC3037] Thomas, B. and E. Gray, "LDP Applicability", RFC 3037, | |||
| January 2001. | January 2001. | |||
| 8.2. Non-normative references | 9.2. Non-normative references | |||
| [RFC2205] Braden, R., Zhang, L., Berson, S., Herzog, S. and S. | [RFC2205] Braden, R., Zhang, L., Berson, S., Herzog, S. and S. | |||
| Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 Functional | Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 Functional | |||
| Specification", RFC 2205, September 1997. | Specification", RFC 2205, September 1997. | |||
| [RFC2385] Heffernan, A., "Protection of BGP Sessions via the TCP | [RFC2385] Heffernan, A., "Protection of BGP Sessions via the TCP | |||
| MD5 Signature Option", RFC 2385, August 1998. | MD5 Signature Option", RFC 2385, August 1998. | |||
| [CRLDP] L. Andersson, A. Fredette, B. Jamoussi, R. Callon, P. | [CRLDP] L. Andersson, A. Fredette, B. Jamoussi, R. Callon, P. | |||
| Doolan, N. Feldman, E. Gray, J. Halpern, J. Heinanen T. E. Kilty, A. | Doolan, N. Feldman, E. Gray, J. Halpern, J. Heinanen T. E. Kilty, A. | |||
| skipping to change at page 111, line 5 ¶ | skipping to change at page 95, line 5 ¶ | |||
| nalling Extensions for the Label Distribution Protocol", draft-ietf- | nalling Extensions for the Label Distribution Protocol", draft-ietf- | |||
| mpls-ldp-mtu-extensions-03.txt, April 2004. | mpls-ldp-mtu-extensions-03.txt, April 2004. | |||
| [RFC1771] Rekhter, Y. and T. Li, "A Border Gateway Protocol 4 | [RFC1771] Rekhter, Y. and T. Li, "A Border Gateway Protocol 4 | |||
| (BGP-4)", RFC 1771, March 1995. | (BGP-4)", RFC 1771, March 1995. | |||
| [RFC2702] Awduche, D., Malcolm, J., Agogbua, J., O'Dell, M. and J. | [RFC2702] Awduche, D., Malcolm, J., Agogbua, J., O'Dell, M. and J. | |||
| McManus, "Requirements for Traffic Engineering over MPLS", RFC 2702, | McManus, "Requirements for Traffic Engineering over MPLS", RFC 2702, | |||
| September 1999. | September 1999. | |||
| 9. Intellectual Property Statement | 10. Intellectual Property Statement | |||
| ### | ||||
| The IETF takes no position regarding the validity or scope of any | The IETF takes no position regarding the validity or scope of any | |||
| Intellectual Property Rights or other rights that might be claimed to | Intellectual Property Rights or other rights that might be claimed to | |||
| pertain to the implementation or use of the technology described in | pertain to the implementation or use of the technology described in | |||
| this document or the extent to which any license under such rights | this document or the extent to which any license under such rights | |||
| might or might not be available; nor does it represent that it has | might or might not be available; nor does it represent that it has | |||
| made any independent effort to identify any such rights. Information | made any independent effort to identify any such rights. Information | |||
| on the procedures with respect to rights in RFC documents can be | on the procedures with respect to rights in RFC documents can be | |||
| found in BCP 78 and BCP 79. | found in BCP 78 and BCP 79. | |||
| skipping to change at page 111, line 31 ¶ | skipping to change at page 95, line 29 ¶ | |||
| proprietary rights by implementers or users of this specification can | proprietary rights by implementers or users of this specification can | |||
| be obtained from the IETF on-line IPR repository at | be obtained from the IETF on-line IPR repository at | |||
| http://www.ietf.org/ipr. | http://www.ietf.org/ipr. | |||
| The IETF invites any interested party to bring to its attention any | The IETF invites any interested party to bring to its attention any | |||
| copyrights, patents or patent applications, or other proprietary | copyrights, patents or patent applications, or other proprietary | |||
| rights that may cover technology that may be required to implement | rights that may cover technology that may be required to implement | |||
| this standard. Please address the information to the IETF at ietf- | this standard. Please address the information to the IETF at ietf- | |||
| ipr@ietf.org. | ipr@ietf.org. | |||
| ### | 11. Editors' Addresses | |||
| 10. Editors' Addresses | ||||
| ### | ||||
| Loa Andersson | Loa Andersson | |||
| Acreo AB | Acreo AB | |||
| Isafjordsgatan 22 | Isafjordsgatan 22 | |||
| Kista, Sweden | Kista, Sweden | |||
| email: loa.andersson@acreo.se | email: loa.andersson@acreo.se | |||
| loa@pi.se | loa@pi.se | |||
| Ina Minei | Ina Minei | |||
| Juniper Networks | Juniper Networks | |||
| 1194 N. Mathilda Ave. | 1194 N. Mathilda Ave. | |||
| Sunnyvale, CA 94089 | Sunnyvale, CA 94089 | |||
| email: ina@juniper.net | email: ina@juniper.net | |||
| Bob Thomas | Bob Thomas | |||
| Cisco Systems, Inc. | Cisco Systems, Inc. | |||
| 1414 Massachusetts Ave | 1414 Massachusetts Ave | |||
| Boxborough, MA 01719 | Boxborough, MA 01719 | |||
| email: rhthomas@cisco.com | email: rhthomas@cisco.com | |||
| ### | ||||
| Appendix A. LDP Label Distribution Procedures | Appendix A. LDP Label Distribution Procedures | |||
| This section specifies label distribution behavior in terms of LSR | This section specifies label distribution behavior in terms of LSR | |||
| response to the following events: | response to the following events: | |||
| - Receive Label Request Message; | - Receive Label Request Message; | |||
| - Receive Label Mapping Message; | - Receive Label Mapping Message; | |||
| - Receive Label Abort Request Message; | - Receive Label Abort Request Message; | |||
| - Receive Label Release Message; | - Receive Label Release Message; | |||
| - Receive Label Withdraw Message; | - Receive Label Withdraw Message; | |||
| skipping to change at page 117, line 10 ¶ | skipping to change at page 100, line 10 ¶ | |||
| sage, if any, propagated to FEC Next Hop. | sage, if any, propagated to FEC Next Hop. | |||
| - StoredHopCount. The hop count, if any, previously recorded for | - StoredHopCount. The hop count, if any, previously recorded for | |||
| the FEC. | the FEC. | |||
| Algorithm: | Algorithm: | |||
| LRq.1 Execute procedure Check_Received_Attributes (MsgSource, | LRq.1 Execute procedure Check_Received_Attributes (MsgSource, | |||
| LabelRequest, RAttributes). | LabelRequest, RAttributes). | |||
| If Loop Detected, goto LRq.4. | If Loop Detected, goto LRq.4. | |||
| ### | ||||
| In the "goto" statement above, changed to LRq.4 from LRq.13, | ||||
| see mpls archive june 01 "error in RFC33036" | ||||
| ### | ||||
| LRq.2 Is there a Next Hop for FEC? | LRq.2 Is there a Next Hop for FEC? | |||
| If not, goto LRq.5. | If not, goto LRq.5. | |||
| LRq.3 Is MsgSource the Next Hop? | LRq.3 Is MsgSource the Next Hop? | |||
| Ifnot, goto LRq.6. | Ifnot, goto LRq.6. | |||
| LRq.4 Execute procedure Send_Notification (MsgSource, Loop | LRq.4 Execute procedure Send_Notification (MsgSource, Loop | |||
| Detected). | Detected). | |||
| Goto LRq.13 | Goto LRq.13 | |||
| skipping to change at page 121, line 19 ¶ | skipping to change at page 103, line 19 ¶ | |||
| - LSR. The LSR handling the event. | - LSR. The LSR handling the event. | |||
| - MsgSource. The LDP peer that sent the message. | - MsgSource. The LDP peer that sent the message. | |||
| - FEC. The FEC specified in the message. | - FEC. The FEC specified in the message. | |||
| - Label. The label specified in the message. | - Label. The label specified in the message. | |||
| - PrevAdvLabel. The label for FEC, if any, previously advertised | - PrevAdvLabel. The label for FEC, if any, previously advertised | |||
| to an upstream peer. | to an upstream peer. Assuming no label was previously adver- | |||
| ### | ||||
| Add the following text: Assuming no label was previously adver- | ||||
| tised, this is the same label as the one in the Label Mapping | tised, this is the same label as the one in the Label Mapping | |||
| Message being processed. | Message being processed. | |||
| THis is the reason why: This would have to be done both to | ||||
| allow for later re-use of the value (in the event that a later | ||||
| Label Mapping is received - possibly with a different hop-count | ||||
| or path vector) and so that it can be immediately re-used in | ||||
| step LMp.25 (if needed). The procedure, as it currently is, | ||||
| seems to assume that this has been done apriori (before step | ||||
| LMp.18). | ||||
| ### | ||||
| - StoredHopCount. The hop count previously recorded for the FEC. | - StoredHopCount. The hop count previously recorded for the FEC. | |||
| - RAttributes. Attributes received with the message. E.g., Hop | - RAttributes. Attributes received with the message. E.g., Hop | |||
| Count, Path Vector. | Count, Path Vector. | |||
| - SAttributes to be included in Label Mapping message, if any, | - SAttributes to be included in Label Mapping message, if any, | |||
| propagated to upstream peers. | propagated to upstream peers. | |||
| Algorithm: | Algorithm: | |||
| skipping to change at page 122, line 23 ¶ | skipping to change at page 104, line 10 ¶ | |||
| LMp.5 Does the label previously received from MsgSource match | LMp.5 Does the label previously received from MsgSource match | |||
| Label (i.e., the label received in the message)? | Label (i.e., the label received in the message)? | |||
| (See Note 3.) | (See Note 3.) | |||
| If not, goto LMp.8. (See Note 4.) | If not, goto LMp.8. (See Note 4.) | |||
| LMp.6 Delete matching label mapping for FEC previously | LMp.6 Delete matching label mapping for FEC previously | |||
| received from MsgSource. | received from MsgSource. | |||
| LMp.7 Remove Label from forwarding/switching use. (See Note 5.) | LMp.7 Remove Label from forwarding/switching use. (See Note 5.) | |||
| ### | ||||
| Remove this goto: Goto LMp.33. | ||||
| ### | ||||
| LMp.8 Execute procedure Send_Message (MsgSource, Label Release, | LMp.8 Execute procedure Send_Message (MsgSource, Label Release, | |||
| FEC, Label, Loop Detected Status code). Goto LMp.33. | FEC, Label, Loop Detected Status code). Goto LMp.33. | |||
| LMp.9 Does LSR have a previously received label mapping for FEC | LMp.9 Does LSR have a previously received label mapping for FEC | |||
| from MsgSource for the LSP in question? (See Note 6.) | from MsgSource for the LSP in question? (See Note 6.) | |||
| If not, goto LMp.11. | If not, goto LMp.11. | |||
| LMp.10 Does the label previously received from MsgSource match | LMp.10 Does the label previously received from MsgSource match | |||
| Label (i.e., the label received in the message)? | Label (i.e., the label received in the message)? | |||
| (See Note 3.) | (See Note 3.) | |||
| ### | OR | |||
| Add: | Is the received label mapping in response to a previously | |||
| OR | outstanding label request sent to MsgSource? (See Note 12). | |||
| Is the received label mapping in response to a previously | If so, goto LMp.11. | |||
| outstanding label request sent to MsgSource? (See Note 12). | ||||
| If so, goto LMp.11. | ||||
| LMp.10a Is LSR operating in Downstream Unsolicited mode with Liberal | ||||
| Label retention? | ||||
| If not, goto LMp.32. (See Note 4.) | ||||
| ### | LMp.10a Is LSR operating in Downstream Unsolicited mode with Liberal | |||
| Label retention? | ||||
| If not, goto LMp.32. (See Note 4.) | ||||
| LMp.11 Determine the Next Hop for FEC. | LMp.11 Determine the Next Hop for FEC. | |||
| LMp.12 Is MsgSource the Next Hop for FEC? | LMp.12 Is MsgSource the Next Hop for FEC? | |||
| If so, goto LMp.14. | If so, goto LMp.14. | |||
| LMp.13 Perform LSR Label Release procedure: | LMp.13 Perform LSR Label Release procedure: | |||
| For Conservative Label retention: | For Conservative Label retention: | |||
| skipping to change at page 124, line 7 ¶ | skipping to change at page 105, line 13 ¶ | |||
| has been received from MsgSource. | has been received from MsgSource. | |||
| LMp.17 Iterate through LMp.31 for each Peer. (See Note 7). | LMp.17 Iterate through LMp.31 for each Peer. (See Note 7). | |||
| LMp.18 Has LSR previously sent a label mapping for FEC to Peer | LMp.18 Has LSR previously sent a label mapping for FEC to Peer | |||
| for the LSP in question? (See Note 8.) | for the LSP in question? (See Note 8.) | |||
| If so, goto LMp.22. | If so, goto LMp.22. | |||
| LMp.19 Is the Downstream Unsolicited Ordered Control Label | LMp.19 Is the Downstream Unsolicited Ordered Control Label | |||
| Distribution procedure being used by LSR? | Distribution procedure being used by LSR? | |||
| If not, goto LMp.28. | ||||
| ### | ||||
| (formatting only) If not, goto LMp.28. | ||||
| ### | ||||
| LMp.20 Execute procedure Prepare_Label_Mapping_Attributes(Peer, | LMp.20 Execute procedure Prepare_Label_Mapping_Attributes(Peer, | |||
| FEC, RAttributes, SAttributes, IsPropagating, | FEC, RAttributes, SAttributes, IsPropagating, | |||
| StoredHopCount). | StoredHopCount). | |||
| LMp.21 Execute procedure Send_Message (Peer, Label Mapping, FEC, | LMp.21 Execute procedure Send_Message (Peer, Label Mapping, FEC, | |||
| PrevAdvLabel, SAttributes). (See note 9.) | PrevAdvLabel, SAttributes). (See note 13.) | |||
| Goto LMp.28 | Goto LMp.28 | |||
| LMp.22 Iterate through LMp.27 for each label mapping for FEC | LMp.22 Iterate through LMp.27 for each label mapping for FEC | |||
| previously sent to Peer. | previously sent to Peer. | |||
| LMp.23 Are RAttributes in the received label mapping consistent | LMp.23 Are RAttributes in the received label mapping consistent | |||
| with those previously sent to Peer? | with those previously sent to Peer? | |||
| If so, continue iteration from LMp.22 for next label | If so, continue iteration from LMp.22 for next label | |||
| mapping. (See Note 9.) | mapping. (See Note 9.) | |||
| skipping to change at page 124, line 50 ¶ | skipping to change at page 106, line 4 ¶ | |||
| LMp.27 End iteration from LMp.22. | LMp.27 End iteration from LMp.22. | |||
| LMp.28 Does LSR have any label requests for FEC from Peer marked | LMp.28 Does LSR have any label requests for FEC from Peer marked | |||
| as pending? | as pending? | |||
| If not, goto LMp.30. | If not, goto LMp.30. | |||
| LMp.29 Perform LSR Label Distribution procedure: | LMp.29 Perform LSR Label Distribution procedure: | |||
| For Downstream Unsolicited Independent Control OR | For Downstream Unsolicited Independent Control OR | |||
| For Downstream Unsolicited Ordered Control | For Downstream Unsolicited Ordered Control | |||
| 1. Execute procedure | 1. Execute procedure | |||
| Prepare_Label_Mapping_Attributes(Peer, FEC, | Prepare_Label_Mapping_Attributes(Peer, FEC, | |||
| RAttributes, SAttributes, IsPropagating, | RAttributes, SAttributes, IsPropagating, | |||
| UnknownHopCount). | UnknownHopCount). | |||
| 2. Execute procedure Send_Label (Peer, FEC, SAttributes). | 2. Execute procedure Send_Label (Peer, FEC, SAttributes). | |||
| If the procedure fails, continue iteration for | If the procedure fails, continue iteration for | |||
| next Peer at LMp.17. | next Peer at LMp.17. | |||
| 3. If no pending requests exist for Peer goto LMp.30. | 3. If no pending requests exist for Peer goto LMp.30. | |||
| (See Note 11.) | (See Note 11.) | |||
| ### | ||||
| Remove the following two lines, since the behavior is the same. | ||||
| For Downstream On Demand Independent Control OR | For Downstream On Demand Independent Control OR | |||
| For Downstream On Demand Ordered Control | For Downstream On Demand Ordered Control | |||
| ### | ||||
| 1. Iterate through Step 5 for each pending label | 1. Iterate through Step 5 for each pending label | |||
| request for FEC from Peer marked as pending. | request for FEC from Peer marked as pending. | |||
| 2. Execute procedure | 2. Execute procedure | |||
| Prepare_Label_Mapping_Attributes(Peer, FEC, | Prepare_Label_Mapping_Attributes(Peer, FEC, | |||
| RAttributes, SAttributes, IsPropagating, | RAttributes, SAttributes, IsPropagating, | |||
| UnknownHopCount) | UnknownHopCount) | |||
| 3. Execute procedure Send_Label (Peer, FEC, | 3. Execute procedure Send_Label (Peer, FEC, | |||
| SAttributes). | SAttributes). | |||
| skipping to change at page 128, line 51 ¶ | skipping to change at page 108, line 5 ¶ | |||
| case where LSR is operating in Downstream Unsolicited ordered | case where LSR is operating in Downstream Unsolicited ordered | |||
| control mode. Ordered control prevents LSR from advertising a | control mode. Ordered control prevents LSR from advertising a | |||
| label for FEC until it has received a label mapping from its | label for FEC until it has received a label mapping from its | |||
| next hop (MsgSource) for FEC. | next hop (MsgSource) for FEC. | |||
| 8. If LSR is merging the LSP it may have previously sent label | 8. If LSR is merging the LSP it may have previously sent label | |||
| mappings for the FEC LSP to one or more peers. If LSR is not | mappings for the FEC LSP to one or more peers. If LSR is not | |||
| merging, it may have sent a label mapping for the LSP in ques- | merging, it may have sent a label mapping for the LSP in ques- | |||
| tion to at most one LSR. | tion to at most one LSR. | |||
| ### | ||||
| 9. An LSR operating in ordered control mode may choose to skip | ||||
| at this stage the peer from which it received the advertise- | ||||
| ment that caused it to generate the label-map message. Doing | ||||
| so will in effect provide a form of split-horizon. | ||||
| ### | ||||
| 9. The loop detection Path Vector attribute is considered in this | 9. The loop detection Path Vector attribute is considered in this | |||
| check. If the received RAttributes include a Path Vector and | check. If the received RAttributes include a Path Vector and | |||
| no Path Vector had been previously sent to the Peer, or if the | no Path Vector had been previously sent to the Peer, or if the | |||
| received Path Vector is inconsistent with the Path Vector pre- | received Path Vector is inconsistent with the Path Vector pre- | |||
| viously sent to the Peer, then the attributes are considered | viously sent to the Peer, then the attributes are considered | |||
| to be inconsistent. Note that an LSR is not required to store | to be inconsistent. Note that an LSR is not required to store | |||
| a received Path Vector after it propagates the Path Vector in | a received Path Vector after it propagates the Path Vector in | |||
| a mapping message. If an LSR does not store the Path Vector, | a mapping message. If an LSR does not store the Path Vector, | |||
| it has no way to check the consistency of a newly received | it has no way to check the consistency of a newly received | |||
| Path Vector. This means that whenever such an LSR receives a | Path Vector. This means that whenever such an LSR receives a | |||
| skipping to change at page 130, line 31 ¶ | skipping to change at page 108, line 31 ¶ | |||
| to an upstream peer. In this situation the LSR needs to prop- | to an upstream peer. In this situation the LSR needs to prop- | |||
| agate any changed attributes, such as Hop Count, upstream. If | agate any changed attributes, such as Hop Count, upstream. If | |||
| Loop Detection is configured on, the propagated attributes | Loop Detection is configured on, the propagated attributes | |||
| must include the Path Vector | must include the Path Vector | |||
| 11. An LSR operating in Downstream Unsolicited mode must process | 11. An LSR operating in Downstream Unsolicited mode must process | |||
| any Label Request messages it receives. If there are pending | any Label Request messages it receives. If there are pending | |||
| label requests, fall through into the Downstream on Demand | label requests, fall through into the Downstream on Demand | |||
| procedures in order to satisfy the pending requests. | procedures in order to satisfy the pending requests. | |||
| ### | 12. As determined by step LMp.1. | |||
| 12. As determined by step LMp.1. | ||||
| ### | 13. An LSR operating in ordered control mode may choose to skip at | |||
| this stage the peer from which it received the advertisement | ||||
| that caused it to generate the label-map message. Doing so | ||||
| will in effect provide a form of split-horizon. | ||||
| A.1.3. Receive Label Abort Request | A.1.3. Receive Label Abort Request | |||
| Summary: | Summary: | |||
| When an LSR receives a label abort request message from a peer, it | When an LSR receives a label abort request message from a peer, it | |||
| checks whether it has already responded to the label request in | checks whether it has already responded to the label request in | |||
| question. If it has, it silently ignores the message. If it has | question. If it has, it silently ignores the message. If it has | |||
| not, it sends the peer a Label Request Aborted Notification. In | not, it sends the peer a Label Request Aborted Notification. In | |||
| addition, if it has a label request outstanding for the LSP in | addition, if it has a label request outstanding for the LSP in | |||
| skipping to change at page 131, line 43 ¶ | skipping to change at page 109, line 43 ¶ | |||
| LAbR.5 Does LSR have a label mapping for FEC? | LAbR.5 Does LSR have a label mapping for FEC? | |||
| If not, goto LAbR.11 | If not, goto LAbR.11 | |||
| LAbR.6 Generate Event: Received Label Release Message for FEC | LAbR.6 Generate Event: Received Label Release Message for FEC | |||
| from MsgSource. (See Note 2.) | from MsgSource. (See Note 2.) | |||
| Goto LAbR.11. | Goto LAbR.11. | |||
| LAbR.7 Is LSR merging the LSP for FEC? | LAbR.7 Is LSR merging the LSP for FEC? | |||
| If not, goto LAbR.9. | If not, goto LAbR.9. | |||
| #### | LAbR.8 Are there outstanding label requrests for this FEC? | |||
| LAbR.8 Are there upstream peers other than MsgSource that have | ||||
| requested a label for FEC? The condition must be changed | ||||
| to read: "Are there outstanding label requrests for this FEC?" | ||||
| This is because if there are outstanding requests for MsgSource, | ||||
| the test wil fail, and LAbR.9 will be executed, resulting in | ||||
| killing the downstream propagation of these other requests. | ||||
| ### | ||||
| If so, goto LAbR.11. | If so, goto LAbR.11. | |||
| LAbR.9 Execute procedure Send_Message (Next Hop, Label Abort | LAbR.9 Execute procedure Send_Message (Next Hop, Label Abort | |||
| Request, FEC, TLV), where TLV is a Label Request Message | Request, FEC, TLV), where TLV is a Label Request Message | |||
| ID TLV containing the Message ID used by the LSR in the | ID TLV containing the Message ID used by the LSR in the | |||
| outstanding Label Request message. | outstanding Label Request message. | |||
| LAbR.10 Record that a label abort request for FEC is pending. | LAbR.10 Record that a label abort request for FEC is pending. | |||
| LAbR.11 Delete record of label request for FEC from MsgSource. | LAbR.11 Delete record of label request for FEC from MsgSource. | |||
| skipping to change at page 133, line 37 ¶ | skipping to change at page 110, line 41 ¶ | |||
| - LSR. The LSR handling the event. | - LSR. The LSR handling the event. | |||
| - MsgSource. The LDP peer that sent the message. | - MsgSource. The LDP peer that sent the message. | |||
| - Label. The label specified in the message. | - Label. The label specified in the message. | |||
| - FEC. The FEC specified in the message. | - FEC. The FEC specified in the message. | |||
| Algorithm: | Algorithm: | |||
| ### | LRl.1 Does FEC match a known FEC? If not, goto LRl.14 | |||
| LRl.0 Does FEC match a known FEC? If not, goto LRl.13 | ||||
| ### | ||||
| LRl.1 Remove MsgSource from record of peers that hold Label for | LRl.2 Remove MsgSource from record of peers that hold Label for | |||
| FEC. (See Note 1.) | FEC. (See Note 1.) | |||
| LRl.2 Does message match an outstanding label withdraw for FEC | LRl.3 Does message match an outstanding label withdraw for FEC | |||
| previously sent to MsgSource? | previously sent to MsgSource? | |||
| If not, goto LRl.4 | If not, goto LRl.5 | |||
| LRl.3 Delete record of outstanding label withdraw for FEC | LRl.4 Delete record of outstanding label withdraw for FEC | |||
| previously sent to MsgSource. | previously sent to MsgSource. | |||
| LRl.4 Is LSR merging labels for this FEC? | LRl.5 Is LSR merging labels for this FEC? | |||
| If not, goto LRl.6. (See Note 2.) | If not, goto LRl.7. (See Note 2.) | |||
| LRl.5 | ||||
| ### | ||||
| REPLACE : | ||||
| Has LSR previously advertised a label for this FEC to | ||||
| other peers? | ||||
| WITH | ||||
| Does LSR have outstanding label advertisements for this FEC? | ||||
| See | ||||
| MPLS WG archive, May 01, "Label Release receive doubt !!" | ||||
| ### | LRl.6 Does LSR have outstanding label advertisements for this FEC? | |||
| If so, goto LRl.10. | If so, goto LRl.11. | |||
| LRl.6 Is LSR egress for the FEC? | LRl.7 Is LSR egress for the FEC? | |||
| If so, goto LRl.10 | If so, goto LRl.11 | |||
| LRl.7 Is there a Next Hop for FEC? AND | LRl.8 Is there a Next Hop for FEC? AND | |||
| Does LSR have a previously received label mapping for FEC | Does LSR have a previously received label mapping for FEC | |||
| from Next Hop? | from Next Hop? | |||
| If not, goto LRl.10. | If not, goto LRl.11. | |||
| LRl.8 Is LSR configured to propagate releases? | LRl.9 Is LSR configured to propagate releases? | |||
| If not, goto LRl.10. (See Note 3.) | If not, goto LRl.11. (See Note 3.) | |||
| LRl.9 Execute procedure Send_Message (Next Hop, Label Release, | LRl.10 Execute procedure Send_Message (Next Hop, Label Release, | |||
| FEC, Label from Next Hop). | FEC, Label from Next Hop). | |||
| LRl.10 Remove Label from forwarding/switching use for traffic | LRl.11 Remove Label from forwarding/switching use for traffic | |||
| from MsgSource. | from MsgSource. | |||
| LRl.11 Do any peers still hold Label for FEC? | LRl.12 Do any peers still hold Label for FEC? | |||
| If so, goto LRl.13. | If so, goto LRl.14. | |||
| LRl.12 Free the Label. | LRl.13 Free the Label. | |||
| LRl.13 DONE. | LRl.14 DONE. | |||
| Notes: | Notes: | |||
| 1. If LSR is using Downstream Unsolicited label distribution, it | 1. If LSR is using Downstream Unsolicited label distribution, it | |||
| should not re-advertise a label mapping for FEC to MsgSource | should not re-advertise a label mapping for FEC to MsgSource | |||
| until MsgSource requests it. | until MsgSource requests it. | |||
| 2. LRl.4 through LRl.8 deal with determining whether where the LSR | 2. LRl.5 through LRl.9 deal with determining whether where the LSR | |||
| should propagate the label release to a downstream peer | should propagate the label release to a downstream peer | |||
| (LRl.9). | (LRl.9). | |||
| 3. If LRl.8 is reached, no upstream LSR holds a label for the FEC, | 3. If LRl.9 is reached, no upstream LSR holds a label for the FEC, | |||
| and the LSR holds a label for the FEC from the FEC Next Hop. | and the LSR holds a label for the FEC from the FEC Next Hop. | |||
| The LSR could propagate the Label Release to the Next Hop. By | The LSR could propagate the Label Release to the Next Hop. By | |||
| propagating the Label Release the LSR releases a potentially | propagating the Label Release the LSR releases a potentially | |||
| scarce label resource. In doing so, it also increases the | scarce label resource. In doing so, it also increases the | |||
| latency for re-establishing the LSP should MsgSource or some | latency for re-establishing the LSP should MsgSource or some | |||
| other upstream LSR send it a new Label Request for FEC. | other upstream LSR send it a new Label Request for FEC. | |||
| Whether or not to propagate the release is not a protocol | Whether or not to propagate the release is not a protocol | |||
| issue. Label distribution will operate properly whether or not | issue. Label distribution will operate properly whether or not | |||
| the release is propagated. The decision to propagate or not | the release is propagated. The decision to propagate or not | |||
| skipping to change at page 142, line 51 ¶ | skipping to change at page 118, line 51 ¶ | |||
| 3. The purpose of the check on label retention mode is to avoid a | 3. The purpose of the check on label retention mode is to avoid a | |||
| race with steps LMp.12-LMp.13 of the procedure for handling a | race with steps LMp.12-LMp.13 of the procedure for handling a | |||
| Label Mapping message where the LSR operating in Conservative | Label Mapping message where the LSR operating in Conservative | |||
| Label retention mode may have released a label mapping received | Label retention mode may have released a label mapping received | |||
| from the New Next Hop before it detected the FEC next hop had | from the New Next Hop before it detected the FEC next hop had | |||
| changed. | changed. | |||
| 4. Regardless of the Label Request procedure in use by the LSR, it | 4. Regardless of the Label Request procedure in use by the LSR, it | |||
| must send a label request if the conditions in | must send a label request if the conditions in | |||
| ### | NH.13 hold. | |||
| REPLACE | ||||
| NH.8 hold. | ||||
| WITH | ||||
| NH.13.hold | ||||
| ### | ||||
| Therefore it executes the Send_Label_Request procedure directly | Therefore it executes the Send_Label_Request procedure directly | |||
| rather than perform LSR Label Request procedure. | rather than perform LSR Label Request procedure. | |||
| A.1.8. Receive Notification / Label Request Aborted | A.1.8. Receive Notification / Label Request Aborted | |||
| Summary: | Summary: | |||
| When an LSR receives a Label Request Aborted notification from an | When an LSR receives a Label Request Aborted notification from an | |||
| LDP peer it records that the corresponding label request | LDP peer it records that the corresponding label request | |||
| skipping to change at page 149, line 9 ¶ | skipping to change at page 124, line 9 ¶ | |||
| NoLS.1 Execute procedure Send_Label_Withdraw (Peer, FEC, | NoLS.1 Execute procedure Send_Label_Withdraw (Peer, FEC, | |||
| PrevAdvLabel). (See Note 1.) | PrevAdvLabel). (See Note 1.) | |||
| NoLS.2 DONE. | NoLS.2 DONE. | |||
| Notes: | Notes: | |||
| 1. The LSR may remove the label from forwarding/switching use as | 1. The LSR may remove the label from forwarding/switching use as | |||
| part of this event or as part of processing the label release | part of this event or as part of processing the label release | |||
| from the peer in response to the label withdraw. ### | from the peer in response to the label withdraw. If the LSR | |||
| doesn't wait for the label reelase message from the peer it | ||||
| If the LSR doesn't wait for the label reelase message from the | should not reuse the label until it receives the label release. | |||
| peer it should not reuse the label until it receives the label | ||||
| release. | ||||
| ### | ||||
| A.1.15. Timeout of deferred label request | A.1.15. Timeout of deferred label request | |||
| Summary: | Summary: | |||
| Label requests are deferred in response to No Route and Loop | Label requests are deferred in response to No Route and Loop | |||
| Detected notifications. When a deferred FEC label request for a | Detected notifications. When a deferred FEC label request for a | |||
| peer times out, the LSR sends the label request. | peer times out, the LSR sends the label request. | |||
| Context: | Context: | |||
| skipping to change at page 158, line 37 ¶ | skipping to change at page 132, line 45 ¶ | |||
| - PrevHopCount. The Hop Count, if any, this LSR associates with | - PrevHopCount. The Hop Count, if any, this LSR associates with | |||
| the LSP for the FEC. | the LSP for the FEC. | |||
| Additional Context: | Additional Context: | |||
| - LSR Id. The unique LSR Id of this LSR. | - LSR Id. The unique LSR Id of this LSR. | |||
| Algorithm: | Algorithm: | |||
| ### | PMpA.1 Do the RAttributes include any unknown TLVs? If not, goto PMpA.4. | |||
| Add the following and renumber all the lines: | ||||
| PMpA.0 Do the RAttributes include any unknown TLVs? If not, goto PMpA.1. | PMpA.2 Do the settings of the U and F bits require forwarding of | |||
| PMpA.0a Do the settings of the U and F bits require forwarding of | these TLVs? If not, goto PMpA.4. | |||
| these TLVs? If not, goto PMpA.1. | ||||
| PMpA.0b Copy the unknown TLVs in SAttributes. | ||||
| #### | PMpA.3 Copy the unknown TLVs in SAttributes. | |||
| PMpA.1 Is Hop Count required for this Peer (see Note 1.) ? OR | PMpA.4 Is Hop Count required for this Peer (see Note 1.) ? OR | |||
| Do RAttributes include a Hop Count? OR | Do RAttributes include a Hop Count? OR | |||
| Is Loop Detection configured on LSR? | Is Loop Detection configured on LSR? | |||
| If not, goto PMpA.21. | If not, goto PMpA.24. | |||
| PMpA.2 Is LSR egress for FEC? | PMpA.5 Is LSR egress for FEC? | |||
| If not, goto PMpA.4. | If not, goto PMpA.7. | |||
| PMpA.3 Include Hop Count of 1 in SAttributes. Goto PMpA.21. | PMpA.6 Include Hop Count of 1 in SAttributes. Goto PMpA.24. | |||
| PMpA.4 Do RAttributes have a Hop Count? | PMpA.7 Do RAttributes have a Hop Count? | |||
| If not, goto PMpA.8. | If not, goto PMpA.11. | |||
| PMpA.5 Is LSR member of edge set for an LSR domain whose LSRs do | PMpA.8 Is LSR member of edge set for an LSR domain whose LSRs do | |||
| not perform TTL decrement AND | not perform TTL decrement AND | |||
| Is Peer in that domain (See Note 2.). | Is Peer in that domain (See Note 2.). | |||
| If not, goto PMpA.7. | If not, goto PMpA.10. | |||
| PMpA.6 Include Hop Count of 1 in SAttributes. Goto PMpA.9. | PMpA.9 Include Hop Count of 1 in SAttributes. Goto PMpA.12. | |||
| PMpA.7 Increment RAttributes Hop Count and copy the resulting | PMpA.10 Increment RAttributes Hop Count and copy the resulting | |||
| Hop Count to SAttributes. See Note 2. Goto PMpA.9. | Hop Count to SAttributes. See Note 2. Goto PMpA.12. | |||
| PMpA.8 Include Hop Count of unknown (0) in SAttributes. | PMpA.11 Include Hop Count of unknown (0) in SAttributes. | |||
| PMpA.9 Is Loop Detection configured on LSR? | PMpA.12 Is Loop Detection configured on LSR? | |||
| If not, goto PMpA.21. | If not, goto PMpA.24. | |||
| PMpA.10 Do RAttributes have a Path Vector? | PMpA.13 Do RAttributes have a Path Vector? | |||
| If so, goto PMpA.19. | If so, goto PMpA.22. | |||
| PMpA.11 Is LSR propagating a received Label Mapping? | PMpA.14 Is LSR propagating a received Label Mapping? | |||
| If not, goto PMpA.20. | If not, goto PMpA.23. | |||
| PMpA.12 Does LSR support merging? | PMpA.15 Does LSR support merging? | |||
| If not, goto PMpA.14. | If not, goto PMpA.17. | |||
| PMpA.13 Has LSR previously sent a Label Mapping for FEC to Peer? | PMpA.16 Has LSR previously sent a Label Mapping for FEC to Peer? | |||
| If not, goto PMpA.20. | If not, goto PMpA.23. | |||
| PMpA.14 Do RAttributes include a Hop Count? | PMpA.17 Do RAttributes include a Hop Count? | |||
| If not, goto PMpA.21. | If not, goto PMpA.24. | |||
| PMpA.15 Is Hop Count in Rattributes unknown(0)? | PMpA.18 Is Hop Count in Rattributes unknown(0)? | |||
| If so, goto PMpA.20. | If so, goto PMpA.23. | |||
| PMpA.16 Has LSR previously sent a Label Mapping for FEC to Peer? | PMpA.19 Has LSR previously sent a Label Mapping for FEC to Peer? | |||
| If not goto PMpA.21. | If not goto PMpA.24. | |||
| PMpA.17 Is Hop Count in RAttributes different from PrevHopCount ? | PMpA.20 Is Hop Count in RAttributes different from PrevHopCount ? | |||
| If not goto PMpA.21. | If not goto PMpA.24. | |||
| PMpA.18 Is the Hop Count in RAttributes > PrevHopCount? OR | PMpA.21 Is the Hop Count in RAttributes > PrevHopCount? OR | |||
| Is PrevHopCount unknown(0) | Is PrevHopCount unknown(0) | |||
| If not, goto PMpA.21. | If not, goto PMpA.24. | |||
| PMpA.19 Add LSR Id to beginning of Path Vector from RAttributes | PMpA.22 Add LSR Id to beginning of Path Vector from RAttributes | |||
| and copy the resulting Path Vector into SAttributes. | and copy the resulting Path Vector into SAttributes. | |||
| Goto PMpA.21. | Goto PMpA.24. | |||
| PMpA.20 Include Path Vector of length 1 containing LSR Id in | PMpA.23 Include Path Vector of length 1 containing LSR Id in | |||
| SAttributes. | SAttributes. | |||
| PMpA.21 DONE. | PMpA.24 DONE. | |||
| Notes: | Notes: | |||
| 1. The link with Peer may require that Hop Count be included in | 1. The link with Peer may require that Hop Count be included in | |||
| Label Mapping messages; for example, see [RFC3035] and | Label Mapping messages; for example, see [RFC3035] and | |||
| [RFC3034]. | [RFC3034]. | |||
| 2. If the LSR is at the edge of a cloud of LSRs that do not per- | 2. If the LSR is at the edge of a cloud of LSRs that do not per- | |||
| form TTL-decrement and it is propagating the Label Mapping mes- | form TTL-decrement and it is propagating the Label Mapping mes- | |||
| sage upstream into the cloud, it sets the Hop Count to 1 so | sage upstream into the cloud, it sets the Hop Count to 1 so | |||
| that Hop Count across the cloud is calculated properly. This | that Hop Count across the cloud is calculated properly. This | |||
| ensures proper TTL management for packets forwarded across the | ensures proper TTL management for packets forwarded across the | |||
| part of the LSP that passes through the cloud. | part of the LSP that passes through the cloud. | |||
| 3. For hop count arithmetic, unknown + 1 = unknown. | 3. For hop count arithmetic, unknown + 1 = unknown. | |||
| Full Copyright Statement | Full Copyright Statement | |||
| Copyright (C) The Internet Society (year). This document is subject | Copyright (C) The Internet Society (2005). This document is subject | |||
| to the rights, licenses and restrictions contained in BCP 78, and | to the rights, licenses and restrictions contained in BCP 78, and | |||
| except as set forth therein, the authors retain all their rights. | except as set forth therein, the authors retain all their rights. | |||
| Additional copyright notices are not permitted in IETF Documents | Additional copyright notices are not permitted in IETF Documents | |||
| except in the case where such document is the product of a joint | except in the case where such document is the product of a joint | |||
| development effort between the IETF and another standards development | development effort between the IETF and another standards development | |||
| organization or the document is a republication of the work of | organization or the document is a republication of the work of | |||
| another standards organization. Such exceptions must be approved on | another standards organization. Such exceptions must be approved on | |||
| an individual basis by the IAB. | an individual basis by the IAB. | |||
| End of changes. 119 change blocks. | ||||
| 593 lines changed or deleted | 387 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||