draft-ietf-mpls-ldp-capabilities-04.txt   rfc5561.txt 
Network Working Group Bob Thomas Network Working Group B. Thomas
Internet Draft Cisco Systems, Inc. Request for Comments: 5561 K. Raza
Updates: 5036 Updates: 5036 Cisco Systems, Inc.
Intended Status: Proposed Standard S. Aggarwal Category: Standards Track S. Aggarwal
Expiration Date: October 22, 2009 Juniper Networks
R. Aggarwal R. Aggarwal
Juniper Networks Juniper Networks
JL. Le Roux
J.L. Le Roux
France Telecom France Telecom
Syed Kamran Raza
Cisco Systems, Inc.
April 23, 2009
LDP Capabilities LDP Capabilities
draft-ietf-mpls-ldp-capabilities-04.txt Abstract
Status of this Memo
This Internet-Draft is submitted to IETF in full conformance with the
provisions of BCP 78 and BCP 79. This document may contain material
from IETF Documents or IETF Contributions published or made publicly
available before November 10, 2008. The person(s) controlling the
copyright in some of this material may not have granted the IETF
Trust the right to allow modifications of such material outside the
IETF Standards Process. Without obtaining an adequate license from
the person(s) controlling the copyright in such materials, this
document may not be modified outside the IETF Standards Process, and
derivative works of it may not be created outside the IETF Standards
Process, except to format it for publication as an RFC or to
translate it into languages other than English.
Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that
other groups may also distribute working documents as Internet-
Drafts.
Internet-Drafts are draft documents valid for a maximum of six months
and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at A number of enhancements to the Label Distribution Protocol (LDP)
http://www.ietf.org/ietf/1id-abstracts.txt. have been proposed. Some have been implemented, and some are
advancing toward standardization. It is likely that additional
enhancements will be proposed in the future. This document defines a
mechanism for advertising LDP enhancements at session initialization
time, as well as a mechanism to enable and disable enhancements after
LDP session establishment.
The list of Internet-Draft Shadow Directories can be accessed at Status of This Memo
http://www.ietf.org/shadow.html.
This Internet-Draft will expire on October 22, 2009. This document specifies an Internet standards track protocol for the
Internet community, and requests discussion and suggestions for
improvements. Please refer to the current edition of the "Internet
Official Protocol Standards" (STD 1) for the standardization state
and status of this protocol. Distribution of this memo is unlimited.
Copyright Copyright Notice
Copyright (c) 2009 IETF Trust and the persons identified as the Copyright (c) 2009 IETF Trust and the persons identified as the
document authors. All rights reserved. document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal This document is subject to BCP 78 and the IETF Trust's Legal
Provisions Relating to IETF Documents in effect on the date of Provisions Relating to IETF Documents in effect on the date of
publication of this document (http://trustee.ietf.org/license-info). publication of this document (http://trustee.ietf.org/license-info).
Please review these documents carefully, as they describe your rights Please review these documents carefully, as they describe your rights
and restrictions with respect to this document. and restrictions with respect to this document.
Abstract This document may contain material from IETF Documents or IETF
Contributions published or made publicly available before November
A number of enhancements to the Label Distribution Protocol (LDP) 10, 2008. The person(s) controlling the copyright in some of this
have been proposed. Some have been implemented, and some are material may not have granted the IETF Trust the right to allow
advancing toward standardization. It is likely that additional modifications of such material outside the IETF Standards Process.
enhancements will be proposed in the future. This document defines a Without obtaining an adequate license from the person(s) controlling
mechanism for advertising LDP enhancements at session initialization the copyright in such materials, this document may not be modified
time, as well as a mechanism to enable and disable enhancements after outside the IETF Standards Process, and derivative works of it may
LDP session establishment. not be created outside the IETF Standards Process, except to format
it for publication as an RFC or to translate it into languages other
Conventions used in this document than English.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
This document uses the terms "LDP speaker" and "speaker"
interchangably.
Table of Contents Table of Contents
1. Introduction...................................................3 1. Introduction ....................................................2
2. The LDP Capability Mechanism...................................4 1.1. Conventions Used in This Document ..........................3
2.1. Capability Document.......................................5 2. The LDP Capability Mechanism ....................................3
3. Specifying Capabilities in LDP Messages........................5 2.1. Capability Document ........................................4
3.1. Backward Compatibility TLVs...............................7 3. Specifying Capabilities in LDP Messages .........................4
4. Capability Message.............................................7 3.1. Backward Compatibility TLVs ................................6
5. Note on Terminology............................................8 4. Capability Message ..............................................6
6. Procedures for Capability Parameters in Initialization Messages8 5. Note on Terminology .............................................7
7. Procedures for Capability Parameters in Capability Messages...10 6. Procedures for Capability Parameters in Initialization
8. Extensions to Error Handling..................................10 Messages ........................................................7
9. Dynamic Capability Announcement TLV...........................11 7. Procedures for Capability Parameters in Capability Messages .....8
10. Backward Compatibility.......................................11 8. Extensions to Error Handling ....................................9
11. Security Considerations......................................12 9. Dynamic Capability Announcement TLV .............................9
12. IANA Considerations..........................................12 10. Backward Compatibility ........................................10
13. Acknowledgments..............................................12 11. Security Considerations .......................................10
14. References...................................................13 12. IANA Considerations ...........................................11
14.1. Normative References....................................13 13. Acknowledgments ...............................................11
14.2. Informative References..................................13 14. References ....................................................11
15. Author's Addresses...........................................14 14.1. Normative References .....................................11
14.2. Informative References ...................................11
1. Introduction 1. Introduction
A number of enhancements to LDP as specified in [RFC5036] have been A number of enhancements to LDP as specified in [RFC5036] have been
proposed. These include LDP Graceful Restart [RFC3478], Fault proposed. These include LDP Graceful Restart [RFC3478], Fault
Tolerant LDP [RFC3479], multicast extensions [MLDP], signaling for Tolerant LDP [RFC3479], multicast extensions [MLDP], signaling for
layer 2 circuits [RFC4447], a method for learning labels advertised Layer 2 circuits [RFC4447], a method for learning labels advertised
by next-next-hop routers in support of fast reroute node protection by next-next-hop routers in support of fast reroute node protection
[NNHOP], upstream label allocation [UPSTREAM_LDP], and extensions for [NNHOP], upstream label allocation [UPSTREAM_LDP], and extensions for
signaling inter-area LSPs [IALDP]. Some have been implemented, and signaling inter-area Label Switched Paths (LSPs) [RFC5283]. Some
some are advancing toward standardization. It is also likely that have been implemented, and some are advancing toward standardization.
additional enhancements will be implemented and deployed in the It is also likely that additional enhancements will be implemented
future. and deployed in the future.
This document proposes and defines a mechanism for advertising LDP This document proposes and defines a mechanism for advertising LDP
enhancements at session initialization time. It also defines a enhancements at session initialization time. It also defines a
mechanism to enable and disable these enhancements after LDP session mechanism to enable and disable these enhancements after LDP session
establishment. establishment.
LDP capability advertisement provides means for an LDP speaker to LDP capability advertisement provides means for an LDP speaker to
announce what it can receive and process. It also provides means for announce what it can receive and process. It also provides means for
a speaker to inform peers of deviationts from behavior specified by a speaker to inform peers of deviations from behavior specified by
[RFC5036]. An example of such a deviation is LDP graceful restart [RFC5036]. An example of such a deviation is LDP Graceful Restart,
where a speaker retains MPLS forwarding state for LDP-signaled LSPs where a speaker retains MPLS forwarding state for LDP-signaled LSPs
when its LDP control plane goes down. It is important to point out when its LDP control plane goes down. It is important to point out
that not all LDP enhancements require capability advertisement. For that not all LDP enhancements require capability advertisement. For
example, upstream label allocation does but inbound label filtering, example, upstream label allocation requires capability advertisement,
where a speaker installs forwarding state for only certain FECs, but inbound label filtering, where a speaker installs forwarding
does not. state for only certain Forwarding Equivalence Classes (FECs), does
not.
1.1. Conventions Used in This Document
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
document are to be interpreted as described in [RFC2119].
This document uses the terms "LDP speaker" and "speaker"
interchangeably.
2. The LDP Capability Mechanism 2. The LDP Capability Mechanism
Enhancements are likely to be announced during LDP session Enhancements are likely to be announced during LDP session
establishment as each LDP speaker advertises capabilities establishment as each LDP speaker advertises capabilities
corresponding to the enhancements it desires. corresponding to the enhancements it desires.
Beyond that, capability advertisements may be used to dynamically Beyond that, capability advertisements may be used to dynamically
modify the characteristics of the session to suit the changing modify the characteristics of the session to suit the changing
conditions. For example, an LSR capable of a particular enhancement conditions. For example, an LSR capable of a particular enhancement
skipping to change at page 4, line 26 skipping to change at page 3, line 47
because the feature was disabled at that time. Later, an operator because the feature was disabled at that time. Later, an operator
may enable the feature, at which time the LSR would react by may enable the feature, at which time the LSR would react by
advertising the corresponding capability to its peers. Similarly, advertising the corresponding capability to its peers. Similarly,
when an operator disables a feature associated with a capability, the when an operator disables a feature associated with a capability, the
LSR reacts by withdrawing the capability advertisement from its LSR reacts by withdrawing the capability advertisement from its
peers. peers.
The LDP capability advertisement mechanism operates as follows: The LDP capability advertisement mechanism operates as follows:
- Each LDP speaker is assumed to implement a set of enhancements, - Each LDP speaker is assumed to implement a set of enhancements,
each of which has an associated capability. At any time, a each of which has an associated capability. At any time, a speaker
speaker may have none, one, or more of those enhancements may have none, one, or more of those enhancements "enabled". When
"enabled". When an enhancement is enabled, the speaker an enhancement is enabled, the speaker advertises the associated
advertises the associated capability to its peers. By capability to its peers. By advertising the capability to a peer,
advertising the capability to a peer, the speaker asserts that it the speaker asserts that it shall perform the protocol actions
shall perform the protocol actions specified for the associated specified for the associated enhancement. For example, the actions
enhancement. For example, the actions may require the LDP speaker may require the LDP speaker to receive and process enhancement-
to receive and process enhancement-specific messages from its specific messages from its peer. Unless the capability has been
peer. Unless the capability has been advertised, the speaker will advertised, the speaker will not perform protocol actions specified
not perform protocol actions specified for the corresponding for the corresponding enhancement.
enhancement.
- At session establishment time an LDP speaker MAY advertise a - At session establishment time, an LDP speaker MAY advertise a
particular capability by including an optional parameter particular capability by including an optional parameter associated
associated with the capability in its Initialization message. with the capability in its Initialization message.
- There is a well-known capability called Dynamic Capability - There is a well-known capability called Dynamic Capability
Announcement which an LDP speaker MAY advertise in its Announcement that an LDP speaker MAY advertise in its
Initialization message to indicate that it is capable of Initialization message to indicate that it is capable of processing
processing capability announcements following a session capability announcements following a session establishment.
establishment.
If a peer had advertised the Dynamic Capability Announcement If a peer had advertised the Dynamic Capability Announcement
capability in its Initialization message, then at any time capability in its Initialization message, then at any time
following session establishment an LDP speaker MAY announce following session establishment, an LDP speaker MAY announce
changes in its advertised capabilities to that peer. To do this, changes in its advertised capabilities to that peer. To do this,
the LDP speaker sends the peer a Capability message that the LDP speaker sends the peer a Capability message that specifies
specifies the capabilities being advertised or withdrawn. the capabilities being advertised or withdrawn.
2.1. Capability Document 2.1. Capability Document
When the capability advertisement mechanism is in place, an LDP When the capability advertisement mechanism is in place, an LDP
enhancement requiring LDP capability advertisement will be specified enhancement requiring LDP capability advertisement will be specified
by a document that: by a document that:
- Describes the motivation for the enhancement; - Describes the motivation for the enhancement;
- Specifies the behavior of LDP when the enhancement is enabled. - Specifies the behavior of LDP when the enhancement is enabled.
This includes the procedures, parameters, messages, and TLVs This includes the procedures, parameters, messages, and TLVs
required by the enhancement; required by the enhancement;
- Includes an IANA considerations section that requests IANA - Includes an IANA considerations section that requests IANA
assignment of a code point (from TLV Type namespace) for the assignment of a code point (from TLV Type namespace) for the
optional capability parameter corresponding to the enhancement. optional capability parameter corresponding to the enhancement.
The capability document MUST also describe the interpretation and The capability document MUST also describe the interpretation
processing of associated capability data, if present. and processing of associated capability data, if present.
3. Specifying Capabilities in LDP Messages 3. Specifying Capabilities in LDP Messages
This document uses the term "Capability Parameter" to refer to an This document uses the term "Capability Parameter" to refer to an
optional parameter that may be included in Initialization and optional parameter that may be included in Initialization and
Capability messages to advertise a capability. Capability messages to advertise a capability.
The format of a "Capability Parameter" TLV is as follows: The format of a "Capability Parameter" TLV is as follows:
0 1 2 3 0 1 2 3
skipping to change at page 6, line 17 skipping to change at page 5, line 19
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|U|F| TLV Code Point | Length | |U|F| TLV Code Point | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|S| Reserved | | |S| Reserved | |
+-+-+-+-+-+-+-+-+ Capability Data | +-+-+-+-+-+-+-+-+ Capability Data |
| +-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
where: where:
U-bit: U-bit:
Unknown TLV bit, as described in [RFC5036]. The value could be Unknown TLV bit, as described in [RFC5036]. The value could be
either 0 or 1 as specified in Capability document associated either 0 or 1 as specified in the Capability document associated
with given capability. with the given capability.
F-bit: F-bit:
Forward unknown TLV bit, as described in [RFC5036]. The value of Forward unknown TLV bit, as described in [RFC5036]. The value
this bit MUST be 0 since a Capability Paramter TLV is sent only of this bit MUST be 0 since a Capability Parameter TLV is sent
in Initialization and Capability messages which are not only in Initialization and Capability messages, which are not
forwarded. forwarded.
TLV Code Point: TLV Code Point:
The TLV type which identifies a specific capability. This is The TLV type that identifies a specific capability. This is an
IANA assigned code point (from TLV Type namespace) for given IANA-assigned code point (from TLV Type namespace) for a given
capability as requested in the associated capability document. capability as requested in the associated capability document.
S-bit: S-bit:
The State Bit. It indicates whether the sender is advertising or The State Bit. It indicates whether the sender is advertising
withdrawing the capability corresponding to the TLV Code Point. or withdrawing the capability corresponding to the TLV code
The State bit value is used as follows: point. The State Bit value is used as follows:
1 - The TLV is advertising the capability specified by the 1 - The TLV is advertising the capability specified by the TLV
TLV Code Point. code point.
0 - The TLV is withdrawing the capability specified by the
TLV Code Point. 0 - The TLV is withdrawing the capability specified by the TLV
code point.
Capability Data: Capability Data:
Information, if any, about the capability in addition to the TLV Information, if any, about the capability in addition to the TLV
Code Point required to fully specify the capability. code point required to fully specify the capability.
The method for interpreting and processing this data is specific The method for interpreting and processing this data is specific
to the TLV Code Point and MUST be described in the document to the TLV code point and MUST be described in the document
specifying the capability. specifying the capability.
An LDP speaker MUST NOT include more than one instance of a An LDP speaker MUST NOT include more than one instance of a
Capability Parameter (as identified by the same TLV code point) in an Capability Parameter (as identified by the same TLV code point) in an
Initialization or Capability message. If an LDP speaker receives more Initialization or Capability message. If an LDP speaker receives
than one instance of the same Capability Parameter type in a message, more than one instance of the same Capability Parameter type in a
it SHOULD send a Notification message to peer before terminating the message, it SHOULD send a Notification message to the peer before
session with peer. The Status Code in the Status TLV of the terminating the session with the peer. The Status Code in the Status
Notification message MUST be Malformed TLV, and the message SHOULD TLV of the Notification message MUST be Malformed TLV value, and the
contain the second Capability Parameter TLV of the same type (Code message SHOULD contain the second Capability Parameter TLV of the
point) that is received in the message. same type (code point) that is received in the message.
3.1. Backward Compatibility TLVs 3.1. Backward Compatibility TLVs
LDP extensions that require advertisement or negotiation of some LDP extensions that require advertisement or negotiation of some
capability at session establishment time typically use TLVs that are capability at session establishment time typically use TLVs that are
included in an Initialization message. To ensure backward included in an Initialization message. To ensure backward
compatibility with existing implementations, such TLVs continue to be compatibility with existing implementations, such TLVs continue to be
supported in an Initialization message and are known in this document supported in an Initialization message and are known in this document
as "Backward Compatibility TLVs". A Backward Compatibility TLV plays as "Backward Compatibility TLVs". A Backward Compatibility TLV plays
the role of a "Capability Parameter" TLV; that is the presence of a the role of a "Capability Parameter" TLV; that is, the presence of a
Backward Compatibility TLV has the same meaning as a Capability Backward Compatibility TLV has the same meaning as a Capability
Parameter TLV with the S bit set for the same capability. Parameter TLV with the S-bit set for the same capability.
One example of a Backward Capability TLV is the "FT Session TLV" that One example of a Backward Capability TLV is the "FT Session TLV" that
is exchanged in an Initialization message between peers to announce is exchanged in an Initialization message between peers to announce
LDP Fault Tolerance [RFC3479] capability. LDP Fault Tolerance [RFC3479] capability.
4. Capability Message 4. Capability Message
The LDP Capability message is used by an LDP speaker to announce The LDP Capability message is used by an LDP speaker to announce
changes in the state of one or more of its capabilities subsequent to changes in the state of one or more of its capabilities subsequent to
session establishment. session establishment.
The format of the Capability message is as follows: The format of the Capability message is as follows:
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| Capability (IANA) | Length | |0| Capability (0x0202) | Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Message ID | | Message ID |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TLV_1 | | TLV_1 |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| . . . | | . . . |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TLV_N | | TLV_N |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
where TLV_1 through TLV_N are Capability Parameter TLVs. The S-bit where TLV_1 through TLV_N are Capability Parameter TLVs. The S-bit
of each of the TLVs specifies the new state for the corresponding of each of the TLVs specifies the new state for the corresponding
capability. capability.
Note that Backward Compatibility TLVs (see Section 3.1. ) MUST NOT be Note that Backward Compatibility TLVs (see Section 3.1) MUST NOT be
included in Capability messages. included in Capability messages. An LDP speaker that receives a
Capability message from a peer that includes Backward Compatibility
TLVs SHOULD silently ignore these Backward Compatibility TLVs and
continue processing the rest of the message.
5. Note on Terminology 5. Note on Terminology
The following sections in this document talk about enabling and The following sections in this document talk about enabling and
disabling capabilities. The terminology "enabling (or disabling) a disabling capabilities. The terminology "enabling (or disabling) a
capability" is short hand for "advertising (or withdrawing) a capability" is short hand for "advertising (or withdrawing) a
capability associated with an enhancement". Bear in mind that it is capability associated with an enhancement". Bear in mind that it is
an LDP enhancement that is being enabled or disabled, and that it is an LDP enhancement that is being enabled or disabled, and that it is
the corresponding capability that is being advertisted or withdrawn. the corresponding capability that is being advertised or withdrawn.
6. Procedures for Capability Parameters in Initialization Messages 6. Procedures for Capability Parameters in Initialization Messages
The S-bit of a Capability Parameter in an Initialization message MUST The S-bit of a Capability Parameter in an Initialization message MUST
be 1 and SHOULD be ignored on receipt. This ensures that any be 1 and SHOULD be ignored on receipt. This ensures that any
Capability Parameter in an Initialization message enables the Capability Parameter in an Initialization message enables the
corresponding capability. corresponding capability.
An LDP speaker determines the capabilities of a peer by examining the An LDP speaker determines the capabilities of a peer by examining the
set of of Capability Parameters present in the Initialization message set of Capability Parameters present in the Initialization message
received from the peer. received from the peer.
An LDP speaker MAY use a particular capability with its peer after An LDP speaker MAY use a particular capability with its peer after
the speaker determines that the peer has enabled that capability. the speaker determines that the peer has enabled that capability.
These procedures enable an LDP speaker S1, that advertises a specific These procedures enable an LDP speaker S1, that advertises a specific
LDP capability C, to establish an LDP session with speaker S2 that LDP capability C, to establish an LDP session with speaker S2 that
does not advertise C. In this situation whether or not capability C does not advertise C. In this situation, whether or not capability C
may be used for the session depends on the semantics of the may be used for the session depends on the semantics of the
enhancement associated with C. If the semantics do not require both enhancement associated with C. If the semantics do not require both
S1 and S2 advertise C to one another, then S2 could use it; i.e. S1's S1 and S2, advertise C to one another, then S2 could use it; i.e.,
advertisement of C permits S2 to send messages to S1 used by the S1's advertisement of C permits S2 to send messages to S1 used by the
enhancement. enhancement.
It is the responsibility of the capability designer to specify the It is the responsibility of the capability designer to specify the
behavior of an LDP speaker that has enabled a certain enhancement, behavior of an LDP speaker that has enabled a certain enhancement,
advertised its capability and determines that its peer has not advertised its capability and determines that its peer has not
advertised the corresponding capability. The document specifying advertised the corresponding capability. The document specifying
procedures for the capability MUST describe the behavior in this procedures for the capability MUST describe the behavior in this
situation. If the specified procedure is to terminate the session, situation. If the specified procedure is to terminate the session,
then the LDP speaker SHOULD send a Notification message to the peer then the LDP speaker SHOULD send a Notification message to the peer
before terminating the session. The Status Code in the Status TLV before terminating the session. The Status Code in the Status TLV of
of the Notification message MUST be Unsupported Capability, and the the Notification message MUST be Unsupported Capability, and the
message SHOULD contain the unsupported capability (see Section 8. message SHOULD contain the unsupported capability (see Section 8 for
for more details). more details).
An LDP speaker that supports capability advertisement and includes a An LDP speaker that supports capability advertisement and includes a
Capability Parameter in its Initialization message MUST set the TLV Capability Parameter in its Initialization message MUST set the TLV
U-bit to 0 or 1, as specified by Capability document. LDP speaker U-bit to 0 or 1, as specified by Capability document. The LDP
should set U-bit to 1 if the capability document allows to continue speaker should set the U-bit to 1 if the capability document allows
with a peer that does not understand the enhancement, and set U-bit it to continue with a peer that does not understand the enhancement,
to 0 otherwise. If a speaker receives a message containng unsupported and set the U-bit to 0 otherwise. If a speaker receives a message
capability, it responds according to U-bit setting in the TLV. If U- containing unsupported capability, it responds according to the U-bit
bit is 1, then speaker MUST silently ignore the Capability Parameter setting in the TLV. If the U-bit is 1, then the speaker MUST
and allow the session to be established. However, if U-bit is 0, then silently ignore the Capability Parameter and allow the session to be
speaker SHOULD send a Notification message to the peer before established. However, if the U-bit is 0, then speaker SHOULD send a
terminating the session. The Status Code in the Status TLV of the Notification message to the peer before terminating the session. The
Notification message MUST be Unsupported Capability, and the Status Code in the Status TLV of the Notification message MUST be
message SHOULD contain the unsupported capability (see Section 8. Unsupported Capability, and the message SHOULD contain the
for more details). unsupported capability (see Section 8 for more details).
7. Procedures for Capability Parameters in Capability Messages 7. Procedures for Capability Parameters in Capability Messages
An LDP speaker MUST NOT send a Capability message to a peer unless An LDP speaker MUST NOT send a Capability message to a peer unless
its peer had advertised the Dynamic Capability Announcement its peer advertised the Dynamic Capability Announcement capability in
capability in its session Initialization message. An LDP speaker MAY its session Initialization message. An LDP speaker MAY send a
send a Capability message to a peer if its peer had advertised the Capability message to a peer if its peer advertised the Dynamic
Dynamic Capability Announcement capability in its session Capability Announcement capability in its session Initialization
Initialization message (see Section 9. ). message (see Section 9).
An LDP speaker determines the capabilities enabled by a peer by An LDP speaker determines the capabilities enabled by a peer by
determining the set of capabilities enabled at session initialization determining the set of capabilities enabled at session initialization
(as specified in Section 6. ) and tracking changes to that set made (as specified in Section 6) and tracking changes to that set made by
by Capability messages from the peer. Capability messages from the peer.
An LDP speaker that has enabled a particular capability MAY use the An LDP speaker that has enabled a particular capability MAY use the
enhancement corresponding to the capability with a peer after the enhancement corresponding to the capability with a peer after the
speaker determines that the peer has enabled the capability. speaker determines that the peer has enabled the capability.
8. Extensions to Error Handling 8. Extensions to Error Handling
This document defines a new LDP status code named Unsupported This document defines a new LDP status code named Unsupported
Capability. The E-bit of the Status TLV carried in a Notification Capability. The E-bit of the Status TLV carried in a Notification
message that includes this status code MUST be set to 0. message that includes this status code MUST be set to 0.
In addition, this document defines a new LDP TLV, named Returned In addition, this document defines a new LDP TLV, named Returned
TLVs, that MAY be carried in a Notification message. The U-bit TLVs, that MAY be carried in a Notification message as an Optional
setting for a Returned TLVs TLV in a Notification message SHOULD be 1 Parameter. The U-bit setting for a Returned TLVs TLV in a
and the F-bit setting SHOULD be 0. Notification message SHOULD be 1, and the F-bit setting SHOULD be 0.
When the Status Code in a Notification message is Unsupported When the Status Code in a Notification message is Unsupported
Capability, the message SHOULD specify the capabilities that are Capability, the message SHOULD specify the capabilities that are
unsupported. When the Notification message specifies the unsupported unsupported. When the Notification message specifies the unsupported
capabilities, it MUST include a Returned TLVs TLV. The Returned TLVs capabilities, it MUST include a Returned TLVs TLV. The Returned TLVs
TLV MUST include only the Capability Parameters for unsupported TLV MUST include only the Capability Parameters for unsupported
capabilities, and the Capability Parameter for each such capability capabilities, and the Capability Parameter for each such capability
SHOULD be encoded as received from the peer. SHOULD be encoded as received from the peer.
When the Status Code in a Notification Message is Unknown TLV, the When the Status Code in a Notification Message is Unknown TLV, the
skipping to change at page 11, line 13 skipping to change at page 9, line 46
include the unknown TLV in a Returned TLVs TLV. include the unknown TLV in a Returned TLVs TLV.
9. Dynamic Capability Announcement TLV 9. Dynamic Capability Announcement TLV
The Dynamic Capability Announcement TLV is a Capability Parameter The Dynamic Capability Announcement TLV is a Capability Parameter
defined by this document with following format: defined by this document with following format:
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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1|0| DynCap Announcement (IANA)| Length (1) | |1|0| DynCap Ann. (0x0506) | Length (1) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|1| Reserved | |1| Reserved |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
The value of the U-bit for the Dynamic Capability Announcement
The value of U-bit for Dynamic Capability Announcement Parameter TLV Parameter TLV MUST be set to 1 so that a receiver MUST silently
MUST be set to 1 so that a receiver MUST silently ignore this TLV, if ignore this TLV if unknown to it, and continue processing the rest of
unknown to it, and continue processing the rest of the message. There the message. There is no "Capability Data" associated with this TLV
is no "Capability Data" associated with this TLV and hence TLV length and hence the TLV length MUST be set to 1.
MUST be set to 1.
The Dynamic Capability Announcement Parameter MAY be included by an The Dynamic Capability Announcement Parameter MAY be included by an
LDP speaker in an Initialization message to signal its peer that the LDP speaker in an Initialization message to signal its peer that the
speaker is capable of processing Capability messages. speaker is capable of processing Capability messages.
An LDP speaker MUST NOT include the Dynamic Capability Announcement An LDP speaker MUST NOT include the Dynamic Capability Announcement
Parameter in Capability messages sent to its peers. Once enabled Parameter in Capability messages sent to its peers. Once enabled
during session initialization, the Dynamic Capability Announcement during session initialization, the Dynamic Capability Announcement
capability cannot be disabled. This implies that S-bit is always 1 capability cannot be disabled. This implies that the S-bit is always
for Dynamic Capability Announcement. 1 for the Dynamic Capability Announcement.
An LDP speaker that receives a Capability message from a peer that An LDP speaker that receives a Capability message from a peer that
includes the Dynamic Capability Announcement Parameter SHOULD includes the Dynamic Capability Announcement Parameter SHOULD
silently ignore the parameter and process any other Capability silently ignore the parameter and process any other Capability
Parameters in the message. Parameters in the message.
10. Backward Compatibility 10. Backward Compatibility
From the point of view of the LDP capability advertisement mechanism, From the point of view of the LDP capability advertisement mechanism,
an [RFC5036] compliant peer has label distribution for IPv4 enabled an [RFC5036]-compliant peer has label distribution for IPv4 enabled
by default. To ensure compatibility with an [RFC5036] compliant by default. To ensure compatibility with an [RFC5036]-compliant
peer, LDP implementations that support capability advertisement have peer, LDP implementations that support capability advertisement have
label distribution for IPv4 enabled until it is explicitly disabled label distribution for IPv4 enabled until it is explicitly disabled
and MUST assume that their peers do as well. and MUST assume that their peers do as well.
Section 3.1 introduces the concept of Backward Compatibility TLVs Section 3.1 introduces the concept of Backward Compatibility TLVs
that may appear in an Initialization message in the role of a that may appear in an Initialization message in the role of a
Capability Parameter. This permits existing LDP enhancements that Capability Parameter. This permits existing LDP enhancements that
use an adhoc mechanism for enabling capabilities at sesssion use an ad hoc mechanism for enabling capabilities at session
initialization time to continue to do so. initialization time to continue to do so.
11. Security Considerations 11. Security Considerations
[MPLS_SEC] describes the security framework for MPLS networks, [MPLS_SEC] describes the security framework for MPLS networks,
whereas [RFC5036] describes the security considerations that apply to whereas [RFC5036] describes the security considerations that apply to
the base LDP specification. The same security framework and the base LDP specification. The same security framework and
considerations apply to the capability mechanism described in this considerations apply to the capability mechanism described in this
document. document.
12. IANA Considerations 12. IANA Considerations
This document specifies the following which require code points assigned This document specifies the following code points assigned by IANA:
by IANA:
- LDP message code point for the Capability message. The authors - LDP message code point for the Capability message (0x0202).
request message type 0x0202 for the Capability message.
- LDP TLV code point for the Dynamic Capability Announcemnt TLV. - LDP TLV code point for the Dynamic Capability Announcement TLV
The authors request TLV type code 0x0506. (0x0506).
- LDP TLV code point for the Returned TLVs TLV. The authors - LDP TLV code point for the Returned TLVs TLV (0x0304).
request TLV type 0x304.
- LDP Status Code code point for the Unsupported Capability Status - LDP Status Code code point for the Unsupported Capability Status
Code. The authors request Status Code 0x0000002C. Code (0x0000002E).
13. Acknowledgments 13. Acknowledgments
The authors wish to thank Enke Chen, Vanson Lim, Ina Minei, Bin Mo, The authors wish to thank Enke Chen, Vanson Lim, Ina Minei, Bin Mo,
Yakov Rekhter, and Eric Rosen for their comments. Yakov Rekhter, and Eric Rosen for their comments.
This document was prepared using 2-Word-v2.0.template.dot.
14. References 14. References
14.1. Normative References 14.1. Normative References
[RFC5036] Andersson, L., Menei, I., and Thomas, B., Editors, "LDP [RFC5036] Andersson, L., Ed., Minei, I., Ed., and B. Thomas,
Specification", RFC 5036, September 2007. Ed., "LDP Specification", RFC 5036, October 2007.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC2119, March 1997. Requirement Levels", BCP 14, RFC2119, March 1997.
[RFC3479] Farrel, A., Editor, "Fault Tolerance for the Label [RFC3479] Farrel, A., Ed., "Fault Tolerance for the Label
Distribution Protocol (LDP)", RFC 3479, February 2003. Distribution Protocol (LDP)", RFC 3479, February 2003.
14.2. Informative References 14.2. Informative References
[IALDP] Decraene, B., Le Roux, JL., Minei, I, "LDP Extensions for [RFC5283] Decraene, B., Le Roux, JL., and I. Minei, "LDP
Inter-Area LSPs", draft-decraene-mpls-ldp-interarea-04.txt, Extension for Inter-Area Label Switched Paths (LSPs)",
RFC 5283, July 2008.
[MLDP] Minei, I., Wijnamds, I., Editors, "Label Distribution Protocol [MLDP] Minei, I., Ed., Kompella, K., Wijnands, I., Ed., and
Extensions for Point-to-Multipoint and Multipoint-to- B. Thomas, "Label Distribution Protocol Extensions for
Multipoint Label Switched Paths", draft-minei-wijnands-mpls- Point-to-Multipoint and Multipoint-to-Multipoint Label
ldp-p2mp-00.txt, Work in Progress, September 2005 Switched Paths", Work in Progress, April 2009.
[NNHOP] Shen, N., Chen, E., Tian, A. "Discovery LDP Next-Nexthop [NNHOP] Shen, N., Chen, E., and A. Tian, "Discovery LDP Next-
Labels", draft-shen-mpls-ldp-nnhop-label-02.txt, Work in Nexthop Labels", Work in Progress, May 2005.
[RFC4447] L. Martini, Editor, E. Rosen, El-Aawar, T. Smith, G. Heron, [RFC4447] Martini, L., Ed., Rosen, E., El-Aawar, N., Smith, T.,
"Pseudowire Setup and Maintenance using the Label Distribution and G. Heron, "Pseudowire Setup and Maintenance Using
Protocol", RFC 4447, April 2006. the Label Distribution Protocol (LDP)", RFC 4447,
April 2006.
[RFC3478] Leelanivas, M., Rekhter, Y, Aggarwal, R., "Graceful Restart [RFC3478] Leelanivas, M., Rekhter, Y., and R. Aggarwal,
Mechanism for Label Distribution Protocol (LDP)", RFC 3478, "Graceful Restart Mechanism for Label Distribution
February 2003. Protocol", RFC 3478, February 2003.
[UPSTREAM_LDP] Aggarwal R., Le Roux, J.L., "MPLS Upstream Label [UPSTREAM_LDP] Aggarwal R., and J.L. Le Roux, "MPLS Upstream Label
Assignment for LDP" draft-ietf-mpls-ldp-upstream-00.txt, Work Assignment for LDP" Work in Progress, July 2008.
in Progress, February 2006.
[MPLS_SEC] Fang, L. et al., Security Framework for MPLS and GMPLS [MPLS_SEC] Fang, L., Ed., "Security Framework for MPLS and GMPLS
Networks, draft-ietf-mpls-mpls-and-gmpls-security-framework- Networks", Work in Progress, March 2009.
05.txt, Work in Progress, March 2009.
15. Author's Addresses Authors' Addresses
Bob Thomas Bob Thomas
Cisco Systems, Inc. Cisco Systems, Inc.
1414 Massachusetts Ave. 1414 Massachusetts Ave.
Boxborough, MA 01719 Boxborough, MA 01719
E-mail: bobthomas@alum.mit.edu EMail: bobthomas@alum.mit.edu
Shivani Aggarwal Shivani Aggarwal
Juniper Networks Juniper Networks
1194 North Mathilda Ave. 1194 North Mathilda Ave.
Sunnyvale, CA 94089 Sunnyvale, CA 94089
Email: shivani@juniper.net EMail: shivani@juniper.net
Rahul Aggarwal Rahul Aggarwal
Juniper Networks Juniper Networks
1194 North Mathilda Ave. 1194 North Mathilda Ave.
Sunnyvale, CA 94089 Sunnyvale, CA 94089
Email: rahul@juniper.net EMail: rahul@juniper.net
Jean-Louis Le Roux Jean-Louis Le Roux
France Telecom France Telecom
2, Avenue Pierre-Marzin 2, Avenue Pierre-Marzin
22307 Lannion Cedex, France 22307 Lannion Cedex, France
E-mail: jeanlouis.leroux@orange-ftgroup.com EMail: jeanlouis.leroux@orange-ftgroup.com
Syed Kamran Raza Kamran Raza
Cisco Systems, Inc. Cisco Systems, Inc.
2000 Innovation Dr. 2000 Innovation Dr.
Kanata, ON K2K-3E8, Canada Kanata, ON K2K 3E8, Canada
E-mail: skraza@cisco.com EMail: skraza@cisco.com
 End of changes. 70 change blocks. 
227 lines changed or deleted 203 lines changed or added

This html diff was produced by rfcdiff 1.35. The latest version is available from http://tools.ietf.org/tools/rfcdiff/