| draft-ietf-quic-http-26.txt | draft-ietf-quic-http-27.txt | |||
|---|---|---|---|---|
| QUIC M. Bishop, Ed. | QUIC M. Bishop, Ed. | |||
| Internet-Draft Akamai | Internet-Draft Akamai | |||
| Intended status: Standards Track 21 February 2020 | Intended status: Standards Track 21 February 2020 | |||
| Expires: 24 August 2020 | Expires: 24 August 2020 | |||
| Hypertext Transfer Protocol Version 3 (HTTP/3) | Hypertext Transfer Protocol Version 3 (HTTP/3) | |||
| draft-ietf-quic-http-26 | draft-ietf-quic-http-27 | |||
| Abstract | Abstract | |||
| The QUIC transport protocol has several features that are desirable | The QUIC transport protocol has several features that are desirable | |||
| in a transport for HTTP, such as stream multiplexing, per-stream flow | in a transport for HTTP, such as stream multiplexing, per-stream flow | |||
| control, and low-latency connection establishment. This document | control, and low-latency connection establishment. This document | |||
| describes a mapping of HTTP semantics over QUIC. This document also | describes a mapping of HTTP semantics over QUIC. This document also | |||
| identifies HTTP/2 features that are subsumed by QUIC, and describes | identifies HTTP/2 features that are subsumed by QUIC, and describes | |||
| how HTTP/2 extensions can be ported to HTTP/3. | how HTTP/2 extensions can be ported to HTTP/3. | |||
| skipping to change at page 3, line 41 ¶ | skipping to change at page 3, line 41 ¶ | |||
| Appendix A. Considerations for Transitioning from HTTP/2 . . . . 48 | Appendix A. Considerations for Transitioning from HTTP/2 . . . . 48 | |||
| A.1. Streams . . . . . . . . . . . . . . . . . . . . . . . . . 48 | A.1. Streams . . . . . . . . . . . . . . . . . . . . . . . . . 48 | |||
| A.2. HTTP Frame Types . . . . . . . . . . . . . . . . . . . . 49 | A.2. HTTP Frame Types . . . . . . . . . . . . . . . . . . . . 49 | |||
| A.2.1. Prioritization Differences . . . . . . . . . . . . . 49 | A.2.1. Prioritization Differences . . . . . . . . . . . . . 49 | |||
| A.2.2. Header Compression Differences . . . . . . . . . . . 49 | A.2.2. Header Compression Differences . . . . . . . . . . . 49 | |||
| A.2.3. Guidance for New Frame Type Definitions . . . . . . . 50 | A.2.3. Guidance for New Frame Type Definitions . . . . . . . 50 | |||
| A.2.4. Mapping Between HTTP/2 and HTTP/3 Frame Types . . . . 50 | A.2.4. Mapping Between HTTP/2 and HTTP/3 Frame Types . . . . 50 | |||
| A.3. HTTP/2 SETTINGS Parameters . . . . . . . . . . . . . . . 51 | A.3. HTTP/2 SETTINGS Parameters . . . . . . . . . . . . . . . 51 | |||
| A.4. HTTP/2 Error Codes . . . . . . . . . . . . . . . . . . . 52 | A.4. HTTP/2 Error Codes . . . . . . . . . . . . . . . . . . . 52 | |||
| Appendix B. Change Log . . . . . . . . . . . . . . . . . . . . . 53 | Appendix B. Change Log . . . . . . . . . . . . . . . . . . . . . 53 | |||
| B.1. Since draft-ietf-quic-http-25 . . . . . . . . . . . . . . 53 | B.1. Since draft-ietf-quic-http-26 . . . . . . . . . . . . . . 53 | |||
| B.2. Since draft-ietf-quic-http-24 . . . . . . . . . . . . . . 53 | B.2. Since draft-ietf-quic-http-25 . . . . . . . . . . . . . . 53 | |||
| B.3. Since draft-ietf-quic-http-23 . . . . . . . . . . . . . . 54 | B.3. Since draft-ietf-quic-http-24 . . . . . . . . . . . . . . 54 | |||
| B.4. Since draft-ietf-quic-http-22 . . . . . . . . . . . . . . 54 | B.4. Since draft-ietf-quic-http-23 . . . . . . . . . . . . . . 54 | |||
| B.5. Since draft-ietf-quic-http-21 . . . . . . . . . . . . . . 55 | B.5. Since draft-ietf-quic-http-22 . . . . . . . . . . . . . . 54 | |||
| B.6. Since draft-ietf-quic-http-20 . . . . . . . . . . . . . . 55 | B.6. Since draft-ietf-quic-http-21 . . . . . . . . . . . . . . 55 | |||
| B.7. Since draft-ietf-quic-http-19 . . . . . . . . . . . . . . 56 | B.7. Since draft-ietf-quic-http-20 . . . . . . . . . . . . . . 55 | |||
| B.8. Since draft-ietf-quic-http-18 . . . . . . . . . . . . . . 56 | B.8. Since draft-ietf-quic-http-19 . . . . . . . . . . . . . . 56 | |||
| B.9. Since draft-ietf-quic-http-17 . . . . . . . . . . . . . . 56 | B.9. Since draft-ietf-quic-http-18 . . . . . . . . . . . . . . 56 | |||
| B.10. Since draft-ietf-quic-http-16 . . . . . . . . . . . . . . 56 | B.10. Since draft-ietf-quic-http-17 . . . . . . . . . . . . . . 56 | |||
| B.11. Since draft-ietf-quic-http-15 . . . . . . . . . . . . . . 57 | B.11. Since draft-ietf-quic-http-16 . . . . . . . . . . . . . . 57 | |||
| B.12. Since draft-ietf-quic-http-14 . . . . . . . . . . . . . . 57 | B.12. Since draft-ietf-quic-http-15 . . . . . . . . . . . . . . 57 | |||
| B.13. Since draft-ietf-quic-http-13 . . . . . . . . . . . . . . 57 | B.13. Since draft-ietf-quic-http-14 . . . . . . . . . . . . . . 57 | |||
| B.14. Since draft-ietf-quic-http-12 . . . . . . . . . . . . . . 57 | B.14. Since draft-ietf-quic-http-13 . . . . . . . . . . . . . . 57 | |||
| B.15. Since draft-ietf-quic-http-11 . . . . . . . . . . . . . . 58 | B.15. Since draft-ietf-quic-http-12 . . . . . . . . . . . . . . 58 | |||
| B.16. Since draft-ietf-quic-http-10 . . . . . . . . . . . . . . 58 | B.16. Since draft-ietf-quic-http-11 . . . . . . . . . . . . . . 58 | |||
| B.17. Since draft-ietf-quic-http-09 . . . . . . . . . . . . . . 58 | B.17. Since draft-ietf-quic-http-10 . . . . . . . . . . . . . . 58 | |||
| B.18. Since draft-ietf-quic-http-08 . . . . . . . . . . . . . . 58 | B.18. Since draft-ietf-quic-http-09 . . . . . . . . . . . . . . 58 | |||
| B.19. Since draft-ietf-quic-http-07 . . . . . . . . . . . . . . 58 | B.19. Since draft-ietf-quic-http-08 . . . . . . . . . . . . . . 59 | |||
| B.20. Since draft-ietf-quic-http-06 . . . . . . . . . . . . . . 59 | B.20. Since draft-ietf-quic-http-07 . . . . . . . . . . . . . . 59 | |||
| B.21. Since draft-ietf-quic-http-05 . . . . . . . . . . . . . . 59 | B.21. Since draft-ietf-quic-http-06 . . . . . . . . . . . . . . 59 | |||
| B.22. Since draft-ietf-quic-http-04 . . . . . . . . . . . . . . 59 | B.22. Since draft-ietf-quic-http-05 . . . . . . . . . . . . . . 59 | |||
| B.23. Since draft-ietf-quic-http-03 . . . . . . . . . . . . . . 59 | B.23. Since draft-ietf-quic-http-04 . . . . . . . . . . . . . . 59 | |||
| B.24. Since draft-ietf-quic-http-02 . . . . . . . . . . . . . . 59 | B.24. Since draft-ietf-quic-http-03 . . . . . . . . . . . . . . 59 | |||
| B.25. Since draft-ietf-quic-http-01 . . . . . . . . . . . . . . 59 | B.25. Since draft-ietf-quic-http-02 . . . . . . . . . . . . . . 60 | |||
| B.26. Since draft-ietf-quic-http-00 . . . . . . . . . . . . . . 60 | B.26. Since draft-ietf-quic-http-01 . . . . . . . . . . . . . . 60 | |||
| B.27. Since draft-shade-quic-http2-mapping-00 . . . . . . . . . 60 | B.27. Since draft-ietf-quic-http-00 . . . . . . . . . . . . . . 60 | |||
| Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 60 | B.28. Since draft-shade-quic-http2-mapping-00 . . . . . . . . . 61 | |||
| Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 61 | ||||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 61 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . 61 | |||
| 1. Introduction | 1. Introduction | |||
| HTTP semantics are used for a broad range of services on the | HTTP semantics are used for a broad range of services on the | |||
| Internet. These semantics have commonly been used with two different | Internet. These semantics have commonly been used with two different | |||
| TCP mappings, HTTP/1.1 and HTTP/2. HTTP/3 supports the same | TCP mappings, HTTP/1.1 and HTTP/2. HTTP/3 supports the same | |||
| semantics over a new transport protocol, QUIC. | semantics over a new transport protocol, QUIC. | |||
| 1.1. Prior versions of HTTP | 1.1. Prior versions of HTTP | |||
| skipping to change at page 22, line 9 ¶ | skipping to change at page 22, line 9 ¶ | |||
| SHOULD use the H3_NO_ERROR code when closing the connection. | SHOULD use the H3_NO_ERROR code when closing the connection. | |||
| If a client has consumed all available bidirectional stream IDs with | If a client has consumed all available bidirectional stream IDs with | |||
| requests, the server need not send a GOAWAY frame, since the client | requests, the server need not send a GOAWAY frame, since the client | |||
| is unable to make further requests. | is unable to make further requests. | |||
| 5.3. Immediate Application Closure | 5.3. Immediate Application Closure | |||
| An HTTP/3 implementation can immediately close the QUIC connection at | An HTTP/3 implementation can immediately close the QUIC connection at | |||
| any time. This results in sending a QUIC CONNECTION_CLOSE frame to | any time. This results in sending a QUIC CONNECTION_CLOSE frame to | |||
| the peer; the error code in this frame indicates to the peer why the | the peer indicating that the application layer has terminated the | |||
| connection is being closed. See Section 8 for error codes which can | connection. The application error code in this frame indicates to | |||
| be used when closing a connection. | the peer why the connection is being closed. See Section 8 for error | |||
| codes which can be used when closing a connection in HTTP/3. | ||||
| Before closing the connection, a GOAWAY MAY be sent to allow the | Before closing the connection, a GOAWAY MAY be sent to allow the | |||
| client to retry some requests. Including the GOAWAY frame in the | client to retry some requests. Including the GOAWAY frame in the | |||
| same packet as the QUIC CONNECTION_CLOSE frame improves the chances | same packet as the QUIC CONNECTION_CLOSE frame improves the chances | |||
| of the frame being received by clients. | of the frame being received by clients. | |||
| 5.4. Transport Closure | 5.4. Transport Closure | |||
| For various reasons, the QUIC transport could indicate to the | For various reasons, the QUIC transport could indicate to the | |||
| application layer that the connection has terminated. This might be | application layer that the connection has terminated. This might be | |||
| skipping to change at page 46, line 21 ¶ | skipping to change at page 46, line 21 ¶ | |||
| Data in HTTP", RFC 8470, DOI 10.17487/RFC8470, September | Data in HTTP", RFC 8470, DOI 10.17487/RFC8470, September | |||
| 2018, <https://www.rfc-editor.org/info/rfc8470>. | 2018, <https://www.rfc-editor.org/info/rfc8470>. | |||
| [HTTP2] Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext | [HTTP2] Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext | |||
| Transfer Protocol Version 2 (HTTP/2)", RFC 7540, | Transfer Protocol Version 2 (HTTP/2)", RFC 7540, | |||
| DOI 10.17487/RFC7540, May 2015, | DOI 10.17487/RFC7540, May 2015, | |||
| <https://www.rfc-editor.org/info/rfc7540>. | <https://www.rfc-editor.org/info/rfc7540>. | |||
| [QPACK] Krasic, C., Bishop, M., and A. Frindell, Ed., "QPACK: | [QPACK] Krasic, C., Bishop, M., and A. Frindell, Ed., "QPACK: | |||
| Header Compression for HTTP over QUIC", Work in Progress, | Header Compression for HTTP over QUIC", Work in Progress, | |||
| Internet-Draft, draft-ietf-quic-qpack-13, 21 February | Internet-Draft, draft-ietf-quic-qpack-14, 21 February | |||
| 2020, | 2020, | |||
| <https://tools.ietf.org/html/draft-ietf-quic-qpack-13>. | <https://tools.ietf.org/html/draft-ietf-quic-qpack-14>. | |||
| [QUIC-TRANSPORT] | [QUIC-TRANSPORT] | |||
| Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based | |||
| Multiplexed and Secure Transport", Work in Progress, | Multiplexed and Secure Transport", Work in Progress, | |||
| Internet-Draft, draft-ietf-quic-transport-26, 21 February | Internet-Draft, draft-ietf-quic-transport-27, 21 February | |||
| 2020, <https://tools.ietf.org/html/draft-ietf-quic- | 2020, <https://tools.ietf.org/html/draft-ietf-quic- | |||
| transport-26>. | transport-27>. | |||
| [RFC0793] Postel, J., "Transmission Control Protocol", STD 7, | [RFC0793] Postel, J., "Transmission Control Protocol", STD 7, | |||
| RFC 793, DOI 10.17487/RFC0793, September 1981, | RFC 793, DOI 10.17487/RFC0793, September 1981, | |||
| <https://www.rfc-editor.org/info/rfc793>. | <https://www.rfc-editor.org/info/rfc793>. | |||
| [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>. | |||
| skipping to change at page 53, line 40 ¶ | skipping to change at page 53, line 40 ¶ | |||
| H3_1_1_REQUIRED (0xd): H3_VERSION_FALLBACK in Section 8.1. | H3_1_1_REQUIRED (0xd): H3_VERSION_FALLBACK in Section 8.1. | |||
| Error codes need to be defined for HTTP/2 and HTTP/3 separately. See | Error codes need to be defined for HTTP/2 and HTTP/3 separately. See | |||
| Section 11.2.3. | Section 11.2.3. | |||
| Appendix B. Change Log | Appendix B. Change Log | |||
| *RFC Editor's Note:* Please remove this section prior to | *RFC Editor's Note:* Please remove this section prior to | |||
| publication of a final version of this document. | publication of a final version of this document. | |||
| B.1. Since draft-ietf-quic-http-25 | B.1. Since draft-ietf-quic-http-26 | |||
| * No changes | ||||
| B.2. Since draft-ietf-quic-http-25 | ||||
| * Require QUICv1 for HTTP/3 (#3117, #3323) | * Require QUICv1 for HTTP/3 (#3117, #3323) | |||
| * Remove DUPLICATE_PUSH and allow duplicate PUSH_PROMISE (#3275, | * Remove DUPLICATE_PUSH and allow duplicate PUSH_PROMISE (#3275, | |||
| #3309) | #3309) | |||
| * Clarify the definition of "malformed" (#3352, #3345) | * Clarify the definition of "malformed" (#3352, #3345) | |||
| B.2. Since draft-ietf-quic-http-24 | B.3. Since draft-ietf-quic-http-24 | |||
| * Removed H3_EARLY_RESPONSE error code; H3_NO_ERROR is recommended | * Removed H3_EARLY_RESPONSE error code; H3_NO_ERROR is recommended | |||
| instead (#3130,#3208) | instead (#3130,#3208) | |||
| * Unknown error codes are equivalent to H3_NO_ERROR (#3276,#3331) | * Unknown error codes are equivalent to H3_NO_ERROR (#3276,#3331) | |||
| * Some error codes are reserved for greasing (#3325,#3360) | * Some error codes are reserved for greasing (#3325,#3360) | |||
| B.3. Since draft-ietf-quic-http-23 | B.4. Since draft-ietf-quic-http-23 | |||
| * Removed "quic" Alt-Svc parameter (#3061,#3118) | * Removed "quic" Alt-Svc parameter (#3061,#3118) | |||
| * Clients need not persist unknown settings for use in 0-RTT | * Clients need not persist unknown settings for use in 0-RTT | |||
| (#3110,#3113) | (#3110,#3113) | |||
| * Clarify error cases around CANCEL_PUSH (#2819,#3083) | * Clarify error cases around CANCEL_PUSH (#2819,#3083) | |||
| B.4. Since draft-ietf-quic-http-22 | B.5. Since draft-ietf-quic-http-22 | |||
| * Removed priority signaling (#2922,#2924) | * Removed priority signaling (#2922,#2924) | |||
| * Further changes to error codes (#2662,#2551): | * Further changes to error codes (#2662,#2551): | |||
| - Error codes renumbered | - Error codes renumbered | |||
| - HTTP_MALFORMED_FRAME replaced by HTTP_FRAME_ERROR, | - HTTP_MALFORMED_FRAME replaced by HTTP_FRAME_ERROR, | |||
| HTTP_ID_ERROR, and others | HTTP_ID_ERROR, and others | |||
| skipping to change at page 55, line 11 ¶ | skipping to change at page 55, line 17 ¶ | |||
| * Clarify that Upgrade and the 101 status code are prohibited | * Clarify that Upgrade and the 101 status code are prohibited | |||
| (#2898,#2889) | (#2898,#2889) | |||
| * Clarify that frame types reserved for greasing can occur on any | * Clarify that frame types reserved for greasing can occur on any | |||
| stream, but frame types reserved due to HTTP/2 correspondence are | stream, but frame types reserved due to HTTP/2 correspondence are | |||
| prohibited (#2997,#2692,#2693) | prohibited (#2997,#2692,#2693) | |||
| * Unknown error codes cannot be treated as errors (#2998,#2816) | * Unknown error codes cannot be treated as errors (#2998,#2816) | |||
| B.5. Since draft-ietf-quic-http-21 | B.6. Since draft-ietf-quic-http-21 | |||
| No changes | No changes | |||
| B.6. Since draft-ietf-quic-http-20 | B.7. Since draft-ietf-quic-http-20 | |||
| * Prohibit closing the control stream (#2509, #2666) | * Prohibit closing the control stream (#2509, #2666) | |||
| * Change default priority to use an orphan node (#2502, #2690) | * Change default priority to use an orphan node (#2502, #2690) | |||
| * Exclusive priorities are restored (#2754, #2781) | * Exclusive priorities are restored (#2754, #2781) | |||
| * Restrict use of frames when using CONNECT (#2229, #2702) | * Restrict use of frames when using CONNECT (#2229, #2702) | |||
| * Close and maybe reset streams if a connection error occurs for | * Close and maybe reset streams if a connection error occurs for | |||
| skipping to change at page 55, line 47 ¶ | skipping to change at page 56, line 4 ¶ | |||
| - Require connection errors for more error conditions (#2511, | - Require connection errors for more error conditions (#2511, | |||
| #2510) | #2510) | |||
| - Updated the error codes for illegal GOAWAY frames (#2714, | - Updated the error codes for illegal GOAWAY frames (#2714, | |||
| #2707) | #2707) | |||
| - Specified error code for HEADERS on control stream (#2708) | - Specified error code for HEADERS on control stream (#2708) | |||
| - Specified error code for servers receiving PUSH_PROMISE (#2709) | - Specified error code for servers receiving PUSH_PROMISE (#2709) | |||
| - Specified error code for receiving DATA before HEADERS (#2715) | - Specified error code for receiving DATA before HEADERS (#2715) | |||
| - Describe malformed messages and their handling (#2410, #2764) | - Describe malformed messages and their handling (#2410, #2764) | |||
| - Remove HTTP_PUSH_ALREADY_IN_CACHE error (#2812, #2813) | - Remove HTTP_PUSH_ALREADY_IN_CACHE error (#2812, #2813) | |||
| - Refactor Push ID related errors (#2818, #2820) | - Refactor Push ID related errors (#2818, #2820) | |||
| - Rationalize HTTP/3 stream creation errors (#2821, #2822) | - Rationalize HTTP/3 stream creation errors (#2821, #2822) | |||
| B.7. Since draft-ietf-quic-http-19 | B.8. Since draft-ietf-quic-http-19 | |||
| * SETTINGS_NUM_PLACEHOLDERS is 0x9 (#2443,#2530) | * SETTINGS_NUM_PLACEHOLDERS is 0x9 (#2443,#2530) | |||
| * Non-zero bits in the Empty field of the PRIORITY frame MAY be | * Non-zero bits in the Empty field of the PRIORITY frame MAY be | |||
| treated as an error (#2501) | treated as an error (#2501) | |||
| B.8. Since draft-ietf-quic-http-18 | B.9. Since draft-ietf-quic-http-18 | |||
| * Resetting streams following a GOAWAY is recommended, but not | * Resetting streams following a GOAWAY is recommended, but not | |||
| required (#2256,#2457) | required (#2256,#2457) | |||
| * Use variable-length integers throughout (#2437,#2233,#2253,#2275) | * Use variable-length integers throughout (#2437,#2233,#2253,#2275) | |||
| - Variable-length frame types, stream types, and settings | - Variable-length frame types, stream types, and settings | |||
| identifiers | identifiers | |||
| - Renumbered stream type assignments | - Renumbered stream type assignments | |||
| - Modified associated reserved values | - Modified associated reserved values | |||
| * Frame layout switched from Length-Type-Value to Type-Length-Value | * Frame layout switched from Length-Type-Value to Type-Length-Value | |||
| (#2395,#2235) | (#2395,#2235) | |||
| * Specified error code for servers receiving DUPLICATE_PUSH (#2497) | * Specified error code for servers receiving DUPLICATE_PUSH (#2497) | |||
| * Use connection error for invalid PRIORITY (#2507, #2508) | * Use connection error for invalid PRIORITY (#2507, #2508) | |||
| B.9. Since draft-ietf-quic-http-17 | B.10. Since draft-ietf-quic-http-17 | |||
| * HTTP_REQUEST_REJECTED is used to indicate a request can be retried | * HTTP_REQUEST_REJECTED is used to indicate a request can be retried | |||
| (#2106, #2325) | (#2106, #2325) | |||
| * Changed error code for GOAWAY on the wrong stream (#2231, #2343) | * Changed error code for GOAWAY on the wrong stream (#2231, #2343) | |||
| B.10. Since draft-ietf-quic-http-16 | B.11. Since draft-ietf-quic-http-16 | |||
| * Rename "HTTP/QUIC" to "HTTP/3" (#1973) | * Rename "HTTP/QUIC" to "HTTP/3" (#1973) | |||
| * Changes to PRIORITY frame (#1865, #2075) | * Changes to PRIORITY frame (#1865, #2075) | |||
| - Permitted as first frame of request streams | - Permitted as first frame of request streams | |||
| - Remove exclusive reprioritization | - Remove exclusive reprioritization | |||
| - Changes to Prioritized Element Type bits | - Changes to Prioritized Element Type bits | |||
| * Define DUPLICATE_PUSH frame to refer to another PUSH_PROMISE | * Define DUPLICATE_PUSH frame to refer to another PUSH_PROMISE | |||
| (#2072) | (#2072) | |||
| * Set defaults for settings, allow request before receiving SETTINGS | * Set defaults for settings, allow request before receiving SETTINGS | |||
| (#1809, #1846, #2038) | (#1809, #1846, #2038) | |||
| * Clarify message processing rules for streams that aren't closed | * Clarify message processing rules for streams that aren't closed | |||
| (#1972, #2003) | (#1972, #2003) | |||
| * Removed reservation of error code 0 and moved HTTP_NO_ERROR to | * Removed reservation of error code 0 and moved HTTP_NO_ERROR to | |||
| this value (#1922) | this value (#1922) | |||
| * Removed prohibition of zero-length DATA frames (#2098) | * Removed prohibition of zero-length DATA frames (#2098) | |||
| B.11. Since draft-ietf-quic-http-15 | B.12. Since draft-ietf-quic-http-15 | |||
| Substantial editorial reorganization; no technical changes. | Substantial editorial reorganization; no technical changes. | |||
| B.12. Since draft-ietf-quic-http-14 | B.13. Since draft-ietf-quic-http-14 | |||
| * Recommend sensible values for QUIC transport parameters | * Recommend sensible values for QUIC transport parameters | |||
| (#1720,#1806) | (#1720,#1806) | |||
| * Define error for missing SETTINGS frame (#1697,#1808) | * Define error for missing SETTINGS frame (#1697,#1808) | |||
| * Setting values are variable-length integers (#1556,#1807) and do | * Setting values are variable-length integers (#1556,#1807) and do | |||
| not have separate maximum values (#1820) | not have separate maximum values (#1820) | |||
| * Expanded discussion of connection closure (#1599,#1717,#1712) | * Expanded discussion of connection closure (#1599,#1717,#1712) | |||
| * HTTP_VERSION_FALLBACK falls back to HTTP/1.1 (#1677,#1685) | * HTTP_VERSION_FALLBACK falls back to HTTP/1.1 (#1677,#1685) | |||
| B.13. Since draft-ietf-quic-http-13 | B.14. Since draft-ietf-quic-http-13 | |||
| * Reserved some frame types for grease (#1333, #1446) | * Reserved some frame types for grease (#1333, #1446) | |||
| * Unknown unidirectional stream types are tolerated, not errors; | * Unknown unidirectional stream types are tolerated, not errors; | |||
| some reserved for grease (#1490, #1525) | some reserved for grease (#1490, #1525) | |||
| * Require settings to be remembered for 0-RTT, prohibit reductions | * Require settings to be remembered for 0-RTT, prohibit reductions | |||
| (#1541, #1641) | (#1541, #1641) | |||
| * Specify behavior for truncated requests (#1596, #1643) | * Specify behavior for truncated requests (#1596, #1643) | |||
| B.14. Since draft-ietf-quic-http-12 | B.15. Since draft-ietf-quic-http-12 | |||
| * TLS SNI extension isn't mandatory if an alternative method is used | * TLS SNI extension isn't mandatory if an alternative method is used | |||
| (#1459, #1462, #1466) | (#1459, #1462, #1466) | |||
| * Removed flags from HTTP/3 frames (#1388, #1398) | * Removed flags from HTTP/3 frames (#1388, #1398) | |||
| * Reserved frame types and settings for use in preserving | * Reserved frame types and settings for use in preserving | |||
| extensibility (#1333, #1446) | extensibility (#1333, #1446) | |||
| * Added general error code (#1391, #1397) | * Added general error code (#1391, #1397) | |||
| * Unidirectional streams carry a type byte and are extensible | * Unidirectional streams carry a type byte and are extensible | |||
| (#910,#1359) | (#910,#1359) | |||
| * Priority mechanism now uses explicit placeholders to enable | * Priority mechanism now uses explicit placeholders to enable | |||
| persistent structure in the tree (#441,#1421,#1422) | persistent structure in the tree (#441,#1421,#1422) | |||
| B.15. Since draft-ietf-quic-http-11 | B.16. Since draft-ietf-quic-http-11 | |||
| * Moved QPACK table updates and acknowledgments to dedicated streams | * Moved QPACK table updates and acknowledgments to dedicated streams | |||
| (#1121, #1122, #1238) | (#1121, #1122, #1238) | |||
| B.16. Since draft-ietf-quic-http-10 | B.17. Since draft-ietf-quic-http-10 | |||
| * Settings need to be remembered when attempting and accepting 0-RTT | * Settings need to be remembered when attempting and accepting 0-RTT | |||
| (#1157, #1207) | (#1157, #1207) | |||
| B.17. Since draft-ietf-quic-http-09 | B.18. Since draft-ietf-quic-http-09 | |||
| * Selected QCRAM for header compression (#228, #1117) | * Selected QCRAM for header compression (#228, #1117) | |||
| * The server_name TLS extension is now mandatory (#296, #495) | * The server_name TLS extension is now mandatory (#296, #495) | |||
| * Specified handling of unsupported versions in Alt-Svc (#1093, | * Specified handling of unsupported versions in Alt-Svc (#1093, | |||
| #1097) | #1097) | |||
| B.18. Since draft-ietf-quic-http-08 | B.19. Since draft-ietf-quic-http-08 | |||
| * Clarified connection coalescing rules (#940, #1024) | * Clarified connection coalescing rules (#940, #1024) | |||
| B.19. Since draft-ietf-quic-http-07 | B.20. Since draft-ietf-quic-http-07 | |||
| * Changes for integer encodings in QUIC (#595,#905) | * Changes for integer encodings in QUIC (#595,#905) | |||
| * Use unidirectional streams as appropriate (#515, #240, #281, #886) | * Use unidirectional streams as appropriate (#515, #240, #281, #886) | |||
| * Improvement to the description of GOAWAY (#604, #898) | * Improvement to the description of GOAWAY (#604, #898) | |||
| * Improve description of server push usage (#947, #950, #957) | * Improve description of server push usage (#947, #950, #957) | |||
| B.20. Since draft-ietf-quic-http-06 | B.21. Since draft-ietf-quic-http-06 | |||
| * Track changes in QUIC error code usage (#485) | * Track changes in QUIC error code usage (#485) | |||
| B.21. Since draft-ietf-quic-http-05 | B.22. Since draft-ietf-quic-http-05 | |||
| * Made push ID sequential, add MAX_PUSH_ID, remove | * Made push ID sequential, add MAX_PUSH_ID, remove | |||
| SETTINGS_ENABLE_PUSH (#709) | SETTINGS_ENABLE_PUSH (#709) | |||
| * Guidance about keep-alive and QUIC PINGs (#729) | * Guidance about keep-alive and QUIC PINGs (#729) | |||
| * Expanded text on GOAWAY and cancellation (#757) | * Expanded text on GOAWAY and cancellation (#757) | |||
| B.22. Since draft-ietf-quic-http-04 | B.23. Since draft-ietf-quic-http-04 | |||
| * Cite RFC 5234 (#404) | * Cite RFC 5234 (#404) | |||
| * Return to a single stream per request (#245,#557) | * Return to a single stream per request (#245,#557) | |||
| * Use separate frame type and settings registries from HTTP/2 (#81) | * Use separate frame type and settings registries from HTTP/2 (#81) | |||
| * SETTINGS_ENABLE_PUSH instead of SETTINGS_DISABLE_PUSH (#477) | * SETTINGS_ENABLE_PUSH instead of SETTINGS_DISABLE_PUSH (#477) | |||
| * Restored GOAWAY (#696) | * Restored GOAWAY (#696) | |||
| * Identify server push using Push ID rather than a stream ID | * Identify server push using Push ID rather than a stream ID | |||
| (#702,#281) | (#702,#281) | |||
| * DATA frames cannot be empty (#700) | * DATA frames cannot be empty (#700) | |||
| B.23. Since draft-ietf-quic-http-03 | B.24. Since draft-ietf-quic-http-03 | |||
| None. | None. | |||
| B.24. Since draft-ietf-quic-http-02 | B.25. Since draft-ietf-quic-http-02 | |||
| * Track changes in transport draft | * Track changes in transport draft | |||
| B.25. Since draft-ietf-quic-http-01 | B.26. Since draft-ietf-quic-http-01 | |||
| * SETTINGS changes (#181): | * SETTINGS changes (#181): | |||
| - SETTINGS can be sent only once at the start of a connection; no | - SETTINGS can be sent only once at the start of a connection; no | |||
| changes thereafter | changes thereafter | |||
| - SETTINGS_ACK removed | - SETTINGS_ACK removed | |||
| - Settings can only occur in the SETTINGS frame a single time | - Settings can only occur in the SETTINGS frame a single time | |||
| - Boolean format updated | - Boolean format updated | |||
| * Alt-Svc parameter changed from "v" to "quic"; format updated | * Alt-Svc parameter changed from "v" to "quic"; format updated | |||
| (#229) | (#229) | |||
| * Closing the connection control stream or any message control | * Closing the connection control stream or any message control | |||
| stream is a fatal error (#176) | stream is a fatal error (#176) | |||
| * HPACK Sequence counter can wrap (#173) | * HPACK Sequence counter can wrap (#173) | |||
| * 0-RTT guidance added | * 0-RTT guidance added | |||
| * Guide to differences from HTTP/2 and porting HTTP/2 extensions | * Guide to differences from HTTP/2 and porting HTTP/2 extensions | |||
| added (#127,#242) | added (#127,#242) | |||
| B.26. Since draft-ietf-quic-http-00 | B.27. Since draft-ietf-quic-http-00 | |||
| * Changed "HTTP/2-over-QUIC" to "HTTP/QUIC" throughout (#11,#29) | * Changed "HTTP/2-over-QUIC" to "HTTP/QUIC" throughout (#11,#29) | |||
| * Changed from using HTTP/2 framing within Stream 3 to new framing | * Changed from using HTTP/2 framing within Stream 3 to new framing | |||
| format and two-stream-per-request model (#71,#72,#73) | format and two-stream-per-request model (#71,#72,#73) | |||
| * Adopted SETTINGS format from draft-bishop-httpbis-extended- | * Adopted SETTINGS format from draft-bishop-httpbis-extended- | |||
| settings-01 | settings-01 | |||
| * Reworked SETTINGS_ACK to account for indeterminate inter-stream | * Reworked SETTINGS_ACK to account for indeterminate inter-stream | |||
| order (#75) | order (#75) | |||
| * Described CONNECT pseudo-method (#95) | * Described CONNECT pseudo-method (#95) | |||
| * Updated ALPN token and Alt-Svc guidance (#13,#87) | * Updated ALPN token and Alt-Svc guidance (#13,#87) | |||
| * Application-layer-defined error codes (#19,#74) | * Application-layer-defined error codes (#19,#74) | |||
| B.27. Since draft-shade-quic-http2-mapping-00 | B.28. Since draft-shade-quic-http2-mapping-00 | |||
| * Adopted as base for draft-ietf-quic-http | * Adopted as base for draft-ietf-quic-http | |||
| * Updated authors/editors list | * Updated authors/editors list | |||
| Acknowledgements | Acknowledgements | |||
| The original authors of this specification were Robbie Shade and Mike | The original authors of this specification were Robbie Shade and Mike | |||
| Warres. | Warres. | |||
| End of changes. 39 change blocks. | ||||
| 65 lines changed or deleted | 73 lines changed or added | |||
This html diff was produced by rfcdiff 1.45. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||