<?xml version="1.0"encoding="US-ASCII"?> <!DOCTYPE rfc SYSTEM "rfc2629.dtd" [encoding="UTF-8"?> <!--One method to get references from the online citation libraries. There has to be one entity for each item to be referenced. An alternate method (rfc include) is described in the references.[CS] updated by Chris 05/05/21 --><!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"> <!ENTITY RFC4271 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4271.xml"> <!ENTITY RFC4272 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4272.xml"> <!ENTITY RFC5492 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5492.xml"> <!ENTITY RFC8174 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8174.xml"> <!ENTITY I-D.narten-iana-considerations-rfc2434bis<!DOCTYPE rfc SYSTEM"http://xml.resource.org/public/rfc/bibxml3/reference.I-D.narten-iana-considerations-rfc2434bis.xml"> ]> <?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?> <?rfc strict="yes" ?> <?rfc toc="no"?> <?rfc tocdepth="4"?> <?rfc symrefs="yes"?> <?rfc sortrefs="yes" ?> <?rfc compact="yes" ?> <?rfc subcompact="no" ?>"rfc2629-xhtml.ent"> <rfccategory="std"xmlns:xi="http://www.w3.org/2001/XInclude" docName="draft-ietf-idr-ext-opt-param-13" number="9072" ipr="trust200902"updates="4271">updates="4271" obsoletes="" submissionType="IETF" category="std" consensus="true" xml:lang="en" tocInclude="true" tocDepth="4" symRefs="true" sortRefs="true" version="3"> <!-- xml2rfc v2v3 conversion 3.7.0 --> <front> <title abbrev="Extended Optional Parameters Length">Extended Optional Parameters Length for BGP OPEN Message</title> <seriesInfo name="RFC" value="9072"/> <author fullname="Enke Chen"initials="E.C."initials="E." surname="Chen"> <organization>Palo Alto Networks</organization> <address> <email>enchen@paloaltonetworks.com</email> </address> </author> <author fullname="John Scudder"initials="J.S."initials="J." surname="Scudder"> <organization>Juniper Networks</organization> <address> <email>jgs@juniper.net</email> </address> </author><date/><date year="2021" month="June" /> <area>General</area> <workgroup>IDR</workgroup> <keyword>IDR</keyword> <keyword>BGP</keyword> <abstract> <t> 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 length field. BGPCapabilitiescapabilities are carried in this field and may foreseeably exceed 255 octets in the future, leading toconcernconcerns about this limitation. </t> <t> This document updates RFC 4271 by extending, in a backward-compatible manner, the length of the Optional Parameters inthea BGPOPEN.OPEN message. The Parameter Length field of individual Optional Parameters is also extended. </t> </abstract> </front> <middle> <sectiontitle="Introduction">numbered="true" toc="default"> <name>Introduction</name> <t> The Optional Parameters Length field in the BGP OPEN message is defined in <xreftarget="RFC4271">thetarget="RFC4271" format="default">the base BGP specification</xref> as one octet, thus limiting the Optional Parameters field in the OPEN message to 255 octets. Since BGPCapabilitiescapabilities <xreftarget="RFC5492"></xref>target="RFC5492" format="default"/> are carried in the Optional Parameters field, and new BGP capabilities continue to be introduced, the limitation is a concern for BGP development. </t> <t> This document updates <xreftarget="RFC4271"/>target="RFC4271" format="default"/> byextending, in a backward-compatible manner,extending the length of the Optional Parameters in BGPOPEN.OPEN in a backward-compatible manner. This is done by using Optional ParameterTypetype code 255 as a distinguished value,thatwhich indicates an extended Optional Parameters Length field follows and that the parsing of the BGP OPEN should be modified according to these procedures. In thiscasecase, the Parameter Length field of the individual Optional Parameters in the BGP OPEN message is also extended. </t> <sectiontitle="Requirements Language"> <t>Thenumbered="true" toc="default"> <name>Requirements Language</name> <t> The key words"MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY","<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and"OPTIONAL""<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described inBCP 14BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shownhere.</t>here. </t> </section> </section> <section anchor="protocol_extensions"title="Updatenumbered="true" toc="default"> <name>Update to RFC4271">4271</name> <t> This document reserves Optional ParameterTypetype code 255 as the "ExtendedLength" type code.Length". </t> <t> In the event that the length of the Optional Parameters in the BGP OPEN message does not exceed 255, the encodings of <xreftarget="RFC4271">thetarget="RFC4271" format="default">the base BGP specification</xref>SHOULD<bcp14>SHOULD</bcp14> be used without alteration. ConfigurationMAY<bcp14>MAY</bcp14> override this to force the extended format to be used in all cases; this might be used, forexampleexample, to test that a peer supports this specification. (In any case, an implementationMUST<bcp14>MUST</bcp14> accept an OPEN message that uses the encoding of this specification even if the length of the Optional Parameters is 255 or less.) </t> <t> However, if the length of the Optional Parameters in the BGP OPEN message does exceed 255, the OPEN messageMUST<bcp14>MUST</bcp14> be encoded according to the procedure below. </t> <figuretitle="Extendedanchor="open_fmt"> <name>Extended Encoding OPENFormat" anchor="open_fmt"> <artwork><![CDATA[Format</name> <artwork name="" type="" align="left" alt=""><![CDATA[ 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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | My Autonomous System | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Hold Time | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | BGP Identifier | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Non-Ext OP Len.|Non-Ext OP Type| Extended Opt. Parm. Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | | Optional Parameters (variable) | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]]></artwork> </figure> <t> The Non-Extended Optional Parameters Length field (Non-Ext OPLen) SHOULDLen.) <bcp14>SHOULD</bcp14> be set to 255 on transmissionandand, in anyevent MUST NOTevent, <bcp14>MUST NOT</bcp14> be set to0, and MUST0; it <bcp14>MUST</bcp14> be ignored on receipt once the use of the extended format is determined positively by inspection of the Non-Extended Optional Parameters Type (Non-Ext OP Type) field. </t> <t> The subsequent one-octet field(that(which would be the first Optional Parameter Type field in the non-extendedformat,format and is called "Non-Ext OP Type" in thefigure above) MUST<xref target="open_fmt" format="none">figure above</xref>) <bcp14>MUST</bcp14> be set to 255 on transmission. On receipt, a value of 255 for this field is the indication that the extended format is in use. </t> <t> In this extended encoding, the subsequent two-octet field, termed theExtended"Extended Optional Parameters Lengthfield,field", is an unsigned integer indicating the total length of the Optional Parameters field in octets. If the value of this field is zero, no Optional Parameters are present. </t> <t> Likewise, in thatsituationsituation, the Optional Parameters encoding is modified to be the following: </t> <figuretitle="Extended Parameters Format"anchor="parm_fmt"><artwork><![CDATA[<name>Extended Parameters Format</name> <artwork name="" type="" align="left" alt=""><![CDATA[ 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Parm. Type | Parameter Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ~ Parameter Value (variable) ~ | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ]]></artwork> </figure> <t> The rules for encoding Optional Parameters are unchanged with respect to those given in <xreftarget="RFC4271"/> other than the extension oftarget="RFC4271" format="default"/>, except that the Parameter Length field is extended to be a two-octet unsigned integer. </t> <t> In parsing an OPEN message, if the one-octet"OptionalOptional ParametersLength"Length field (labeled "Non-Ext OP Len." in <xreftarget="open_fmt"/>)target="open_fmt" format="default"/>) is non-zero, a BGP speakerMUST<bcp14>MUST</bcp14> use the value of the octet following the one-octet"OptionalOptional ParametersLength"Length field (labeled "Non-Ext OP Type" in <xreftarget="open_fmt"/>)target="open_fmt" format="default"/>) to determine both the encoding of the Optional Parameters length and the size of the"Parameter Length"Parameter Length field of individual Optional Parameters. If the value of the "Non-Ext OP Type" field is 255, then the encoding described above is used for the Optional Parameters length.OtherwiseOtherwise, the encoding defined in <xreftarget="RFC4271"></xref>target="RFC4271" format="default"/> is used. </t> </section> <sectiontitle="Backward Compatibility">numbered="true" toc="default"> <name>Backward Compatibility</name> <t> If a BGP speaker supporting this specification (a "new speaker") is peering with onewhichthat does not (an "oldspeaker")speaker"), no interoperability issues arise unless the new speaker needs to encode Optional Parameters whose length exceeds 255. In that case, it will transmit an OPEN messagewhichthat the old speaker will interpret as containing an Optional Parameter with type code 255. Sinceby definitionthe old speaker will not recognize that typecode,code by definition, the old speaker is expected to close the connection with a NOTIFICATION with anError Codeerror code ofOPEN"OPEN MessageErrorError" and anError Subcodeerror subcode ofUnsupported"Unsupported OptionalParameters,Parameters", according toSection 6.2 of<xreftarget="RFC4271"></xref>.target="RFC4271" sectionFormat="of" section="6.2"/>. </t> <t> Although the Optional ParameterTypetype code 255 is used in this specification as the indication that the extended encoding is in use, it is not a bona fide Optional Parameter type code in the usual sense and <bcp14>MUST NOT</bcp14> be used other than as described above. <!--[rfced] Please clarify if "Optional Parameter Type" (2 instances in Section 3) refers to the "Non-Parameter Type field", as described in Section 2. If so, should "Optional Parameter Type" be updated as "Non Ext OP Type"? Original (Section 2): The subsequent one-octet field (which would be the first Optional 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. Original (Section 3): Although the Optional Parameter Type Code 255 is used in this 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 MUST NOT be used other than as described above. If encountered in any position other than the first Optional Parameter Type, it MUST be treated as an unrecognized Optional Parameter and handled according to<xref target="RFC4271"/>[RFC4271], Section 6.2. Perhaps: Although the Optional Parameter type code 255 is used in this specification as the indication that the extended encoding is in use, it is not a bona fide Non-Ext OP Type in the usual sense and MUST NOT be used other than as described above. If encountered in any position other than the first Non-Ext OP Type, it MUST be treated as an unrecognized Optional Parameter and handled according to [RFC4271], Section 6.2. --> If encountered other than as the Non-Ext OP Type, it <bcp14>MUST</bcp14> be treated as an unrecognized Optional Parameter and handled according to <xref target="RFC4271" sectionFormat="comma" section="6.2"/>. </t> <t> It is not considered an error to receive an OPEN message whose Extended Optional Parameters Length value is less than or equal to 255. It is not considered a fatal error to receive an OPEN message whose (non-extended) Optional Parameters Length value is not255,255 and whose first Optional Parameter type code is 255 -- in thiscasecase, the encoding of this specificationMUST<bcp14>MUST</bcp14> be used for decoding the message. </t> </section> <sectiontitle="IANA Considerations">numbered="true" toc="default"> <name>IANA Considerations</name> <t> IANAis requested to designatehas assigned value 255 as the Extended Length type code255in theBGP"BGP OPEN Optional ParameterTypes registry as the Extended Length type code.Types" registry. </t> </section> <sectiontitle="Security Considerations">numbered="true" toc="default"> <name>Security Considerations</name> <t> This extension to BGP does not change the underlying security or confidentiality issues inherent in the existing BGP <xreftarget="RFC4272"/>.target="RFC4272" format="default"/>. </t> </section> </middle> <back> <references> <name>References</name> <references> <name>Normative References</name> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4271.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/> </references> <references> <name>Informative References</name> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5492.xml"/> <xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4272.xml"/> </references> </references> <sectiontitle="Acknowledgements">numbered="false" toc="default"> <name>Acknowledgements</name> <t> The authors would like to thankYakov Rekhter<contact fullname="Yakov Rekhter"/> andSrihari Sangli<contact fullname="Srihari Sangli"/> for discussing various options to enlarge the Optional Parameters field. We would also like to thankMatthew Bocci, Bruno Decraene, John Heasley, Jakob Heitz, Christer Holmberg, Pradosh Mohapatra, Keyur Patel<contact fullname="Matthew Bocci"/>, <contact fullname="Bruno Decraene"/>, <contact fullname="John Heasley"/>, <contact fullname="Jakob Heitz"/>, <contact fullname="Christer Holmberg"/>, <contact fullname="Pradosh Mohapatra"/>, <contact fullname="Keyur Patel"/>, andHannes Gredler<contact fullname="Hannes Gredler"/> for their valuable comments. </t> </section></middle> <back> <references title="Normative References"> &RFC2119; &RFC4271; &RFC8174; </references> <references title="Informative References"> &RFC5492; &RFC4272; </references></back> </rfc>