rfc9072.original | rfc9072.txt | |||
---|---|---|---|---|
IDR E. Chen | Internet Engineering Task Force (IETF) E. Chen | |||
Internet-Draft Palo Alto Networks | Request for Comments: 9072 Palo Alto Networks | |||
Updates: 4271 (if approved) J. Scudder | Updates: 4271 J. Scudder | |||
Intended status: Standards Track Juniper Networks | Category: Standards Track Juniper Networks | |||
Expires: October 24, 2021 April 22, 2021 | ISSN: 2070-1721 June 2021 | |||
Extended Optional Parameters Length for BGP OPEN Message | Extended Optional Parameters Length for BGP OPEN Message | |||
draft-ietf-idr-ext-opt-param-13 | ||||
Abstract | Abstract | |||
The Optional Parameters in the BGP OPEN message as defined in the | The Optional Parameters in the BGP OPEN message as defined in the | |||
base BGP specification are limited to 255 octets due to a one-octet | base BGP specification are limited to 255 octets due to a one-octet | |||
length field. BGP Capabilities are carried in this field and may | length field. BGP capabilities are carried in this field and may | |||
foreseeably exceed 255 octets in the future, leading to concern about | foreseeably exceed 255 octets in the future, leading to concerns | |||
this limitation. | about this limitation. | |||
This document updates RFC 4271 by extending, in a backward-compatible | This document updates RFC 4271 by extending, in a backward-compatible | |||
manner, the length of the Optional Parameters in the BGP OPEN. The | manner, the length of the Optional Parameters in a BGP OPEN message. | |||
Parameter Length field of individual Optional Parameters is also | The Parameter Length field of individual Optional Parameters is also | |||
extended. | extended. | |||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on October 24, 2021. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9072. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2021 IETF Trust and the persons identified as the | Copyright (c) 2021 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 | Provisions Relating to IETF Documents | |||
(https://trustee.ietf.org/license-info) in effect on the date of | (https://trustee.ietf.org/license-info) in effect on the date of | |||
publication of this document. Please review these documents | publication of this document. Please review these documents | |||
carefully, as they describe your rights and restrictions with respect | carefully, as they describe your rights and restrictions with respect | |||
to this document. Code Components extracted from this document must | to this document. Code Components extracted from this document must | |||
include Simplified BSD License text as described in Section 4.e of | include Simplified BSD License text as described in Section 4.e of | |||
the Trust Legal Provisions and are provided without warranty as | the Trust Legal Provisions and are provided without warranty as | |||
described in the Simplified BSD License. | described in the Simplified BSD License. | |||
Table of Contents | ||||
1. Introduction | ||||
1.1. Requirements Language | ||||
2. Update to RFC 4271 | ||||
3. Backward Compatibility | ||||
4. IANA Considerations | ||||
5. Security Considerations | ||||
6. References | ||||
6.1. Normative References | ||||
6.2. Informative References | ||||
Acknowledgements | ||||
Authors' Addresses | ||||
1. Introduction | 1. Introduction | |||
The Optional Parameters Length field in the BGP OPEN message is | The Optional Parameters Length field in the BGP OPEN message is | |||
defined in the base BGP specification [RFC4271] as one octet, thus | defined in the base BGP specification [RFC4271] as one octet, thus | |||
limiting the Optional Parameters field in the OPEN message to 255 | limiting the Optional Parameters field in the OPEN message to 255 | |||
octets. Since BGP Capabilities [RFC5492] are carried in the Optional | octets. Since BGP capabilities [RFC5492] are carried in the Optional | |||
Parameters field, and new BGP capabilities continue to be introduced, | Parameters field, and new BGP capabilities continue to be introduced, | |||
the limitation is a concern for BGP development. | the limitation is a concern for BGP development. | |||
This document updates [RFC4271] by extending, in a backward- | This document updates [RFC4271] by extending the length of the | |||
compatible manner, the length of the Optional Parameters in BGP OPEN. | Optional Parameters in BGP OPEN in a backward-compatible manner. | |||
This is done by using Optional Parameter Type 255 as a distinguished | This is done by using Optional Parameter type code 255 as a | |||
value, that indicates an extended Optional Parameters Length field | distinguished value, which indicates an extended Optional Parameters | |||
follows and that the parsing of the BGP OPEN should be modified | Length field follows and that the parsing of the BGP OPEN should be | |||
according to these procedures. In this case the Parameter Length | modified according to these procedures. In this case, the Parameter | |||
field of the individual Optional Parameters in the BGP OPEN message | Length field of the individual Optional Parameters in the BGP OPEN | |||
is also extended. | message is also extended. | |||
1.1. Requirements Language | 1.1. Requirements Language | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in BCP | "OPTIONAL" in this document are to be interpreted as described in | |||
14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
2. Update to RFC 4271 | 2. Update to RFC 4271 | |||
This document reserves Optional Parameter Type code 255 as the | This document reserves Optional Parameter type code 255 as the | |||
"Extended Length" type code. | "Extended Length". | |||
In the event that the length of Optional Parameters in the BGP OPEN | In the event that the length of the Optional Parameters in the BGP | |||
message does not exceed 255, the encodings of the base BGP | OPEN message does not exceed 255, the encodings of the base BGP | |||
specification [RFC4271] SHOULD be used without alteration. | specification [RFC4271] SHOULD be used without alteration. | |||
Configuration MAY override this to force the extended format to be | Configuration MAY override this to force the extended format to be | |||
used in all cases; this might be used, for example to test that a | used in all cases; this might be used, for example, to test that a | |||
peer supports this specification. (In any case, an implementation | peer supports this specification. (In any case, an implementation | |||
MUST accept an OPEN message that uses the encoding of this | MUST accept an OPEN message that uses the encoding of this | |||
specification even if the length of Optional Parameters is 255 or | specification even if the length of the Optional Parameters is 255 or | |||
less.) | less.) | |||
However, if the length of Optional Parameters in the BGP OPEN message | ||||
does exceed 255, the OPEN message MUST be encoded according to the | ||||
procedure below. | ||||
0 1 2 3 | However, if the length of the Optional Parameters in the BGP OPEN | |||
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 | message does exceed 255, the OPEN message MUST be encoded according | |||
to the procedure below. | ||||
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 | ||||
+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+ | |||
| Version | | | Version | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| My Autonomous System | | | My Autonomous System | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Hold Time | | | Hold Time | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| BGP Identifier | | | BGP Identifier | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
|Non-Ext OP Len.|Non-Ext OP Type| Extended Opt. Parm. Length | | |Non-Ext OP Len.|Non-Ext OP Type| Extended Opt. Parm. Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | | | | | |||
| Optional Parameters (variable) | | | Optional Parameters (variable) | | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 1: Extended Encoding OPEN Format | Figure 1: Extended Encoding OPEN Format | |||
The Non-Extended Optional Parameters Length field (Non-Ext OP Len) | The Non-Extended Optional Parameters Length field (Non-Ext OP Len.) | |||
SHOULD be set to 255 on transmission and in any event MUST NOT be set | SHOULD be set to 255 on transmission and, in any event, MUST NOT be | |||
to 0, and MUST be ignored on receipt once the use of the extended | set to 0; it MUST be ignored on receipt once the use of the extended | |||
format is determined positively by inspection of the Non-Extended | format is determined positively by inspection of the Non-Extended | |||
Optional Parameters Type (Non-Ext OP Type) field. | Optional Parameters Type (Non-Ext OP Type) field. | |||
The subsequent one-octet field (that would be the first Optional | The subsequent one-octet field (which would be the first Optional | |||
Parameter Type field in the non-extended format, and is called "Non- | Parameter Type field in the non-extended format and is called "Non- | |||
Ext OP Type" in the figure above) MUST be set to 255 on transmission. | Ext OP Type" in the figure above) MUST be set to 255 on transmission. | |||
On receipt, a value of 255 for this field is the indication that the | On receipt, a value of 255 for this field is the indication that the | |||
extended format is in use. | extended format is in use. | |||
In this extended encoding, the subsequent two-octet field, termed the | In this extended encoding, the subsequent two-octet field, termed the | |||
Extended Optional Parameters Length field, is an unsigned integer | "Extended Optional Parameters Length field", is an unsigned integer | |||
indicating the total length of the Optional Parameters field in | indicating the total length of the Optional Parameters field in | |||
octets. If the value of this field is zero, no Optional Parameters | octets. If the value of this field is zero, no Optional Parameters | |||
are present. | are present. | |||
Likewise, in that situation the Optional Parameters encoding is | Likewise, in that situation, the Optional Parameters encoding is | |||
modified to be the following: | modified to be the following: | |||
0 1 2 | 0 1 2 | |||
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 | 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 | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Parm. Type | Parameter Length | | | Parm. Type | Parameter Length | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
~ Parameter Value (variable) ~ | ~ Parameter Value (variable) ~ | |||
| | | | | | |||
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
Figure 2: Extended Parameters Format | Figure 2: Extended Parameters Format | |||
The rules for encoding Optional Parameters are unchanged with respect | The rules for encoding Optional Parameters are unchanged with respect | |||
to those given in [RFC4271] other than the extension of the Parameter | to those given in [RFC4271], except that the Parameter Length field | |||
Length field to be a two-octet unsigned integer. | is extended to be a two-octet unsigned integer. | |||
In parsing an OPEN message, if the one-octet "Optional Parameters | In parsing an OPEN message, if the one-octet Optional Parameters | |||
Length" field (labeled "Non-Ext OP Len." in Figure 1) is non-zero, a | Length field (labeled "Non-Ext OP Len." in Figure 1) is non-zero, a | |||
BGP speaker MUST use the value of the octet following the one-octet | BGP speaker MUST use the value of the octet following the one-octet | |||
"Optional Parameters Length" field (labeled "Non-Ext OP Type" in | Optional Parameters Length field (labeled "Non-Ext OP Type" in | |||
Figure 1) to determine both the encoding of the Optional Parameters | Figure 1) to determine both the encoding of the Optional Parameters | |||
length and the size of the "Parameter Length" field of individual | length and the size of the Parameter Length field of individual | |||
Optional Parameters. If the value of the "Non-Ext OP Type" field is | Optional Parameters. If the value of the "Non-Ext OP Type" field is | |||
255, then the encoding described above is used for the Optional | 255, then the encoding described above is used for the Optional | |||
Parameters length. Otherwise the encoding defined in [RFC4271] is | Parameters length. Otherwise, the encoding defined in [RFC4271] is | |||
used. | used. | |||
3. Backward Compatibility | 3. Backward Compatibility | |||
If a BGP speaker supporting this specification (a "new speaker") is | If a BGP speaker supporting this specification (a "new speaker") is | |||
peering with one which does not (an "old speaker") no | peering with one that does not (an "old speaker"), no | |||
interoperability issues arise unless the new speaker needs to encode | interoperability issues arise unless the new speaker needs to encode | |||
Optional Parameters whose length exceeds 255. In that case, it will | Optional Parameters whose length exceeds 255. In that case, it will | |||
transmit an OPEN message which the old speaker will interpret as | transmit an OPEN message that the old speaker will interpret as | |||
containing an Optional Parameter with type code 255. Since by | containing an Optional Parameter with type code 255. Since the old | |||
definition the old speaker will not recognize that type code, the old | speaker will not recognize that type code by definition, the old | |||
speaker is expected to close the connection with a NOTIFICATION with | speaker is expected to close the connection with a NOTIFICATION with | |||
an Error Code of OPEN Message Error and an Error Subcode of | an error code of "OPEN Message Error" and an error subcode of | |||
Unsupported Optional Parameters, according to Section 6.2 of | "Unsupported Optional Parameters", according to Section 6.2 of | |||
[RFC4271]. | [RFC4271]. | |||
Although the Optional Parameter Type code 255 is used in this | Although the Optional Parameter type code 255 is used in this | |||
specification as the indication that the extended encoding is in use, | specification as the indication that the extended encoding is in use, | |||
it is not a bona fide Optional Parameter Type in the usual sense, and | it is not a bona fide Optional Parameter type code in the usual sense | |||
MUST NOT be used other than as described above. If encountered in | and MUST NOT be used other than as described above. If encountered | |||
any position other than the first Optional Parameter Type, it MUST be | other than as the Non-Ext OP Type, it MUST be treated as an | |||
treated as an unrecognized Optional Parameter and handled according | unrecognized Optional Parameter and handled according to [RFC4271], | |||
to [RFC4271] Section 6.2. | Section 6.2. | |||
It is not considered an error to receive an OPEN message whose | It is not considered an error to receive an OPEN message whose | |||
Extended Optional Parameters Length value is less than or equal to | Extended Optional Parameters Length value is less than or equal to | |||
255. It is not considered a fatal error to receive an OPEN message | 255. It is not considered a fatal error to receive an OPEN message | |||
whose (non-extended) Optional Parameters Length value is not 255, and | whose (non-extended) Optional Parameters Length value is not 255 and | |||
whose first Optional Parameter type code is 255 -- in this case the | whose first Optional Parameter type code is 255 -- in this case, the | |||
encoding of this specification MUST be used for decoding the message. | encoding of this specification MUST be used for decoding the message. | |||
4. IANA Considerations | 4. IANA Considerations | |||
IANA is requested to designate type code 255 in the BGP OPEN Optional | IANA has assigned value 255 as the Extended Length type code in the | |||
Parameter Types registry as the Extended Length type code. | "BGP OPEN Optional Parameter Types" registry. | |||
5. Security Considerations | 5. Security Considerations | |||
This extension to BGP does not change the underlying security or | This extension to BGP does not change the underlying security or | |||
confidentiality issues inherent in the existing BGP [RFC4272]. | confidentiality issues inherent in the existing BGP [RFC4272]. | |||
6. Acknowledgements | 6. References | |||
The authors would like to thank Yakov Rekhter and Srihari Sangli for | ||||
discussing various options to enlarge the Optional Parameters field. | ||||
We would also like to thank Matthew Bocci, Bruno Decraene, John | ||||
Heasley, Jakob Heitz, Christer Holmberg, Pradosh Mohapatra, Keyur | ||||
Patel and Hannes Gredler for their valuable comments. | ||||
7. References | ||||
7.1. Normative References | 6.1. Normative References | |||
[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, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/info/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A | [RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A | |||
Border Gateway Protocol 4 (BGP-4)", RFC 4271, | Border Gateway Protocol 4 (BGP-4)", RFC 4271, | |||
DOI 10.17487/RFC4271, January 2006, | DOI 10.17487/RFC4271, January 2006, | |||
<https://www.rfc-editor.org/info/rfc4271>. | <https://www.rfc-editor.org/info/rfc4271>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/info/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
7.2. Informative References | 6.2. Informative References | |||
[RFC4272] Murphy, S., "BGP Security Vulnerabilities Analysis", | [RFC4272] Murphy, S., "BGP Security Vulnerabilities Analysis", | |||
RFC 4272, DOI 10.17487/RFC4272, January 2006, | RFC 4272, DOI 10.17487/RFC4272, January 2006, | |||
<https://www.rfc-editor.org/info/rfc4272>. | <https://www.rfc-editor.org/info/rfc4272>. | |||
[RFC5492] Scudder, J. and R. Chandra, "Capabilities Advertisement | [RFC5492] Scudder, J. and R. Chandra, "Capabilities Advertisement | |||
with BGP-4", RFC 5492, DOI 10.17487/RFC5492, February | with BGP-4", RFC 5492, DOI 10.17487/RFC5492, February | |||
2009, <https://www.rfc-editor.org/info/rfc5492>. | 2009, <https://www.rfc-editor.org/info/rfc5492>. | |||
Acknowledgements | ||||
The authors would like to thank Yakov Rekhter and Srihari Sangli for | ||||
discussing various options to enlarge the Optional Parameters field. | ||||
We would also like to thank Matthew Bocci, Bruno Decraene, John | ||||
Heasley, Jakob Heitz, Christer Holmberg, Pradosh Mohapatra, Keyur | ||||
Patel, and Hannes Gredler for their valuable comments. | ||||
Authors' Addresses | Authors' Addresses | |||
Enke Chen | Enke Chen | |||
Palo Alto Networks | Palo Alto Networks | |||
Email: enchen@paloaltonetworks.com | Email: enchen@paloaltonetworks.com | |||
John Scudder | John Scudder | |||
Juniper Networks | Juniper Networks | |||
End of changes. 40 change blocks. | ||||
90 lines changed or deleted | 101 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/ |