idnits 2.17.1 draft-pardue-server-ush-00.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 : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (April 1, 2018) is 2216 days in the past. Is this intentional? Checking references for intended status: Informational ---------------------------------------------------------------------------- == Unused Reference: 'QUIC-TRANSPORT' is defined on line 457, but no explicit reference was found in the text == Outdated reference: A later version (-34) exists of draft-ietf-quic-http-08 == Outdated reference: A later version (-34) exists of draft-ietf-quic-transport-08 ** Obsolete normative reference: RFC 7540 (Obsoleted by RFC 9113) Summary: 1 error (**), 0 flaws (~~), 4 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group L. Pardue 3 Internet-Draft April 1, 2018 4 Intended status: Informational 5 Expires: October 2, 2018 7 HTTP Server *ush 8 draft-pardue-server-ush-00 10 Abstract 12 This document defines a suite of HTTP semantic extensions, named the 13 *ush family, that propels HTTP towards new application use cases. 14 HTTP/QUIC clients opt-in to features via an HTTP setting. 16 Status of This Memo 18 This Internet-Draft is submitted in full conformance with the 19 provisions of BCP 78 and BCP 79. 21 Internet-Drafts are working documents of the Internet Engineering 22 Task Force (IETF). Note that other groups may also distribute 23 working documents as Internet-Drafts. The list of current Internet- 24 Drafts is at http://datatracker.ietf.org/drafts/current/. 26 Internet-Drafts are draft documents valid for a maximum of six months 27 and may be updated, replaced, or obsoleted by other documents at any 28 time. It is inappropriate to use Internet-Drafts as reference 29 material or to cite them other than as "work in progress." 31 This Internet-Draft will expire on September 23, 2018. 33 Copyright Notice 35 Copyright (c) 2018 IETF Trust and the persons identified as the 36 document authors. All rights reserved. 38 This document is subject to BCP 78 and the IETF Trust's Legal 39 Provisions Relating to IETF Documents 40 (http://trustee.ietf.org/license-info) in effect on the date of 41 publication of this document. Please review these documents 42 carefully, as they describe your rights and restrictions with respect 43 to this document. Code Components extracted from this document must 44 include Simplified BSD License text as described in Section 4.e of 45 the Trust Legal Provisions and are provided without warranty as 46 described in the Simplified BSD License. 48 Table of Contents 50 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 2 51 1.1. Notational Conventions . . . . . . . . . . . . . . . . . 3 52 2. The SETTINGS_ENABLE_CUSH Parameter . . . . . . . . . . . . . 3 53 3. The SETTINGS_ENABLE_DUSH Parameter . . . . . . . . . . . . . 3 54 4. The SETTINGS_ENABLE_GUSH Parameter . . . . . . . . . . . . . 3 55 5. The SETTINGS_ENABLE_HUSH Parameter . . . . . . . . . . . . . 4 56 6. The SETTINGS_ENABLE_KUSH Parameter . . . . . . . . . . . . . 4 57 7. The SETTINGS_ENABLE_LUSH Parameter . . . . . . . . . . . . . 4 58 8. The SETTINGS_ENABLE_MUSH Parameter . . . . . . . . . . . . . 4 59 9. The SETTINGS_ENABLE_RUSH Parameter . . . . . . . . . . . . . 5 60 10. The SETTINGS_ENABLE_TUSH Parameter . . . . . . . . . . . . . 5 61 11. The SETTINGS_ENABLE_BLUSH Parameter . . . . . . . . . . . . . 5 62 12. The SETTINGS_ENABLE_FLUSH Parameter . . . . . . . . . . . . . 5 63 13. The SETTINGS_ENABLE_PLUSH Parameter . . . . . . . . . . . . . 6 64 14. The SETTINGS_ENABLE_SLUSH Parameter . . . . . . . . . . . . . 6 65 15. The SETTINGS_ENABLE_SMUSH Parameter . . . . . . . . . . . . . 6 66 16. Security Considerations . . . . . . . . . . . . . . . . . . . 6 67 17. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 6 68 17.1. Registration of SETTINGS_ENABLE_CUSH parameter . . . . . 6 69 17.2. Registration of SETTINGS_ENABLE_DUSH parameter . . . . . 7 70 17.3. Registration of SETTINGS_ENABLE_GUSH parameter . . . . . 7 71 17.4. Registration of SETTINGS_ENABLE_HUSH parameter . . . . . 7 72 17.5. Registration of SETTINGS_ENABLE_KUSH parameter . . . . . 7 73 17.6. Registration of SETTINGS_ENABLE_LUSH parameter . . . . . 8 74 17.7. Registration of SETTINGS_ENABLE_MUSH parameter . . . . . 8 75 17.8. Registration of SETTINGS_ENABLE_RUSH parameter . . . . . 8 76 17.9. Registration of SETTINGS_ENABLE_TUSH parameter . . . . . 8 77 17.10. Registration of SETTINGS_ENABLE_BLUSH parameter . . . . 9 78 17.11. Registration of SETTINGS_ENABLE_FLUSH parameter . . . . 9 79 17.12. Registration of SETTINGS_ENABLE_PLUSH parameter . . . . 9 80 17.13. Registration of SETTINGS_ENABLE_SLUSH parameter . . . . 10 81 17.14. Registration of SETTINGS_ENABLE_SMUSH parameter . . . . 10 82 18. Normative References . . . . . . . . . . . . . . . . . . . . 10 83 Appendix A. Acknowledgements . . . . . . . . . . . . . . . . . . 11 84 Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 11 86 1. Introduction 88 HTTP server push is a feature of HTTP/2 [RFC7540] and HTTP/QUIC 89 [QUIC-HTTP] that allows a server to pre-emptively send HTTP resources 90 to a client in association with a previous client-initiated request. 91 Server push broke ground for new HTTP semantics that offer new HTTP 92 application use cases; this has kicked the door down for additional 93 semantics. 95 Much of the success of HTTP Server Push can be attributed to its 96 syllable count and structure. The phrase rolls off the tongue with 97 clear and concise meaning. To capitalise on this, the document 98 defines a suite of HTTP semantic extensions with identical syllabic 99 structure: the *ush family (pronounced aster-ush). Members of the 100 *ush family enhance Server Push in various ways. 102 For each member of the *ush family, this document adds a new HTTP/2 103 SETTINGS Parameter (to those defined by [RFC7540] Section X.Y.Z), and 104 a new HTTP/QUIC SETTINGS Parameter to those defined by [QUIC-HTTP] 105 Section 5.2.5. 107 1.1. Notational Conventions 109 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 110 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 111 "OPTIONAL" in this document are to be interpreted as described in BCP 112 14 [RFC2119] [RFC8174] when, and only when, they appear in all 113 capitals, as shown here. 115 2. The SETTINGS_ENABLE_CUSH Parameter 117 The new parameter is SETTINGS_ENABLE_CUSH (type = 0xfab01). This 118 setting can be used to enable Server Cush, a more luxurious (cushy) 119 form of Server Push. The value of the parameter is an integer that 120 MUST be 0 or 1. Any value other than 0 or 1 MUST be treated as a 121 connection error of type PROTOCOL_ERROR. 123 The initial value is 0, which indicates that "cattle class" Server 124 Push is preferred. 126 3. The SETTINGS_ENABLE_DUSH Parameter 128 The new parameter is SETTINGS_ENABLE_DUSH (type = 0xfab02). This 129 setting can be used to enable Server Dush, a more violent form of 130 Server Push. The value of the parameter is an integer that MUST be 0 131 or 1. Any value other than 0 or 1 MUST be treated as a connection 132 error of type PROTOCOL_ERROR. 134 The initial value is 0, which indicates that "care bear" Server Push 135 is preferred. 137 4. The SETTINGS_ENABLE_GUSH Parameter 139 The new parameter is SETTINGS_ENABLE_GUSH (type = 0xfab03). This 140 setting can be used to enable Server Gush, a mode of Server Push that 141 supports sudden overflows. The value of the parameter is an integer 142 that MUST be 0 or 1. Any value other than 0 or 1 MUST be treated as 143 a connection error of type PROTOCOL_ERROR. 145 The initial value is 0, which indicates that "emotionally reserved" 146 Server Push is preferred. 148 5. The SETTINGS_ENABLE_HUSH Parameter 150 The new parameter is SETTINGS_ENABLE_HUSH (type = 0xfab04). This 151 setting can be used to enable Server Hush, semantically equivalent to 152 SETTINGS_ENABLE_PUSH but more polite. The value of the parameter is 153 an integer that MUST be 0 or 1. Any value other than 0 or 1 MUST be 154 treated as a connection error of type PROTOCOL_ERROR. 156 The initial value is 0, which indicates that Server Push is not 157 permitted. 159 6. The SETTINGS_ENABLE_KUSH Parameter 161 The new parameter is SETTINGS_ENABLE_KUSH (type = 0xfab05). This 162 setting can be used to enable Server Kush, a more mellow form of 163 Server Push whose legality varies across territories. The value of 164 the parameter is an integer that MUST be 0 or 1. Any value other 165 than 0 or 1 MUST be treated as a connection error of type 166 PROTOCOL_ERROR. 168 The initial value is 0, which indicates that "legal" Server Push is 169 preferred. 171 7. The SETTINGS_ENABLE_LUSH Parameter 173 The new parameter is SETTINGS_ENABLE_LUSH (type = 0xfab06). This 174 setting can be used to enable Server Lush, which permits only the 175 push of resources related to vegetation. The value of the parameter 176 is an integer that MUST be 0 or 1. Any value other than 0 or 1 MUST 177 be treated as a connection error of type PROTOCOL_ERROR. 179 The initial value is 0, which indicates that "eco-broad" Server Push 180 is preferred. 182 8. The SETTINGS_ENABLE_MUSH Parameter 184 The new parameter is SETTINGS_ENABLE_MUSH (type = 0xfab07). Mush has 185 negative connotations so this setting is reserved and MUST NOT be 186 used. 188 9. The SETTINGS_ENABLE_RUSH Parameter 190 The new parameter is SETTINGS_ENABLE_RUSH (type = 0xfab08). This 191 setting can be used to enable Server Rush, a mode that enables a 192 server to push resources more quickly. The value of the parameter is 193 an integer that MUST be 0 or 1. Any value other than 0 or 1 MUST be 194 treated as a connection error of type PROTOCOL_ERROR. 196 The initial value is 0, which indicates that "lazy" Server Rush is 197 preferred. 199 10. The SETTINGS_ENABLE_TUSH Parameter 201 The new parameter is SETTINGS_ENABLE_TUSH (type = 0xfab09). This 202 setting can be used to enable Server Tush, a mode where the client 203 will express dissaproval if the server takes too long to fulfill push 204 promises. The value of the parameter is an integer that MUST be 0 or 205 1. Any value other than 0 or 1 MUST be treated as a connection error 206 of type PROTOCOL_ERROR. 208 The initial value is 0, which indicates that "polite to the point" 209 Server Push is preferred. 211 11. The SETTINGS_ENABLE_BLUSH Parameter 213 The new parameter is SETTINGS_ENABLE_BLUSH (type = 0xfab0a). This 214 setting can be used to enable Server Blush, a mode where the server 215 should feel extra shame if it pushes resources that the client did 216 not want. The value of the parameter is an integer that MUST be 0 or 217 1. Any value other than 0 or 1 MUST be treated as a connection error 218 of type PROTOCOL_ERROR. 220 The initial value is 0, which indicates that "shameless" Server Push 221 is preferred. 223 12. The SETTINGS_ENABLE_FLUSH Parameter 225 The new parameter is SETTINGS_ENABLE_FLUSH (type = 0xfab0b). This 226 setting can be used to enable Server Flush, a mode that respects the 227 Coriolis effect across Northen and Southern hemispheres. The value 228 of the parameter is an integer that MUST be 0 or 1. Any value other 229 than 0 or 1 MUST be treated as a connection error of type 230 PROTOCOL_ERROR. 232 The initial value is 0, which indicates that "universal frame of 233 reference" Server Push is preferred. 235 13. The SETTINGS_ENABLE_PLUSH Parameter 237 The new parameter is SETTINGS_ENABLE_PLUSH (type = 0xfab0c). This 238 setting is a synonym of SETTINGS_ENABLE_CUSH (Section 2). 240 14. The SETTINGS_ENABLE_SLUSH Parameter 242 The new parameter is SETTINGS_ENABLE_SLUSH (type = 0xfab0d). This 243 setting can be used to enable Server Slush, a mode that is overly 244 sentimental. This is most appropriate when re-establishing 245 connections to servers. The value of the parameter is an integer 246 that MUST be 0 or 1. Any value other than 0 or 1 MUST be treated as 247 a connection error of type PROTOCOL_ERROR. 249 The initial value is 0, which indicates that "cold hearted" Server 250 Push is preferred. 252 15. The SETTINGS_ENABLE_SMUSH Parameter 254 The new parameter is SETTINGS_ENABLE_SMUSH (type = 0xfab0e). This 255 setting can be used to enable Server Mush, a logical union between 256 SETTINGS_ENABLE_GUSH and SETTINGS_ENABLE_SLUSH. The value of the 257 parameter is an integer that MUST be 0 or 1. Any value other than 0 258 or 1 MUST be treated as a connection error of type PROTOCOL_ERROR. 260 The initial value is 0, which indicates that "emotionally reserved 261 and cold hearted" Server Push is preferred. 263 16. Security Considerations 265 There are no additional consideration beyond those presented in 266 [RFC7540] and [QUIC-HTTP]. 268 17. IANA Considerations 270 17.1. Registration of SETTINGS_ENABLE_CUSH parameter 272 This document establishes an entry for the HTTP/2 Settings Registry 273 that is established by [RFC7540]. This document establishes an entry 274 for the HTTP/QUIC Settings Registry that is established by 275 [QUIC-HTTP]. 277 Name: SETTINGS_ENABLE_CUSH 279 Code: 0xfab01 281 Specification: This document 283 17.2. Registration of SETTINGS_ENABLE_DUSH parameter 285 This document establishes an entry for the HTTP/2 Settings Registry 286 that is established by [RFC7540]. This document establishes an entry 287 for the HTTP/QUIC Settings Registry that is established by 288 [QUIC-HTTP]. 290 Name: SETTINGS_ENABLE_DUSH 292 Code: 0xfab02 294 Specification: This document 296 17.3. Registration of SETTINGS_ENABLE_GUSH parameter 298 This document establishes an entry for the HTTP/2 Settings Registry 299 that is established by [RFC7540]. This document establishes an entry 300 for the HTTP/QUIC Settings Registry that is established by 301 [QUIC-HTTP]. 303 Name: SETTINGS_ENABLE_GUSH 305 Code: 0xfab03 307 Specification: This document 309 17.4. Registration of SETTINGS_ENABLE_HUSH parameter 311 This document establishes an entry for the HTTP/2 Settings Registry 312 that is established by [RFC7540]. This document establishes an entry 313 for the HTTP/QUIC Settings Registry that is established by 314 [QUIC-HTTP]. 316 Name: SETTINGS_ENABLE_HUSH 318 Code: 0xfab04 320 Specification: This document 322 17.5. Registration of SETTINGS_ENABLE_KUSH parameter 324 This document establishes an entry for the HTTP/2 Settings Registry 325 that is established by [RFC7540]. This document establishes an entry 326 for the HTTP/QUIC Settings Registry that is established by 327 [QUIC-HTTP]. 329 Name: SETTINGS_ENABLE_KUSH 330 Code: 0xfab05 332 Specification: This document 334 17.6. Registration of SETTINGS_ENABLE_LUSH parameter 336 This document establishes an entry for the HTTP/2 Settings Registry 337 that is established by [RFC7540]. This document establishes an entry 338 for the HTTP/QUIC Settings Registry that is established by 339 [QUIC-HTTP]. 341 Name: SETTINGS_ENABLE_LUSH 343 Code: 0xfab06 345 Specification: This document 347 17.7. Registration of SETTINGS_ENABLE_MUSH parameter 349 This document establishes an entry for the HTTP/2 Settings Registry 350 that is established by [RFC7540]. This document establishes an entry 351 for the HTTP/QUIC Settings Registry that is established by 352 [QUIC-HTTP]. 354 Name: SETTINGS_ENABLE_MUSH 356 Code: 0xfab07 358 Specification: This document 360 17.8. Registration of SETTINGS_ENABLE_RUSH parameter 362 This document establishes an entry for the HTTP/2 Settings Registry 363 that is established by [RFC7540]. This document establishes an entry 364 for the HTTP/QUIC Settings Registry that is established by 365 [QUIC-HTTP]. 367 Name: SETTINGS_ENABLE_RUSH 369 Code: 0xfab08 371 Specification: This document 373 17.9. Registration of SETTINGS_ENABLE_TUSH parameter 375 This document establishes an entry for the HTTP/2 Settings Registry 376 that is established by [RFC7540]. This document establishes an entry 377 for the HTTP/QUIC Settings Registry that is established by 378 [QUIC-HTTP]. 380 Name: SETTINGS_ENABLE_TUSH 382 Code: 0xfab09 384 Specification: This document 386 17.10. Registration of SETTINGS_ENABLE_BLUSH parameter 388 This document establishes an entry for the HTTP/2 Settings Registry 389 that is established by [RFC7540]. This document establishes an entry 390 for the HTTP/QUIC Settings Registry that is established by 391 [QUIC-HTTP]. 393 Name: SETTINGS_ENABLE_BLUSH 395 Code: 0xfab0a 397 Specification: This document 399 17.11. Registration of SETTINGS_ENABLE_FLUSH parameter 401 This document establishes an entry for the HTTP/2 Settings Registry 402 that is established by [RFC7540]. This document establishes an entry 403 for the HTTP/QUIC Settings Registry that is established by 404 [QUIC-HTTP]. 406 Name: SETTINGS_ENABLE_FLUSH 408 Code: 0xfab0b 410 Specification: This document 412 17.12. Registration of SETTINGS_ENABLE_PLUSH parameter 414 This document establishes an entry for the HTTP/2 Settings Registry 415 that is established by [RFC7540]. This document establishes an entry 416 for the HTTP/QUIC Settings Registry that is established by 417 [QUIC-HTTP]. 419 Name: SETTINGS_ENABLE_PLUSH 421 Code: 0xfab0c 423 Specification: This document 425 17.13. Registration of SETTINGS_ENABLE_SLUSH parameter 427 This document establishes an entry for the HTTP/2 Settings Registry 428 that is established by [RFC7540]. This document establishes an entry 429 for the HTTP/QUIC Settings Registry that is established by 430 [QUIC-HTTP]. 432 Name: SETTINGS_ENABLE_SLUSH 434 Code: 0xfab0d 436 Specification: This document 438 17.14. Registration of SETTINGS_ENABLE_SMUSH parameter 440 This document establishes an entry for the HTTP/2 Settings Registry 441 that is established by [RFC7540]. This document establishes an entry 442 for the HTTP/QUIC Settings Registry that is established by 443 [QUIC-HTTP]. 445 Name: SETTINGS_ENABLE_SMUSH 447 Code: 0xfab0e 449 Specification: This document 451 18. Normative References 453 [QUIC-HTTP] 454 Bishop, M., Ed., "Hypertext Transfer Protocol (HTTP) over 455 QUIC", draft-ietf-quic-http-08 (work in progress). 457 [QUIC-TRANSPORT] 458 Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based 459 Multiplexed and Secure Transport", draft-ietf-quic- 460 transport-08 (work in progress). 462 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 463 Requirement Levels", BCP 14, RFC 2119, 464 DOI 10.17487/RFC2119, March 1997, . 467 [RFC7540] Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext 468 Transfer Protocol Version 2 (HTTP/2)", RFC 7540, 469 DOI 10.17487/RFC7540, May 2015, . 472 [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 473 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, 474 May 2017, . 476 Appendix A. Acknowledgements 478 The entire Internet community. 480 Author's Address 482 Lucas Pardue 484 Email: lucaspardue.24.7@gmail.com