idnits 2.17.1 draft-ietf-idr-ext-opt-param-05.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- -- The draft header indicates that this document updates RFC4271, but the abstract doesn't seem to directly say this. It does mention RFC4271 though, so this could be OK. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year (Using the creation date from RFC4271, updated by this document, for RFC5378 checks: 2006-01-13) -- The document seems to lack a disclaimer for pre-RFC5378 work, but may have content which was first submitted before 10 November 2008. If you have contacted all the original authors and they are all willing to grant the BCP78 rights to the IETF Trust, then this is fine, and you can ignore this comment. If not, you may need to add the pre-RFC5378 disclaimer. (See the Legal Provisions document at https://trustee.ietf.org/license-info for more information.) -- The document date (June 28, 2016) is 2852 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) No issues found here. Summary: 0 errors (**), 0 flaws (~~), 1 warning (==), 3 comments (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Internet Engineering Task Force E. Chen 3 Internet-Draft Cisco Systems 4 Updates: 4271 (if approved) J. Scudder 5 Intended status: Standards Track Juniper Networks 6 Expires: December 30, 2016 June 28, 2016 8 Extended Optional Parameters Length for BGP OPEN Message 9 draft-ietf-idr-ext-opt-param-05 11 Abstract 13 The Optional Parameters in the BGP OPEN message as defined in the 14 base BGP specification are limited to 255 octets due to a one-octet 15 length field. BGP Capabilities are carried in this field and may 16 foreseeably exceed 255 octets in the future, leading to concern about 17 this limitation. 19 In this document we update RFC 4271 by extending the BGP OPEN length 20 field in a backward-compatible manner. The Parameter Length field of 21 individual Optional Parameters is similarly extended. 23 Status of This Memo 25 This Internet-Draft is submitted in full conformance with the 26 provisions of BCP 78 and BCP 79. 28 Internet-Drafts are working documents of the Internet Engineering 29 Task Force (IETF). Note that other groups may also distribute 30 working documents as Internet-Drafts. The list of current Internet- 31 Drafts is at http://datatracker.ietf.org/drafts/current/. 33 Internet-Drafts are draft documents valid for a maximum of six months 34 and may be updated, replaced, or obsoleted by other documents at any 35 time. It is inappropriate to use Internet-Drafts as reference 36 material or to cite them other than as "work in progress." 38 This Internet-Draft will expire on December 30, 2016. 40 Copyright Notice 42 Copyright (c) 2016 IETF Trust and the persons identified as the 43 document authors. All rights reserved. 45 This document is subject to BCP 78 and the IETF Trust's Legal 46 Provisions Relating to IETF Documents 47 (http://trustee.ietf.org/license-info) in effect on the date of 48 publication of this document. Please review these documents 49 carefully, as they describe your rights and restrictions with respect 50 to this document. Code Components extracted from this document must 51 include Simplified BSD License text as described in Section 4.e of 52 the Trust Legal Provisions and are provided without warranty as 53 described in the Simplified BSD License. 55 1. Introduction 57 The Optional Parameters Length field in the BGP OPEN message is 58 defined in the base BGP specification [RFC4271] as one octet, thus 59 limiting the Optional Parameters field in the OPEN message to 255 60 octets. As BGP Capabilities [RFC5492] are carried in the Optional 61 Parameters field, and new BGP capabilities continue to be introduced, 62 the limitation is becoming a concern for BGP development. 64 In this document we update [RFC4271] by extending the BGP OPEN length 65 field in a backward-compatible manner. The Parameter Length field of 66 individual Optional Parameters is similarly extended. This is done 67 by using Optional Parameters Length of 255 combined with Optional 68 Parameter Type 255 as a distinguished value pair, which indicates 69 that an extended Optional Parameters Length field follows. In this 70 case the Parameter Length field of the Optional Parameters in the BGP 71 OPEN message is also extended. 73 1.1. Requirements Language 75 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 76 "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this 77 document are to be interpreted as described in RFC 2119 [RFC2119]. 79 2. Protocol Extensions 81 This document reserves Optional Parameter Type code 255 as the 82 "Extended Length" type code. 84 In the event that the length of Optional Parameters in the BGP OPEN 85 message does not exceed 255, the encodings of the base BGP 86 specification [RFC4271] MUST be used without alteration. 88 However, if the length of Optional Parameters is greater than 255, an 89 extended encoding is used. The (non-extended) length field is set to 90 255, as is the subsequent octet that in the non-extended format would 91 be the first Optional Parameter Type. The subsequent two octets 92 carry the actual length. In addition, the "Parameter Length" field 93 of each Optional Parameter is enlarged to two octets. Other than the 94 larger sizes of the given fields, there is no change to the BGP OPEN 95 message defined in [RFC4271]. 97 When receiving an OPEN, a BGP speaker determines the extended 98 encoding is in use if the first Optional Parameter Type field is 255. 99 In this case, the BGP speaker MUST ignore the non-extended Optional 100 Parameters Length field, and must instead rely on the Extended 101 Optional Parameters Length field. 103 Accordingly, when the length of Optional Parameters in the BGP OPEN 104 message is greater than 255, the OPEN message format is modified as 105 follows, repurposing the Optional Parameters Length field as well as 106 the first Optional Parameter Type field to indicate the use of the 107 extended format: 109 0 1 2 3 110 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 111 +-+-+-+-+-+-+-+-+ 112 | Version | 113 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 114 | My Autonomous System | 115 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 116 | Hold Time | 117 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 118 | BGP Identifier | 119 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 120 |Non-Ext OP Len.|Non-Ext OP Type| Extended Opt. Parm. Length | 121 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 122 | | 123 | Optional Parameters (variable) | 124 | | 125 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 127 The non-extended Optional Parameters Length field MUST be set to 255 128 on transmission, and MUST be ignored on receipt once the use of the 129 extended format is determined. 131 The subsequent one-octet field, that in the non-extended format would 132 be the first Optional Parameter Type field, MUST be set to 255 on 133 transmission. On receipt, a value of 255 for this field is the 134 indication that the extended format is in use. 136 In this extended encoding, the subsequent two-octet field, termed the 137 Extended Optional Parameters Length field, is an unsigned integer 138 indicating the total length of the Optional Parameters field in 139 octets. If the value of this field is zero, no Optional Parameters 140 are present (this would never be expected to happen with the extended 141 encoding, however). 143 Likewise, in that situation the Optional Parameters encoding is 144 modified to be the following: 146 0 1 2 147 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 148 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 149 | Parm. Type | Parameter Length | 150 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 151 ~ Parameter Value (variable) ~ 152 | | 153 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ 155 The rules for encoding Optional Parameters are unchanged with respect 156 to those given in [RFC4271] other than the extension of the Parameter 157 Length field to be a two-octet unsigned integer. 159 In parsing an OPEN message, a BGP speaker MUST use the value of the 160 one-octet "Optional Parameters Length" field and the value of the 161 octet following it to determine the encoding of the Optional 162 Parameters length, as well as the size of the "Parameter Length" 163 field of the Optional Parameters. If both values are 255, then the 164 four-octet encoding described above is used for the Optional 165 Parameters length. Otherwise the encoding defined in [RFC4271] is 166 used. 168 This encoding is chosen for backward compatibility reasons -- a BGP 169 speaker which has not been upgraded to support this specification may 170 legitimately send Optional Parameters whose length equals exactly 171 255, thus the Optional Parameters Length field alone is insufficient 172 as an indicator. However, such a speaker would never legitimately 173 send an Optional Parameter whose type code is 255, since that value 174 has been reserved by this specification. 176 3. Errors 178 If a BGP speaker supporting this specification (a "new speaker") is 179 peering with one which does not (an "old speaker") no 180 interoperability issues arise unless the new speaker needs to encode 181 Optional Parameters whose length exceeds 255. In that case, it will 182 transmit an OPEN message which the old speaker will interpret as 183 containing an Optional Parameter with type code 255. Since by 184 definition the old speaker will not recognize that type code, the old 185 speaker may be expected to close the connection with a NOTIFICATION 186 with an Error Code of OPEN Message Error and an Error Subcode of 187 Unsupported Optional Parameters, according to Section 6.2 of 188 [RFC4271]. 190 Although the above is the most likely error to be sent, it is not 191 impossible that the old speaker might detect some other error first, 192 such as a length error, depending on the details of the 193 implementation. In no case would the peering be expected to 194 establish successfully; the only question is which NOTIFICATION would 195 be generated. 197 We note that in any case, such a peering could not succeed, since by 198 definition the extended length encoding would not be used by the new 199 speaker unless the basic encoding was insufficient. 201 Although the Optional Parameter Type code 255 is used in this 202 specification as the indication that the extended encoding is in use, 203 it is not a bonafide Optional Parameter Type in the usual sense, and 204 MUST NOT be used other than as described above. If encountered as an 205 actual Optional Parameter Type code, it MUST be treated as an 206 unrecognized Optional Parameter and handled according to [RFC4271] 207 Section 6.2. 209 4. IANA Considerations 211 IANA is requested to designate BGP OPEN Optional Parameter Type code 212 255 as the Extended Length type code. 214 5. Security Considerations 216 This extension to BGP does not change the underlying security issues 217 inherent in the existing BGP [RFC4272]. 219 6. Acknowledgements 221 The authors would like to thank Yakov Rekhter and Srihari Sangli for 222 discussing various options to enlarge the Optional Parameters field. 223 We would also like to thank Matthew Bocci, Jakob Heitz, Pradosh 224 Mohapatra, Keyur Patel and Hannes Gredler for their valuable 225 comments. 227 7. References 229 7.1. Normative References 231 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 232 Requirement Levels", BCP 14, RFC 2119, 233 DOI 10.17487/RFC2119, March 1997, 234 . 236 [RFC4271] Rekhter, Y., Ed., Li, T., Ed., and S. Hares, Ed., "A 237 Border Gateway Protocol 4 (BGP-4)", RFC 4271, 238 DOI 10.17487/RFC4271, January 2006, 239 . 241 7.2. Informative References 243 [RFC4272] Murphy, S., "BGP Security Vulnerabilities Analysis", 244 RFC 4272, DOI 10.17487/RFC4272, January 2006, 245 . 247 [RFC5492] Scudder, J. and R. Chandra, "Capabilities Advertisement 248 with BGP-4", RFC 5492, DOI 10.17487/RFC5492, February 249 2009, . 251 Authors' Addresses 253 Enke Chen 254 Cisco Systems 256 Email: enkechen@cisco.com 258 John Scudder 259 Juniper Networks 261 Email: jgs@juniper.net