| 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/ | ||||