draft-ietf-mpls-explicit-null-02.txt | rfc4182.txt | |||
---|---|---|---|---|
Network Working Group Eric C. Rosen | ||||
Internet Draft Cisco Systems, Inc. | ||||
Expiration Date: August 2005 | ||||
Updates RFC 3032 | ||||
February 2005 | Network Working Group E. Rosen | |||
Request for Comments: 4182 Cisco Systems, Inc. | ||||
Updates: 3032 September 2005 | ||||
Category: Standards Track | ||||
Removing a Restriction on the use of MPLS Explicit NULL | Removing a Restriction on the use of MPLS Explicit NULL | |||
draft-ietf-mpls-explicit-null-02.txt | Status of This Memo | |||
Status of this Memo | ||||
By submitting this Internet-Draft, I certify that any applicable | ||||
patent or other IPR claims of which I am aware have been disclosed, | ||||
or will be disclosed, and any of which I become aware will be | ||||
disclosed, in accordance with RFC 3668. | ||||
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 | This document specifies an Internet standards track protocol for the | |||
and may be updated, replaced, or obsoleted by other documents at any | Internet community, and requests discussion and suggestions for | |||
time. It is inappropriate to use Internet-Drafts as reference | improvements. Please refer to the current edition of the "Internet | |||
material or to cite them other than as "work in progress." | Official Protocol Standards" (STD 1) for the standardization state | |||
and status of this protocol. Distribution of this memo is unlimited. | ||||
The list of current Internet-Drafts can be accessed at | Copyright Notice | |||
http://www.ietf.org/ietf/1id-abstracts.txt. | ||||
The list of Internet-Draft Shadow Directories can be accessed at | Copyright (C) The Internet Society (2005). | |||
http://www.ietf.org/shadow.html. | ||||
Abstract | Abstract | |||
The label stack encoding for MPLS (Multi-protocol Label Switching) | The label stack encoding for Multi-protocol Label Switching (MPLS) | |||
defines a reserved label value known as "IPv4 Explicit NULL" and a | defines a reserved label value known as "IPv4 Explicit NULL" and a | |||
reserved label value known as "IPv6 Explicit NULL". Previously, | reserved label value known as "IPv6 Explicit NULL". Previously, | |||
these labels were only legal when they occurred at the bottom of the | these labels were only legal when they occurred at the bottom of the | |||
MPLS label stack. This restriction is now removed, so that these | MPLS label stack. This restriction is now removed, so that these | |||
label values may legally occur anywhere in the stack. | label values may legally occur anywhere in the stack. | |||
This document updates RFC 3032. | This document updates RFC 3032. | |||
Contents | Table of Contents | |||
1 Introduction ......................................... 2 | 1. Introduction ....................................................2 | |||
2 Detail of Change ..................................... 2 | 2. Detail of Change ................................................2 | |||
3 Reasons for Change ................................... 4 | 3. Reasons for Change ..............................................3 | |||
4 Deployment Considerations ............................ 5 | 4. Deployment Considerations .......................................5 | |||
5 Security Considerations .............................. 6 | 5. Security Considerations .........................................5 | |||
6 Acknowledgments ...................................... 6 | 6. Acknowledgments .................................................5 | |||
7 Normative References ................................. 6 | 7. Normative References ............................................5 | |||
8 Informative References ............................... 6 | 8. Informative References ..........................................5 | |||
9 Author's Address ..................................... 6 | ||||
10 Intellectual Property Statement ...................... 6 | ||||
11 Full Copyright Statement ............................. 7 | ||||
1. Introduction | 1. Introduction | |||
RFC 3032 defines a reserved label value known as "IPv4 Explicit NULL" | RFC 3032 defines a reserved label value known as "IPv4 Explicit NULL" | |||
and a reserved label value known as "IPv6 Explicit NULL". It states | and a reserved label value known as "IPv6 Explicit NULL" [RFC3032]. | |||
that these label values are only legal at the bottom of the MPLS | It states that these label values are only legal at the bottom of the | |||
label stack. However, no reason is given for this restriction. | MPLS label stack. However, no reason is given for this restriction. | |||
It has turned out that in practice there are some situations in which | It has turned out that in practice there are some situations in which | |||
it is useful to send MPLS packets which have Explicit NULL occur | it is useful to send MPLS packets that have Explicit NULL occur | |||
other than at that bottom of the label stack. While the intended | somewhere other than at that bottom of the label stack. While the | |||
semantics are obvious enough, the fact that such packets are | intended semantics are obvious enough, the fact that such packets are | |||
gratuitously declared by RFC 3032 to be illegal has made it difficult | gratuitously declared by RFC 3032 to be illegal has made it difficult | |||
to handle these situations in an interoperable manner. | to handle these situations in an interoperable manner. | |||
This document updates RFC 3032 by removing the unnecessary | This document updates RFC 3032 by removing the unnecessary | |||
restriction, so that the two aforementioned label values are legal | restriction, so that the two aforementioned label values are legal | |||
anywhere in the label stack. | anywhere in the label stack. | |||
2. Detail of Change | 2. Detail of Change | |||
RFC 3032 states on page 4: | RFC 3032 states on page 4: | |||
skipping to change at page 4, line 12 | skipping to change at page 3, line 34 | |||
treated as an IPv6 packet, and its disposition is based on the | treated as an IPv6 packet, and its disposition is based on the | |||
IPv6 header. | IPv6 header. | |||
3. Reasons for Change | 3. Reasons for Change | |||
Restricting Explicit NULL to the bottom of the stack has caused some | Restricting Explicit NULL to the bottom of the stack has caused some | |||
problems in practice. | problems in practice. | |||
With this restriction in place, one should not distribute, to a | With this restriction in place, one should not distribute, to a | |||
particular label distribution peer, a binding of Explicit NULL to a | particular label distribution peer, a binding of Explicit NULL to a | |||
particular FEC, unless the following condition (call it "Condition | particular Forwarding Equivalence Class (FEC), unless the following | |||
L") holds: all MPLS packets received by that peer with an incoming | condition (call it "Condition L") holds: all MPLS packets received by | |||
label corresponding to that FEC contain only a single label stack | that peer with an incoming label corresponding to that FEC contain | |||
entry. If Explicit NULL is bound to the FEC, but Condition L doesn't | only a single label stack entry. If Explicit NULL is bound to the | |||
hold, the peer is being requested to create illegal packets. None of | FEC, but Condition L doesn't hold, the peer is being requested to | |||
the MPLS specifications say what the peer is actually supposed to do | create illegal packets. None of the MPLS specifications say what the | |||
in this case. This situation is made more troublesome by the facts | peer is actually supposed to do in this case. This situation is made | |||
that, in practice, Condition L rarely holds, and it is not possible | more troublesome by the facts that, in practice, Condition L rarely | |||
in general to determine whether it holds or not. | holds, and it is not possible, in general, to determine whether it | |||
holds or not. | ||||
Further, if one is supporting the Pipe Model of RFC3270, there are | Further, if one is supporting the Pipe Model of RFC 3270 [RFC3270], | |||
good reasons to create label stacks in which Explicit NULL is at the | there are good reasons to create label stacks in which Explicit NULL | |||
top of the label stack, but a non-null label is at the bottom. | is at the top of the label stack, but a non-null label is at the | |||
bottom. | ||||
RFC3270 specifies the procedures for MPLS support of Differentiated | RFC3270 specifies the procedures for MPLS support of Differentiated | |||
Services. In particular, it defines a "Pipe Model", in which | Services. In particular, it defines a "Pipe Model" in which (quoting | |||
(quoting from RFC3270, section 2.6.2): | from RFC 3270, Section 2.6.2): | |||
"tunneled packets must convey two meaningful pieces of Diff-Serv | "tunneled packets must convey two meaningful pieces of Diff-Serv | |||
information: | information: | |||
- the Diff-Serv information which is meaningful to intermediate | - the Diff-Serv information which is meaningful to intermediate | |||
nodes along the LSP span including the LSP Egress (which we | nodes along the LSP span including the LSP Egress (which we refer | |||
refer to as the 'LSP Diff-Serv Information'). This LSP Diff- | to as the 'LSP Diff-Serv Information'). This LSP Diff-Serv | |||
Serv Information is not meaningful beyond the LSP Egress: | Information is not meaningful beyond the LSP Egress: Whether | |||
Whether Traffic Conditioning at intermediate nodes on the LSP | Traffic Conditioning at intermediate nodes on the LSP span | |||
span affects the LSP Diff-Serv information or not, this updated | affects the LSP Diff-Serv information or not, this updated Diff- | |||
Diff-Serv information is not considered meaningful beyond the | Serv information is not considered meaningful beyond the LSP | |||
LSP Egress and is ignored. | Egress and is ignored. | |||
- the Diff-Serv information which is meaningful beyond the LSP | - the Diff-Serv information which is meaningful beyond the LSP | |||
Egress (which we refer to as the 'Tunneled Diff-Serv | Egress (which we refer to as the 'Tunneled Diff-Serv | |||
Information'). This information is to be conveyed by the LSP | Information'). This information is to be conveyed by the LSP | |||
Ingress to the LSP Egress. This Diff-Serv information is not | Ingress to the LSP Egress. This Diff-Serv information is not | |||
meaningful to the intermediate nodes on the LSP span." | meaningful to the intermediate nodes on the LSP span." | |||
When the Pipe Model is in use, it is common practice for the LSP | When the Pipe Model is in use, it is common practice for the LSP | |||
Egress to bind Explicit Null to the tunnel's FEC. The intention is | Egress to bind Explicit Null to the tunnel's FEC. The intention is | |||
that the LSP Diff-Serv information will be carried in the EXP bits | that the LSP Diff-Serv information will be carried in the EXP bits of | |||
of the Explicit Null label stack entry, and the tunneled Diff-Serv | the Explicit Null label stack entry, and the tunneled Diff-Serv | |||
information will be carried in whatever is "below" the Explicit Null | information will be carried in whatever is "below" the Explicit Null | |||
label stack entry, i.e., in the IP header DS bits or in the EXP bits | label stack entry, i.e., in the IP header DS bits or in the EXP bits | |||
of the next entry on the MPLS label stack. | of the next entry on the MPLS label stack. | |||
Naturally, this practice causes a problem if the Pipe Model LSP is | Naturally, this practice causes a problem if the Pipe Model LSP is | |||
being used to tunnel MPLS packets (i.e., if Condition L does not | being used to tunnel MPLS packets (i.e., if Condition L does not | |||
hold). With strict adherence to RFCs 3031 and 3036, this practice | hold). With strict adherence to RFCs 3031 and 3036, this practice | |||
results in an MPLS packet where Explicit NULL is at the top of the | results in an MPLS packet where Explicit NULL is at the top of the | |||
label stack, even though it is not the only entry in the label | label stack, even though it is not the only entry in the label stack. | |||
stack. However, RFC 3032 makes this packet illegal. | However, RFC 3032 makes this packet illegal. | |||
Some implementations simply transmit the illegal packet. Others try | Some implementations simply transmit the illegal packet. Others try | |||
to convert it to a legal packet by stripping off the Explicit NULL | to convert it to a legal packet by stripping off the Explicit NULL | |||
before transmitting it. However, that breaks the Pipe Model by | before transmitting it. However, that breaks the Pipe Model by | |||
discarding the LSP Diff-Serv information. It is conceivable that | discarding the LSP Diff-Serv information. It is conceivable that | |||
there may be an implementation which drops the illegal packet | there may be an implementation that drops the illegal packet | |||
entirely; this would also break the Pipe Model, as it would lose not | entirely; this would also break the Pipe Model, as it would lose not | |||
only the LSP Diff-Serv information but the entire packet. | only the LSP Diff-Serv information, but the entire packet. | |||
Of course the LSP egress is not compelled to bind Explicit NULL to | Of course the LSP egress is not compelled to bind Explicit NULL to | |||
the tunnel's FEC; an ordinary label could be used instead. However, | the tunnel's FEC; an ordinary label could be used instead. However, | |||
using Explicit NULL enables the egress to determine immediately | using Explicit NULL enables the egress to determine immediately | |||
(i.e., without need for lookup in the Label Information Base) that | (i.e., without need for lookup in the Label Information Base) that | |||
the further forwarding of the packet is to be determined by whatever | the further forwarding of the packet is to be determined by whatever | |||
is below the label. Avoiding this lookup can have favorable | is below the label. Avoiding this lookup can have favorable | |||
implications on forwarding performance. | implications on forwarding performance. | |||
Removing the restriction that Explicit Null only occur at the bottom | Removing the restriction that Explicit Null only occur at the bottom | |||
of the stack is the simplest way to facilitate the proper operation | of the stack is the simplest way to facilitate the proper operation | |||
of the Pipe Model. | of the Pipe Model. | |||
4. Deployment Considerations | 4. Deployment Considerations | |||
Implementations which adhere to this specification will interoperate | Implementations that adhere to this specification will interoperate | |||
correctly, and will correctly support the Pipe Model. | correctly, and will correctly support the Pipe Model. | |||
Implementations which do not adhere to this specification may not | Implementations that do not adhere to this specification may not | |||
interoperate. In particular if a router advertises a binding of | interoperate. In particular, if a router advertises a binding of | |||
Explicit NULL, and if that router has an upstream LDP peer which will | Explicit NULL, and if that router has an upstream LDP peer that will | |||
not transmit a packet that has multiple label stack entries with | not transmit a packet that has multiple label stack entries with | |||
Explicit Null at top of the stack, then it will not be possible to | Explicit Null at top of the stack, then it will not be possible to | |||
use Explicit NULL to support the Pipe Model until the upstream LDP | use Explicit NULL to support the Pipe Model until the upstream LDP | |||
peer is brought into compliance with this specification. | peer is brought into compliance with this specification. | |||
It is possible that there may be a router implementation, preceding | It is possible that there may be a router implementation, preceding | |||
this specification, which will discard any received packet with | this specification, which will discard any received packet with | |||
multiple label stack entries and a top label value of Explicit Null. | multiple label stack entries and a top label value of Explicit Null. | |||
It is advisable to configure any such routers so that they do not | It is advisable to configure any such routers so that they do not | |||
advertise any bindings to Explicit Null. | advertise any bindings to Explicit Null. | |||
skipping to change at page 6, line 19 | skipping to change at page 5, line 41 | |||
any position in the label stack. This modification does not impose | any position in the label stack. This modification does not impose | |||
any new security considerations beyond those discussed in RFC 3032. | any new security considerations beyond those discussed in RFC 3032. | |||
6. Acknowledgments | 6. Acknowledgments | |||
Thanks to Rahul Aggarwal, Francois LeFaucheur, Yakov Rekhter, and Dan | Thanks to Rahul Aggarwal, Francois LeFaucheur, Yakov Rekhter, and Dan | |||
Tappan for their helpful comments. | Tappan for their helpful comments. | |||
7. Normative References | 7. Normative References | |||
[RFC3032] "MPLS Label Stack Encoding", Rosen, et. al., January 2001 | [RFC3032] Rosen, E., Tappan, D., Fedorkow, G., Rekhter, Y., | |||
Farinacci, D., Li, T., and A. Conta, "MPLS Label Stack | ||||
Encoding", RFC 3032, January 2001. | ||||
8. Informative References | 8. Informative References | |||
[RFC3270] "Multi-Protocol Label Switching (MPLS) Support of | [RFC3270] Le Faucheur, F., Wu, L., Davie, B., Davari, S., Vaananen, | |||
Differentiated Services", Le Faucheur, et. al., May 2002 | P., Krishnan, R., Cheval, P., and J. Heinanen, "Multi- | |||
Protocol Label Switching (MPLS) Support of Differentiated | ||||
Services", RFC 3270, May 2002. | ||||
9. Author's Address | Author's Address | |||
Eric C. Rosen | Eric C. Rosen | |||
Cisco Systems, Inc. | Cisco Systems, Inc. | |||
1414 Massachusetts Avenue | 1414 Massachusetts Avenue | |||
Boxborough, MA 01719 | Boxborough, MA 01719 | |||
Email: erosen@cisco.com | ||||
10. Intellectual Property Statement | EMail: erosen@cisco.com | |||
Full Copyright Statement | ||||
Copyright (C) The Internet Society (2005). | ||||
This document is subject to the rights, licenses and restrictions | ||||
contained in BCP 78, and except as set forth therein, the authors | ||||
retain all their rights. | ||||
This document and the information contained herein are provided on an | ||||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | ||||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | ||||
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | ||||
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | ||||
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | ||||
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
Intellectual Property | ||||
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 7, line 19 | skipping to change at page 7, line 45 | |||
such proprietary rights by implementers or users of this | such proprietary rights by implementers or users of this | |||
specification can be obtained from the IETF on-line IPR repository at | specification can 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. Full Copyright Statement | Acknowledgement | |||
Copyright (C) The Internet Society (2005). This document is subject | ||||
to the rights, licenses and restrictions contained in BCP 78 and | ||||
except as set forth therein, the authors retain all their rights. | ||||
This document and the information contained herein are provided on an | Funding for the RFC Editor function is currently provided by the | |||
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | Internet Society. | |||
OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET | ||||
ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, | ||||
INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE | ||||
INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | ||||
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
End of changes. | ||||
This html diff was produced by rfcdiff 1.25, available from http://www.levkowetz.com/ietf/tools/rfcdiff/ |