| draft-ietf-quic-qpack-18.txt | draft-ietf-quic-qpack-19.txt | |||
|---|---|---|---|---|
| QUIC C. Krasic | QUIC C. Krasic | |||
| Internet-Draft Netflix | Internet-Draft Netflix | |||
| Intended status: Standards Track M. Bishop | Intended status: Standards Track M. Bishop | |||
| Expires: 29 March 2021 Akamai Technologies | Expires: 23 April 2021 Akamai Technologies | |||
| A. Frindell, Ed. | A. Frindell, Ed. | |||
| 25 September 2020 | 20 October 2020 | |||
| QPACK: Header Compression for HTTP/3 | QPACK: Header Compression for HTTP/3 | |||
| draft-ietf-quic-qpack-18 | draft-ietf-quic-qpack-19 | |||
| Abstract | Abstract | |||
| This specification defines QPACK, a compression format for | This specification defines QPACK, a compression format for | |||
| efficiently representing HTTP fields, to be used in HTTP/3. This is | efficiently representing HTTP fields, to be used in HTTP/3. This is | |||
| a variation of HPACK compression that seeks to reduce head-of-line | a variation of HPACK compression that seeks to reduce head-of-line | |||
| blocking. | blocking. | |||
| Note to Readers | Note to Readers | |||
| skipping to change at page 1, line 47 ¶ | skipping to change at page 1, line 47 ¶ | |||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF). Note that other groups may also distribute | Task Force (IETF). Note that other groups may also distribute | |||
| working documents as Internet-Drafts. The list of current Internet- | working documents as Internet-Drafts. The list of current Internet- | |||
| Drafts is at https://datatracker.ietf.org/drafts/current/. | Drafts is at https://datatracker.ietf.org/drafts/current/. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| This Internet-Draft will expire on 29 March 2021. | This Internet-Draft will expire on 23 April 2021. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (c) 2020 IETF Trust and the persons identified as the | Copyright (c) 2020 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 (https://trustee.ietf.org/ | Provisions Relating to IETF Documents (https://trustee.ietf.org/ | |||
| license-info) in effect on the date of publication of this document. | license-info) in effect on the date of publication of this document. | |||
| Please review these documents carefully, as they describe your rights | Please review these documents carefully, as they describe your rights | |||
| skipping to change at page 3, line 42 ¶ | skipping to change at page 3, line 42 ¶ | |||
| 9.2. Informative References . . . . . . . . . . . . . . . . . 34 | 9.2. Informative References . . . . . . . . . . . . . . . . . 34 | |||
| Appendix A. Static Table . . . . . . . . . . . . . . . . . . . . 34 | Appendix A. Static Table . . . . . . . . . . . . . . . . . . . . 34 | |||
| Appendix B. Encoding and Decoding Examples . . . . . . . . . . . 39 | Appendix B. Encoding and Decoding Examples . . . . . . . . . . . 39 | |||
| B.1. Literal Field Line With Name Reference . . . . . . . . . 39 | B.1. Literal Field Line With Name Reference . . . . . . . . . 39 | |||
| B.2. Dynamic Table . . . . . . . . . . . . . . . . . . . . . . 40 | B.2. Dynamic Table . . . . . . . . . . . . . . . . . . . . . . 40 | |||
| B.3. Speculative Insert . . . . . . . . . . . . . . . . . . . 41 | B.3. Speculative Insert . . . . . . . . . . . . . . . . . . . 41 | |||
| B.4. Duplicate Instruction, Stream Cancellation . . . . . . . 42 | B.4. Duplicate Instruction, Stream Cancellation . . . . . . . 42 | |||
| B.5. Dynamic Table Insert, Eviction . . . . . . . . . . . . . 43 | B.5. Dynamic Table Insert, Eviction . . . . . . . . . . . . . 43 | |||
| Appendix C. Sample One Pass Encoding Algorithm . . . . . . . . . 44 | Appendix C. Sample One Pass Encoding Algorithm . . . . . . . . . 44 | |||
| Appendix D. Change Log . . . . . . . . . . . . . . . . . . . . . 45 | Appendix D. Change Log . . . . . . . . . . . . . . . . . . . . . 45 | |||
| D.1. Since draft-ietf-quic-qpack-17 . . . . . . . . . . . . . 45 | D.1. Since draft-ietf-quic-qpack-18 . . . . . . . . . . . . . 45 | |||
| D.2. Since draft-ietf-quic-qpack-16 . . . . . . . . . . . . . 45 | D.2. Since draft-ietf-quic-qpack-17 . . . . . . . . . . . . . 45 | |||
| D.3. Since draft-ietf-quic-qpack-15 . . . . . . . . . . . . . 45 | D.3. Since draft-ietf-quic-qpack-16 . . . . . . . . . . . . . 45 | |||
| D.4. Since draft-ietf-quic-qpack-14 . . . . . . . . . . . . . 45 | D.4. Since draft-ietf-quic-qpack-15 . . . . . . . . . . . . . 45 | |||
| D.5. Since draft-ietf-quic-qpack-13 . . . . . . . . . . . . . 46 | D.5. Since draft-ietf-quic-qpack-14 . . . . . . . . . . . . . 46 | |||
| D.6. Since draft-ietf-quic-qpack-12 . . . . . . . . . . . . . 46 | D.6. Since draft-ietf-quic-qpack-13 . . . . . . . . . . . . . 46 | |||
| D.7. Since draft-ietf-quic-qpack-11 . . . . . . . . . . . . . 46 | D.7. Since draft-ietf-quic-qpack-12 . . . . . . . . . . . . . 46 | |||
| D.8. Since draft-ietf-quic-qpack-10 . . . . . . . . . . . . . 46 | D.8. Since draft-ietf-quic-qpack-11 . . . . . . . . . . . . . 46 | |||
| D.9. Since draft-ietf-quic-qpack-09 . . . . . . . . . . . . . 46 | D.9. Since draft-ietf-quic-qpack-10 . . . . . . . . . . . . . 46 | |||
| D.10. Since draft-ietf-quic-qpack-08 . . . . . . . . . . . . . 46 | D.10. Since draft-ietf-quic-qpack-09 . . . . . . . . . . . . . 46 | |||
| D.11. Since draft-ietf-quic-qpack-06 . . . . . . . . . . . . . 46 | D.11. Since draft-ietf-quic-qpack-08 . . . . . . . . . . . . . 46 | |||
| D.12. Since draft-ietf-quic-qpack-05 . . . . . . . . . . . . . 46 | D.12. Since draft-ietf-quic-qpack-06 . . . . . . . . . . . . . 46 | |||
| D.13. Since draft-ietf-quic-qpack-04 . . . . . . . . . . . . . 46 | D.13. Since draft-ietf-quic-qpack-05 . . . . . . . . . . . . . 46 | |||
| D.14. Since draft-ietf-quic-qpack-03 . . . . . . . . . . . . . 47 | D.14. Since draft-ietf-quic-qpack-04 . . . . . . . . . . . . . 47 | |||
| D.15. Since draft-ietf-quic-qpack-02 . . . . . . . . . . . . . 47 | D.15. Since draft-ietf-quic-qpack-03 . . . . . . . . . . . . . 47 | |||
| D.16. Since draft-ietf-quic-qpack-01 . . . . . . . . . . . . . 47 | D.16. Since draft-ietf-quic-qpack-02 . . . . . . . . . . . . . 47 | |||
| D.17. Since draft-ietf-quic-qpack-00 . . . . . . . . . . . . . 47 | D.17. Since draft-ietf-quic-qpack-01 . . . . . . . . . . . . . 47 | |||
| D.18. Since draft-ietf-quic-qcram-00 . . . . . . . . . . . . . 48 | D.18. Since draft-ietf-quic-qpack-00 . . . . . . . . . . . . . 47 | |||
| D.19. Since draft-ietf-quic-qcram-00 . . . . . . . . . . . . . 48 | ||||
| Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 48 | Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 48 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 49 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 49 | |||
| 1. Introduction | 1. Introduction | |||
| The QUIC transport protocol ([QUIC-TRANSPORT]) is designed to support | The QUIC transport protocol ([QUIC-TRANSPORT]) is designed to support | |||
| HTTP semantics, and its design subsumes many of the features of | HTTP semantics, and its design subsumes many of the features of | |||
| HTTP/2 ([RFC7540]). HTTP/2 uses HPACK ([RFC7541]) for compression of | HTTP/2 ([RFC7540]). HTTP/2 uses HPACK ([RFC7541]) for compression of | |||
| the header and trailer sections. If HPACK were used for HTTP/3 | the header and trailer sections. If HPACK were used for HTTP/3 | |||
| ([HTTP3]), it would induce head-of-line blocking for field sections | ([HTTP3]), it would induce head-of-line blocking for field sections | |||
| skipping to change at page 4, line 48 ¶ | skipping to change at page 4, line 49 ¶ | |||
| capitals, as shown here. | capitals, as shown here. | |||
| Definitions of terms that are used in this document: | Definitions of terms that are used in this document: | |||
| HTTP fields: Metadata sent as part of an HTTP message. The term | HTTP fields: Metadata sent as part of an HTTP message. The term | |||
| encompasses both header and trailer fields. Colloquially, the | encompasses both header and trailer fields. Colloquially, the | |||
| term "headers" has often been used to refer to HTTP header fields | term "headers" has often been used to refer to HTTP header fields | |||
| and trailer fields; this document uses "fields" for generality. | and trailer fields; this document uses "fields" for generality. | |||
| HTTP field line: A name-value pair sent as part of an HTTP field | HTTP field line: A name-value pair sent as part of an HTTP field | |||
| section. See Section 5 of [SEMANTICS]. | section. See Section 5.4 and Section 5.6 of [SEMANTICS]. | |||
| HTTP field value: Data associated with a field name, composed from | HTTP field value: Data associated with a field name, composed from | |||
| all field line values with that field name in that section, | all field line values with that field name in that section, | |||
| concatenated together and separated with commas. | concatenated together and separated with commas. | |||
| Field section: An ordered collection of HTTP field lines associated | Field section: An ordered collection of HTTP field lines associated | |||
| with an HTTP message. A field section can contain multiple field | with an HTTP message. A field section can contain multiple field | |||
| lines with the same name. It can also contain duplicate field | lines with the same name. It can also contain duplicate field | |||
| lines. An HTTP message can include both header field and trailer | lines. An HTTP message can include both header field and trailer | |||
| field sections. | field sections. | |||
| skipping to change at page 16, line 10 ¶ | skipping to change at page 16, line 10 ¶ | |||
| 4.1.2. String Literals | 4.1.2. String Literals | |||
| The string literal defined by Section 5.2 of [RFC7541] is also used | The string literal defined by Section 5.2 of [RFC7541] is also used | |||
| throughout. This string format includes optional Huffman encoding. | throughout. This string format includes optional Huffman encoding. | |||
| HPACK defines string literals to begin on a byte boundary. They | HPACK defines string literals to begin on a byte boundary. They | |||
| begin with a single bit flag, denoted as 'H' in this document | begin with a single bit flag, denoted as 'H' in this document | |||
| (indicating whether the string is Huffman-coded), followed by the | (indicating whether the string is Huffman-coded), followed by the | |||
| Length encoded as a 7-bit prefix integer, and finally Length bytes of | Length encoded as a 7-bit prefix integer, and finally Length bytes of | |||
| data. When Huffman encoding is enabled, the Huffman table from | data. When Huffman encoding is enabled, the Huffman table from | |||
| Appendix B of [RFC7541] is used without modification. | Appendix B of [RFC7541] is used without modification and Length | |||
| indicates the size of the string after encoding. | ||||
| This document expands the definition of string literals by permitting | This document expands the definition of string literals by permitting | |||
| them to begin other than on a byte boundary. An "N-bit prefix string | them to begin other than on a byte boundary. An "N-bit prefix string | |||
| literal" begins with the same Huffman flag, followed by the length | literal" begins mid-byte, with the first (8-N) bits allocated to a | |||
| encoded as an (N-1)-bit prefix integer. The prefix size, N, can have | previous field. The string uses one bit for the Huffman flag, | |||
| a value between 2 and 8 inclusive. The remainder of the string | followed by the Length encoded as an (N-1)-bit prefix integer. The | |||
| literal is unmodified. | prefix size, N, can have a value between 2 and 8 inclusive. The | |||
| remainder of the string literal is unmodified. | ||||
| A string literal without a prefix length noted is an 8-bit prefix | A string literal without a prefix length noted is an 8-bit prefix | |||
| string literal and follows the definitions in [RFC7541] without | string literal and follows the definitions in [RFC7541] without | |||
| modification. | modification. | |||
| 4.2. Encoder and Decoder Streams | 4.2. Encoder and Decoder Streams | |||
| QPACK defines two unidirectional stream types: | QPACK defines two unidirectional stream types: | |||
| * An encoder stream is a unidirectional stream of type 0x02. It | * An encoder stream is a unidirectional stream of type 0x02. It | |||
| skipping to change at page 33, line 30 ¶ | skipping to change at page 33, line 30 ¶ | |||
| +----------------------------+-------+-------------+---------------+ | +----------------------------+-------+-------------+---------------+ | |||
| Table 3 | Table 3 | |||
| 9. References | 9. References | |||
| 9.1. Normative References | 9.1. Normative References | |||
| [HTTP3] Bishop, M., Ed., "Hypertext Transfer Protocol Version 3 | [HTTP3] Bishop, M., Ed., "Hypertext Transfer Protocol Version 3 | |||
| (HTTP/3)", Work in Progress, Internet-Draft, draft-ietf- | (HTTP/3)", Work in Progress, Internet-Draft, draft-ietf- | |||
| quic-http-31, 25 September 2020, | quic-http-32, 20 October 2020, | |||
| <https://tools.ietf.org/html/draft-ietf-quic-http-31>. | <https://tools.ietf.org/html/draft-ietf-quic-http-32>. | |||
| [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-31, 25 September | Internet-Draft, draft-ietf-quic-transport-32, 20 October | |||
| 2020, <https://tools.ietf.org/html/draft-ietf-quic- | 2020, <https://tools.ietf.org/html/draft-ietf-quic- | |||
| transport-31>. | transport-32>. | |||
| [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>. | |||
| [RFC2360] Scott, G., "Guide for Internet Standards Writers", BCP 22, | ||||
| RFC 2360, DOI 10.17487/RFC2360, June 1998, | ||||
| <https://www.rfc-editor.org/info/rfc2360>. | ||||
| [RFC7541] Peon, R. and H. Ruellan, "HPACK: Header Compression for | [RFC7541] Peon, R. and H. Ruellan, "HPACK: Header Compression for | |||
| HTTP/2", RFC 7541, DOI 10.17487/RFC7541, May 2015, | HTTP/2", RFC 7541, DOI 10.17487/RFC7541, May 2015, | |||
| <https://www.rfc-editor.org/info/rfc7541>. | <https://www.rfc-editor.org/info/rfc7541>. | |||
| [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>. | |||
| [SEMANTICS] | [SEMANTICS] | |||
| Fielding, R., Nottingham, M., and J. Reschke, "HTTP | Fielding, R., Nottingham, M., and J. Reschke, "HTTP | |||
| Semantics", Work in Progress, Internet-Draft, draft-ietf- | Semantics", Work in Progress, Internet-Draft, draft-ietf- | |||
| httpbis-semantics-11, 27 August 2020, | httpbis-semantics-12, 2 October 2020, | |||
| <http://www.ietf.org/internet-drafts/draft-ietf-httpbis- | <http://www.ietf.org/internet-drafts/draft-ietf-httpbis- | |||
| semantics-11.txt>. | semantics-12.txt>. | |||
| 9.2. Informative References | 9.2. Informative References | |||
| [CRIME] Wikipedia, "CRIME", May 2015, <http://en.wikipedia.org/w/ | [CRIME] Wikipedia, "CRIME", May 2015, <http://en.wikipedia.org/w/ | |||
| index.php?title=CRIME&oldid=660948120>. | index.php?title=CRIME&oldid=660948120>. | |||
| [PETAL] Tan, J. and J. Nahata, "PETAL: Preset Encoding | [PETAL] Tan, J. and J. Nahata, "PETAL: Preset Encoding | |||
| Table Information Leakage", April 2013, | Table Information Leakage", April 2013, | |||
| <http://www.pdl.cmu.edu/PDL-FTP/associated/CMU-PDL- | <http://www.pdl.cmu.edu/PDL-FTP/associated/CMU-PDL- | |||
| 13-106.pdf>. | 13-106.pdf>. | |||
| [RFC1951] Deutsch, P., "DEFLATE Compressed Data Format Specification | [RFC1951] Deutsch, P., "DEFLATE Compressed Data Format Specification | |||
| version 1.3", RFC 1951, DOI 10.17487/RFC1951, May 1996, | version 1.3", RFC 1951, DOI 10.17487/RFC1951, May 1996, | |||
| <https://www.rfc-editor.org/info/rfc1951>. | <https://www.rfc-editor.org/info/rfc1951>. | |||
| [RFC2360] Scott, G., "Guide for Internet Standards Writers", BCP 22, | ||||
| RFC 2360, DOI 10.17487/RFC2360, June 1998, | ||||
| <https://www.rfc-editor.org/info/rfc2360>. | ||||
| [RFC6454] Barth, A., "The Web Origin Concept", RFC 6454, | [RFC6454] Barth, A., "The Web Origin Concept", RFC 6454, | |||
| DOI 10.17487/RFC6454, December 2011, | DOI 10.17487/RFC6454, December 2011, | |||
| <https://www.rfc-editor.org/info/rfc6454>. | <https://www.rfc-editor.org/info/rfc6454>. | |||
| [RFC7540] Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext | [RFC7540] 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>. | |||
| [TLS] Rescorla, E., "The Transport Layer Security (TLS) Protocol | [TLS] Rescorla, E., "The Transport Layer Security (TLS) Protocol | |||
| skipping to change at page 42, line 31 ¶ | skipping to change at page 42, line 31 ¶ | |||
| 1 0 :authority www.example.com | 1 0 :authority www.example.com | |||
| 2 0 :path /sample/path | 2 0 :path /sample/path | |||
| 3 0 custom-key custom-value | 3 0 custom-key custom-value | |||
| ^-- acknowledged --^ | ^-- acknowledged --^ | |||
| Size=160 | Size=160 | |||
| B.4. Duplicate Instruction, Stream Cancellation | B.4. Duplicate Instruction, Stream Cancellation | |||
| The encoder duplicates an existing entry in the dynamic table, then | The encoder duplicates an existing entry in the dynamic table, then | |||
| sends an encoded field section referencing the dynamic table entries | sends an encoded field section referencing the dynamic table entries | |||
| including the duplicated entry. The decoder notifies the encoder | including the duplicated entry. The packet containing the encoder | |||
| that the encoded field section was not processed by sending a stream | stream data is delayed. Before the packet arrives, the decoder | |||
| cancellation. | cancels the stream and notifies the encoder that the encoded field | |||
| section was not processed. | ||||
| Stream: Encoder | Stream: Encoder | |||
| 02 | Duplicate (Relative Index=2) | 02 | Duplicate (Relative Index=2) | |||
| Abs Ref Name Value | Abs Ref Name Value | |||
| 1 0 :authority www.example.com | 1 0 :authority www.example.com | |||
| 2 0 :path /sample/path | 2 0 :path /sample/path | |||
| 3 0 custom-key custom-value | 3 0 custom-key custom-value | |||
| ^-- acknowledged --^ | ^-- acknowledged --^ | |||
| 4 0 :authority www.example.com | 4 0 :authority www.example.com | |||
| skipping to change at page 45, line 37 ¶ | skipping to change at page 45, line 37 ¶ | |||
| encodeInteger(prefixBuffer, 0x80, | encodeInteger(prefixBuffer, 0x80, | |||
| requiredInsertCount - base - 1, 7) | requiredInsertCount - base - 1, 7) | |||
| return encoderBuffer, prefixBuffer + streamBuffer | return encoderBuffer, prefixBuffer + streamBuffer | |||
| Appendix D. Change Log | Appendix D. 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. | |||
| D.1. Since draft-ietf-quic-qpack-17 | D.1. Since draft-ietf-quic-qpack-18 | |||
| Editorial changes only | Editorial changes only | |||
| D.2. Since draft-ietf-quic-qpack-16 | D.2. Since draft-ietf-quic-qpack-17 | |||
| Editorial changes only | Editorial changes only | |||
| D.3. Since draft-ietf-quic-qpack-15 | D.3. Since draft-ietf-quic-qpack-16 | |||
| Editorial changes only | ||||
| D.4. Since draft-ietf-quic-qpack-15 | ||||
| No changes | No changes | |||
| D.4. Since draft-ietf-quic-qpack-14 | D.5. Since draft-ietf-quic-qpack-14 | |||
| Added security considerations | Added security considerations | |||
| D.5. Since draft-ietf-quic-qpack-13 | D.6. Since draft-ietf-quic-qpack-13 | |||
| No changes | No changes | |||
| D.6. Since draft-ietf-quic-qpack-12 | D.7. Since draft-ietf-quic-qpack-12 | |||
| Editorial changes only | Editorial changes only | |||
| D.7. Since draft-ietf-quic-qpack-11 | D.8. Since draft-ietf-quic-qpack-11 | |||
| Editorial changes only | Editorial changes only | |||
| D.8. Since draft-ietf-quic-qpack-10 | D.9. Since draft-ietf-quic-qpack-10 | |||
| Editorial changes only | Editorial changes only | |||
| D.9. Since draft-ietf-quic-qpack-09 | D.10. Since draft-ietf-quic-qpack-09 | |||
| * Decoders MUST emit Header Acknowledgements (#2939) | * Decoders MUST emit Header Acknowledgements (#2939) | |||
| * Updated error code for multiple encoder or decoder streams (#2970) | * Updated error code for multiple encoder or decoder streams (#2970) | |||
| * Added explicit defaults for new SETTINGS (#2974) | * Added explicit defaults for new SETTINGS (#2974) | |||
| D.10. Since draft-ietf-quic-qpack-08 | D.11. Since draft-ietf-quic-qpack-08 | |||
| * Endpoints are permitted to create encoder and decoder streams even | * Endpoints are permitted to create encoder and decoder streams even | |||
| if they can't use them (#2100, #2529) | if they can't use them (#2100, #2529) | |||
| * Maximum values for settings removed (#2766, #2767) | * Maximum values for settings removed (#2766, #2767) | |||
| D.11. Since draft-ietf-quic-qpack-06 | D.12. Since draft-ietf-quic-qpack-06 | |||
| * Clarify initial dynamic table capacity maximums (#2276, #2330, | * Clarify initial dynamic table capacity maximums (#2276, #2330, | |||
| #2330) | #2330) | |||
| D.12. Since draft-ietf-quic-qpack-05 | D.13. Since draft-ietf-quic-qpack-05 | |||
| * Introduced the terms dynamic table capacity and maximum dynamic | * Introduced the terms dynamic table capacity and maximum dynamic | |||
| table capacity. | table capacity. | |||
| * Renamed SETTINGS_HEADER_TABLE_SIZE to | * Renamed SETTINGS_HEADER_TABLE_SIZE to | |||
| SETTINGS_QPACK_MAX_TABLE_CAPACITY. | SETTINGS_QPACK_MAX_TABLE_CAPACITY. | |||
| D.13. Since draft-ietf-quic-qpack-04 | D.14. Since draft-ietf-quic-qpack-04 | |||
| * Changed calculation of Delta Base Index to avoid an illegal value | * Changed calculation of Delta Base Index to avoid an illegal value | |||
| (#2002, #2005) | (#2002, #2005) | |||
| D.14. Since draft-ietf-quic-qpack-03 | D.15. Since draft-ietf-quic-qpack-03 | |||
| * Change HTTP settings defaults (#2038) | * Change HTTP settings defaults (#2038) | |||
| * Substantial editorial reorganization | * Substantial editorial reorganization | |||
| D.15. Since draft-ietf-quic-qpack-02 | D.16. Since draft-ietf-quic-qpack-02 | |||
| * Largest Reference encoded modulo MaxEntries (#1763) | * Largest Reference encoded modulo MaxEntries (#1763) | |||
| * New Static Table (#1355) | * New Static Table (#1355) | |||
| * Table Size Update with Insert Count=0 is a connection error | * Table Size Update with Insert Count=0 is a connection error | |||
| (#1762) | (#1762) | |||
| * Stream Cancellations are optional when | * Stream Cancellations are optional when | |||
| SETTINGS_HEADER_TABLE_SIZE=0 (#1761) | SETTINGS_HEADER_TABLE_SIZE=0 (#1761) | |||
| skipping to change at page 47, line 33 ¶ | skipping to change at page 47, line 38 ¶ | |||
| * Implementations must handle 62 bit integers (#1760) | * Implementations must handle 62 bit integers (#1760) | |||
| * Different error types for each QPACK stream, other changes to | * Different error types for each QPACK stream, other changes to | |||
| error handling (#1726) | error handling (#1726) | |||
| * Preserve header field order (#1725) | * Preserve header field order (#1725) | |||
| * Initial table size is the maximum permitted when table is first | * Initial table size is the maximum permitted when table is first | |||
| usable (#1642) | usable (#1642) | |||
| D.16. Since draft-ietf-quic-qpack-01 | D.17. Since draft-ietf-quic-qpack-01 | |||
| * Only header blocks that reference the dynamic table are | * Only header blocks that reference the dynamic table are | |||
| acknowledged (#1603, #1605) | acknowledged (#1603, #1605) | |||
| D.17. Since draft-ietf-quic-qpack-00 | D.18. Since draft-ietf-quic-qpack-00 | |||
| * Renumbered instructions for consistency (#1471, #1472) | * Renumbered instructions for consistency (#1471, #1472) | |||
| * Decoder is allowed to validate largest reference (#1404, #1469) | * Decoder is allowed to validate largest reference (#1404, #1469) | |||
| * Header block acknowledgments also acknowledge the associated | * Header block acknowledgments also acknowledge the associated | |||
| largest reference (#1370, #1400) | largest reference (#1370, #1400) | |||
| * Added an acknowledgment for unread streams (#1371, #1400) | * Added an acknowledgment for unread streams (#1371, #1400) | |||
| * Removed framing from encoder stream (#1361,#1467) | * Removed framing from encoder stream (#1361,#1467) | |||
| * Control streams use typed unidirectional streams rather than fixed | * Control streams use typed unidirectional streams rather than fixed | |||
| stream IDs (#910,#1359) | stream IDs (#910,#1359) | |||
| D.18. Since draft-ietf-quic-qcram-00 | D.19. Since draft-ietf-quic-qcram-00 | |||
| * Separate instruction sets for table updates and header blocks | * Separate instruction sets for table updates and header blocks | |||
| (#1235, #1142, #1141) | (#1235, #1142, #1141) | |||
| * Reworked indexing scheme (#1176, #1145, #1136, #1130, #1125, | * Reworked indexing scheme (#1176, #1145, #1136, #1130, #1125, | |||
| #1314) | #1314) | |||
| * Added mechanisms that support one-pass encoding (#1138, #1320) | * Added mechanisms that support one-pass encoding (#1138, #1320) | |||
| * Added a setting to control the number of blocked decoders (#238, | * Added a setting to control the number of blocked decoders (#238, | |||
| End of changes. 35 change blocks. | ||||
| 60 lines changed or deleted | 67 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/ | ||||