| draft-ietf-quic-transport-26.txt | draft-ietf-quic-transport-27.txt | |||
|---|---|---|---|---|
| QUIC J. Iyengar, Ed. | QUIC J. Iyengar, Ed. | |||
| Internet-Draft Fastly | Internet-Draft Fastly | |||
| Intended status: Standards Track M. Thomson, Ed. | Intended status: Standards Track M. Thomson, Ed. | |||
| Expires: 24 August 2020 Mozilla | Expires: 24 August 2020 Mozilla | |||
| 21 February 2020 | 21 February 2020 | |||
| QUIC: A UDP-Based Multiplexed and Secure Transport | QUIC: A UDP-Based Multiplexed and Secure Transport | |||
| draft-ietf-quic-transport-26 | draft-ietf-quic-transport-27 | |||
| Abstract | Abstract | |||
| This document defines the core of the QUIC transport protocol. | This document defines the core of the QUIC transport protocol. | |||
| Accompanying documents describe QUIC's loss detection and congestion | Accompanying documents describe QUIC's loss detection and congestion | |||
| control and the use of TLS for key negotiation. | control and the use of TLS for key negotiation. | |||
| Note to Readers | Note to Readers | |||
| Discussion of this draft takes place on the QUIC working group | Discussion of this draft takes place on the QUIC working group | |||
| skipping to change at page 2, line 17 ¶ | skipping to change at page 2, line 17 ¶ | |||
| 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 | |||
| and restrictions with respect to this document. Code Components | and restrictions with respect to this document. Code Components | |||
| extracted from this document must include Simplified BSD License text | extracted from this document must include Simplified BSD License text | |||
| as described in Section 4.e of the Trust Legal Provisions and are | as described in Section 4.e of the Trust Legal Provisions and are | |||
| provided without warranty as described in the Simplified BSD License. | provided without warranty as described in the Simplified BSD License. | |||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 6 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 6 | |||
| 1.1. Document Structure . . . . . . . . . . . . . . . . . . . 6 | 1.1. Document Structure . . . . . . . . . . . . . . . . . . . 7 | |||
| 1.2. Terms and Definitions . . . . . . . . . . . . . . . . . . 8 | 1.2. Terms and Definitions . . . . . . . . . . . . . . . . . . 8 | |||
| 1.3. Notational Conventions . . . . . . . . . . . . . . . . . 9 | 1.3. Notational Conventions . . . . . . . . . . . . . . . . . 9 | |||
| 2. Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | 2. Streams . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 | |||
| 2.1. Stream Types and Identifiers . . . . . . . . . . . . . . 10 | 2.1. Stream Types and Identifiers . . . . . . . . . . . . . . 10 | |||
| 2.2. Sending and Receiving Data . . . . . . . . . . . . . . . 11 | 2.2. Sending and Receiving Data . . . . . . . . . . . . . . . 11 | |||
| 2.3. Stream Prioritization . . . . . . . . . . . . . . . . . . 11 | 2.3. Stream Prioritization . . . . . . . . . . . . . . . . . . 11 | |||
| 2.4. Required Operations on Streams . . . . . . . . . . . . . 12 | 2.4. Required Operations on Streams . . . . . . . . . . . . . 12 | |||
| 3. Stream States . . . . . . . . . . . . . . . . . . . . . . . . 12 | 3. Stream States . . . . . . . . . . . . . . . . . . . . . . . . 12 | |||
| 3.1. Sending Stream States . . . . . . . . . . . . . . . . . . 13 | 3.1. Sending Stream States . . . . . . . . . . . . . . . . . . 13 | |||
| 3.2. Receiving Stream States . . . . . . . . . . . . . . . . . 15 | 3.2. Receiving Stream States . . . . . . . . . . . . . . . . . 15 | |||
| skipping to change at page 5, line 46 ¶ | skipping to change at page 5, line 46 ¶ | |||
| 22.1.4. Permanent Registrations . . . . . . . . . . . . . . 146 | 22.1.4. Permanent Registrations . . . . . . . . . . . . . . 146 | |||
| 22.2. QUIC Transport Parameter Registry . . . . . . . . . . . 147 | 22.2. QUIC Transport Parameter Registry . . . . . . . . . . . 147 | |||
| 22.3. QUIC Frame Type Registry . . . . . . . . . . . . . . . . 148 | 22.3. QUIC Frame Type Registry . . . . . . . . . . . . . . . . 148 | |||
| 22.4. QUIC Transport Error Codes Registry . . . . . . . . . . 149 | 22.4. QUIC Transport Error Codes Registry . . . . . . . . . . 149 | |||
| 23. References . . . . . . . . . . . . . . . . . . . . . . . . . 151 | 23. References . . . . . . . . . . . . . . . . . . . . . . . . . 151 | |||
| 23.1. Normative References . . . . . . . . . . . . . . . . . . 151 | 23.1. Normative References . . . . . . . . . . . . . . . . . . 151 | |||
| 23.2. Informative References . . . . . . . . . . . . . . . . . 152 | 23.2. Informative References . . . . . . . . . . . . . . . . . 152 | |||
| Appendix A. Sample Packet Number Decoding Algorithm . . . . . . 154 | Appendix A. Sample Packet Number Decoding Algorithm . . . . . . 154 | |||
| Appendix B. Sample ECN Validation Algorithm . . . . . . . . . . 155 | Appendix B. Sample ECN Validation Algorithm . . . . . . . . . . 155 | |||
| Appendix C. Change Log . . . . . . . . . . . . . . . . . . . . . 156 | Appendix C. Change Log . . . . . . . . . . . . . . . . . . . . . 156 | |||
| C.1. Since draft-ietf-quic-transport-24 . . . . . . . . . . . 156 | C.1. Since draft-ietf-quic-transport-26 . . . . . . . . . . . 156 | |||
| C.2. Since draft-ietf-quic-transport-23 . . . . . . . . . . . 157 | C.2. Since draft-ietf-quic-transport-25 . . . . . . . . . . . 156 | |||
| C.3. Since draft-ietf-quic-transport-22 . . . . . . . . . . . 158 | C.3. Since draft-ietf-quic-transport-24 . . . . . . . . . . . 156 | |||
| C.4. Since draft-ietf-quic-transport-21 . . . . . . . . . . . 159 | C.4. Since draft-ietf-quic-transport-23 . . . . . . . . . . . 158 | |||
| C.5. Since draft-ietf-quic-transport-20 . . . . . . . . . . . 159 | C.5. Since draft-ietf-quic-transport-22 . . . . . . . . . . . 158 | |||
| C.6. Since draft-ietf-quic-transport-19 . . . . . . . . . . . 160 | C.6. Since draft-ietf-quic-transport-21 . . . . . . . . . . . 159 | |||
| C.7. Since draft-ietf-quic-transport-18 . . . . . . . . . . . 161 | C.7. Since draft-ietf-quic-transport-20 . . . . . . . . . . . 160 | |||
| C.8. Since draft-ietf-quic-transport-17 . . . . . . . . . . . 161 | C.8. Since draft-ietf-quic-transport-19 . . . . . . . . . . . 160 | |||
| C.9. Since draft-ietf-quic-transport-16 . . . . . . . . . . . 162 | C.9. Since draft-ietf-quic-transport-18 . . . . . . . . . . . 161 | |||
| C.10. Since draft-ietf-quic-transport-15 . . . . . . . . . . . 163 | C.10. Since draft-ietf-quic-transport-17 . . . . . . . . . . . 161 | |||
| C.11. Since draft-ietf-quic-transport-14 . . . . . . . . . . . 163 | C.11. Since draft-ietf-quic-transport-16 . . . . . . . . . . . 162 | |||
| C.12. Since draft-ietf-quic-transport-13 . . . . . . . . . . . 164 | C.12. Since draft-ietf-quic-transport-15 . . . . . . . . . . . 163 | |||
| C.13. Since draft-ietf-quic-transport-12 . . . . . . . . . . . 164 | C.13. Since draft-ietf-quic-transport-14 . . . . . . . . . . . 163 | |||
| C.14. Since draft-ietf-quic-transport-11 . . . . . . . . . . . 165 | C.14. Since draft-ietf-quic-transport-13 . . . . . . . . . . . 164 | |||
| C.15. Since draft-ietf-quic-transport-10 . . . . . . . . . . . 165 | C.15. Since draft-ietf-quic-transport-12 . . . . . . . . . . . 165 | |||
| C.16. Since draft-ietf-quic-transport-09 . . . . . . . . . . . 166 | C.16. Since draft-ietf-quic-transport-11 . . . . . . . . . . . 165 | |||
| C.17. Since draft-ietf-quic-transport-08 . . . . . . . . . . . 167 | C.17. Since draft-ietf-quic-transport-10 . . . . . . . . . . . 166 | |||
| C.18. Since draft-ietf-quic-transport-07 . . . . . . . . . . . 167 | C.18. Since draft-ietf-quic-transport-09 . . . . . . . . . . . 166 | |||
| C.19. Since draft-ietf-quic-transport-06 . . . . . . . . . . . 168 | C.19. Since draft-ietf-quic-transport-08 . . . . . . . . . . . 167 | |||
| C.20. Since draft-ietf-quic-transport-05 . . . . . . . . . . . 169 | C.20. Since draft-ietf-quic-transport-07 . . . . . . . . . . . 168 | |||
| C.21. Since draft-ietf-quic-transport-04 . . . . . . . . . . . 169 | C.21. Since draft-ietf-quic-transport-06 . . . . . . . . . . . 169 | |||
| C.22. Since draft-ietf-quic-transport-03 . . . . . . . . . . . 170 | C.22. Since draft-ietf-quic-transport-05 . . . . . . . . . . . 169 | |||
| C.23. Since draft-ietf-quic-transport-02 . . . . . . . . . . . 170 | C.23. Since draft-ietf-quic-transport-04 . . . . . . . . . . . 169 | |||
| C.24. Since draft-ietf-quic-transport-01 . . . . . . . . . . . 171 | C.24. Since draft-ietf-quic-transport-03 . . . . . . . . . . . 170 | |||
| C.25. Since draft-ietf-quic-transport-00 . . . . . . . . . . . 173 | C.25. Since draft-ietf-quic-transport-02 . . . . . . . . . . . 170 | |||
| C.26. Since draft-hamilton-quic-transport-protocol-01 . . . . . 173 | C.26. Since draft-ietf-quic-transport-01 . . . . . . . . . . . 171 | |||
| C.27. Since draft-ietf-quic-transport-00 . . . . . . . . . . . 173 | ||||
| C.28. Since draft-hamilton-quic-transport-protocol-01 . . . . . 173 | ||||
| Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 173 | Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 173 | |||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 174 | Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 174 | |||
| 1. Introduction | 1. Introduction | |||
| QUIC is a multiplexed and secure general-purpose transport protocol | QUIC is a multiplexed and secure general-purpose transport protocol | |||
| that provides: | that provides: | |||
| * Stream multiplexing | * Stream multiplexing | |||
| skipping to change at page 105, line 40 ¶ | skipping to change at page 105, line 40 ¶ | |||
| With this mechanism, the server reflects the spin value received, | With this mechanism, the server reflects the spin value received, | |||
| while the client 'spins' it after one RTT. On-path observers can | while the client 'spins' it after one RTT. On-path observers can | |||
| measure the time between two spin bit toggle events to estimate the | measure the time between two spin bit toggle events to estimate the | |||
| end-to-end RTT of a connection. | end-to-end RTT of a connection. | |||
| 18. Transport Parameter Encoding | 18. Transport Parameter Encoding | |||
| The "extension_data" field of the quic_transport_parameters extension | The "extension_data" field of the quic_transport_parameters extension | |||
| defined in [QUIC-TLS] contains the QUIC transport parameters. They | defined in [QUIC-TLS] contains the QUIC transport parameters. They | |||
| are encoded as a length-prefixed sequence of transport parameters, as | are encoded as a sequence of transport parameters, as shown in | |||
| shown in Figure 16: | Figure 16: | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Sequence Length (16) | | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Transport Parameter 1 (*) ... | | Transport Parameter 1 (*) ... | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Transport Parameter 2 (*) ... | | Transport Parameter 2 (*) ... | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| ... | ... | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Transport Parameter N (*) ... | | Transport Parameter N (*) ... | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 16: Sequence of Transport Parameters | Figure 16: Sequence of Transport Parameters | |||
| The Sequence Length field contains the length of the sequence of | Each transport parameter is encoded as an (identifier, length, value) | |||
| transport parameters, in bytes. Each transport parameter is encoded | tuple, as shown in Figure 17: | |||
| as an (identifier, length, value) tuple, as shown in Figure 17: | ||||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Transport Parameter ID (16) | Transport Param Length (16) | | | Transport Parameter ID (i) ... | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ||||
| | Transport Parameter Length (i) ... | ||||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | Transport Parameter Value (*) ... | | Transport Parameter Value (*) ... | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 17: Transport Parameter Encoding | Figure 17: Transport Parameter Encoding | |||
| The Transport Param Length field contains the length of the Transport | The Transport Param Length field contains the length of the Transport | |||
| Parameter Value field. | Parameter Value field. | |||
| QUIC encodes transport parameters into a sequence of bytes, which are | QUIC encodes transport parameters into a sequence of bytes, which are | |||
| skipping to change at page 107, line 12 ¶ | skipping to change at page 107, line 12 ¶ | |||
| This section details the transport parameters defined in this | This section details the transport parameters defined in this | |||
| document. | document. | |||
| Many transport parameters listed here have integer values. Those | Many transport parameters listed here have integer values. Those | |||
| transport parameters that are identified as integers use a variable- | transport parameters that are identified as integers use a variable- | |||
| length integer encoding (see Section 16) and have a default value of | length integer encoding (see Section 16) and have a default value of | |||
| 0 if the transport parameter is absent, unless otherwise stated. | 0 if the transport parameter is absent, unless otherwise stated. | |||
| The following transport parameters are defined: | The following transport parameters are defined: | |||
| original_connection_id (0x0000): The value of the Destination | original_connection_id (0x00): The value of the Destination | |||
| Connection ID field from the first Initial packet sent by the | Connection ID field from the first Initial packet sent by the | |||
| client. This transport parameter is only sent by a server. This | client. This transport parameter is only sent by a server. This | |||
| is the same value sent in the "Original Destination Connection ID" | is the same value sent in the "Original Destination Connection ID" | |||
| field of a Retry packet (see Section 17.2.5). A server MUST | field of a Retry packet (see Section 17.2.5). A server MUST | |||
| include the original_connection_id transport parameter if it sent | include the original_connection_id transport parameter if it sent | |||
| a Retry packet. | a Retry packet. | |||
| max_idle_timeout (0x0001): The max idle timeout is a value in | max_idle_timeout (0x01): The max idle timeout is a value in | |||
| milliseconds that is encoded as an integer; see (Section 10.2). | milliseconds that is encoded as an integer; see (Section 10.2). | |||
| Idle timeout is disabled when both endpoints omit this transport | Idle timeout is disabled when both endpoints omit this transport | |||
| parameter or specify a value of 0. | parameter or specify a value of 0. | |||
| stateless_reset_token (0x0002): A stateless reset token is used in | stateless_reset_token (0x02): A stateless reset token is used in | |||
| verifying a stateless reset; see Section 10.4. This parameter is | verifying a stateless reset; see Section 10.4. This parameter is | |||
| a sequence of 16 bytes. This transport parameter MUST NOT be sent | a sequence of 16 bytes. This transport parameter MUST NOT be sent | |||
| by a client, but MAY be sent by a server. A server that does not | by a client, but MAY be sent by a server. A server that does not | |||
| send this transport parameter cannot use stateless reset | send this transport parameter cannot use stateless reset | |||
| (Section 10.4) for the connection ID negotiated during the | (Section 10.4) for the connection ID negotiated during the | |||
| handshake. | handshake. | |||
| max_packet_size (0x0003): The maximum packet size parameter is an | max_packet_size (0x03): The maximum packet size parameter is an | |||
| integer value that limits the size of packets that the endpoint is | integer value that limits the size of packets that the endpoint is | |||
| willing to receive. This indicates that packets larger than this | willing to receive. This indicates that packets larger than this | |||
| limit will be dropped. The default for this parameter is the | limit will be dropped. The default for this parameter is the | |||
| maximum permitted UDP payload of 65527. Values below 1200 are | maximum permitted UDP payload of 65527. Values below 1200 are | |||
| invalid. This limit only applies to protected packets | invalid. This limit only applies to protected packets | |||
| (Section 12.1). | (Section 12.1). | |||
| initial_max_data (0x0004): The initial maximum data parameter is an | initial_max_data (0x04): The initial maximum data parameter is an | |||
| integer value that contains the initial value for the maximum | integer value that contains the initial value for the maximum | |||
| amount of data that can be sent on the connection. This is | amount of data that can be sent on the connection. This is | |||
| equivalent to sending a MAX_DATA (Section 19.9) for the connection | equivalent to sending a MAX_DATA (Section 19.9) for the connection | |||
| immediately after completing the handshake. | immediately after completing the handshake. | |||
| initial_max_stream_data_bidi_local (0x0005): This parameter is an | initial_max_stream_data_bidi_local (0x05): This parameter is an | |||
| integer value specifying the initial flow control limit for | integer value specifying the initial flow control limit for | |||
| locally-initiated bidirectional streams. This limit applies to | locally-initiated bidirectional streams. This limit applies to | |||
| newly created bidirectional streams opened by the endpoint that | newly created bidirectional streams opened by the endpoint that | |||
| sends the transport parameter. In client transport parameters, | sends the transport parameter. In client transport parameters, | |||
| this applies to streams with an identifier with the least | this applies to streams with an identifier with the least | |||
| significant two bits set to 0x0; in server transport parameters, | significant two bits set to 0x0; in server transport parameters, | |||
| this applies to streams with the least significant two bits set to | this applies to streams with the least significant two bits set to | |||
| 0x1. | 0x1. | |||
| initial_max_stream_data_bidi_remote (0x0006): This parameter is an | initial_max_stream_data_bidi_remote (0x06): This parameter is an | |||
| integer value specifying the initial flow control limit for peer- | integer value specifying the initial flow control limit for peer- | |||
| initiated bidirectional streams. This limit applies to newly | initiated bidirectional streams. This limit applies to newly | |||
| created bidirectional streams opened by the endpoint that receives | created bidirectional streams opened by the endpoint that receives | |||
| the transport parameter. In client transport parameters, this | the transport parameter. In client transport parameters, this | |||
| applies to streams with an identifier with the least significant | applies to streams with an identifier with the least significant | |||
| two bits set to 0x1; in server transport parameters, this applies | two bits set to 0x1; in server transport parameters, this applies | |||
| to streams with the least significant two bits set to 0x0. | to streams with the least significant two bits set to 0x0. | |||
| initial_max_stream_data_uni (0x0007): This parameter is an integer | initial_max_stream_data_uni (0x07): This parameter is an integer | |||
| value specifying the initial flow control limit for unidirectional | value specifying the initial flow control limit for unidirectional | |||
| streams. This limit applies to newly created unidirectional | streams. This limit applies to newly created unidirectional | |||
| streams opened by the endpoint that receives the transport | streams opened by the endpoint that receives the transport | |||
| parameter. In client transport parameters, this applies to | parameter. In client transport parameters, this applies to | |||
| streams with an identifier with the least significant two bits set | streams with an identifier with the least significant two bits set | |||
| to 0x3; in server transport parameters, this applies to streams | to 0x3; in server transport parameters, this applies to streams | |||
| with the least significant two bits set to 0x2. | with the least significant two bits set to 0x2. | |||
| initial_max_streams_bidi (0x0008): The initial maximum bidirectional | initial_max_streams_bidi (0x08): The initial maximum bidirectional | |||
| streams parameter is an integer value that contains the initial | streams parameter is an integer value that contains the initial | |||
| maximum number of bidirectional streams the peer may initiate. If | maximum number of bidirectional streams the peer may initiate. If | |||
| this parameter is absent or zero, the peer cannot open | this parameter is absent or zero, the peer cannot open | |||
| bidirectional streams until a MAX_STREAMS frame is sent. Setting | bidirectional streams until a MAX_STREAMS frame is sent. Setting | |||
| this parameter is equivalent to sending a MAX_STREAMS | this parameter is equivalent to sending a MAX_STREAMS | |||
| (Section 19.11) of the corresponding type with the same value. | (Section 19.11) of the corresponding type with the same value. | |||
| initial_max_streams_uni (0x0009): The initial maximum unidirectional | initial_max_streams_uni (0x09): The initial maximum unidirectional | |||
| streams parameter is an integer value that contains the initial | streams parameter is an integer value that contains the initial | |||
| maximum number of unidirectional streams the peer may initiate. | maximum number of unidirectional streams the peer may initiate. | |||
| If this parameter is absent or zero, the peer cannot open | If this parameter is absent or zero, the peer cannot open | |||
| unidirectional streams until a MAX_STREAMS frame is sent. Setting | unidirectional streams until a MAX_STREAMS frame is sent. Setting | |||
| this parameter is equivalent to sending a MAX_STREAMS | this parameter is equivalent to sending a MAX_STREAMS | |||
| (Section 19.11) of the corresponding type with the same value. | (Section 19.11) of the corresponding type with the same value. | |||
| ack_delay_exponent (0x000a): The ACK delay exponent is an integer | ack_delay_exponent (0x0a): The ACK delay exponent is an integer | |||
| value indicating an exponent used to decode the ACK Delay field in | value indicating an exponent used to decode the ACK Delay field in | |||
| the ACK frame (Section 19.3). If this value is absent, a default | the ACK frame (Section 19.3). If this value is absent, a default | |||
| value of 3 is assumed (indicating a multiplier of 8). Values | value of 3 is assumed (indicating a multiplier of 8). Values | |||
| above 20 are invalid. | above 20 are invalid. | |||
| max_ack_delay (0x000b): The maximum ACK delay is an integer value | max_ack_delay (0x0b): The maximum ACK delay is an integer value | |||
| indicating the maximum amount of time in milliseconds by which the | indicating the maximum amount of time in milliseconds by which the | |||
| endpoint will delay sending acknowledgments. This value SHOULD | endpoint will delay sending acknowledgments. This value SHOULD | |||
| include the receiver's expected delays in alarms firing. For | include the receiver's expected delays in alarms firing. For | |||
| example, if a receiver sets a timer for 5ms and alarms commonly | example, if a receiver sets a timer for 5ms and alarms commonly | |||
| fire up to 1ms late, then it should send a max_ack_delay of 6ms. | fire up to 1ms late, then it should send a max_ack_delay of 6ms. | |||
| If this value is absent, a default of 25 milliseconds is assumed. | If this value is absent, a default of 25 milliseconds is assumed. | |||
| Values of 2^14 or greater are invalid. | Values of 2^14 or greater are invalid. | |||
| disable_active_migration (0x000c): The disable active migration | disable_active_migration (0x0c): The disable active migration | |||
| transport parameter is included if the endpoint does not support | transport parameter is included if the endpoint does not support | |||
| active connection migration (Section 9). Peers of an endpoint | active connection migration (Section 9). Peers of an endpoint | |||
| that sets this transport parameter MUST NOT send any packets, | that sets this transport parameter MUST NOT send any packets, | |||
| including probing packets (Section 9.1), from a local address or | including probing packets (Section 9.1), from a local address or | |||
| port other than that used to perform the handshake. This | port other than that used to perform the handshake. This | |||
| parameter is a zero-length value. | parameter is a zero-length value. | |||
| preferred_address (0x000d): The server's preferred address is used | preferred_address (0x0d): The server's preferred address is used to | |||
| to effect a change in server address at the end of the handshake, | effect a change in server address at the end of the handshake, as | |||
| as described in Section 9.6. The format of this transport | described in Section 9.6. The format of this transport parameter | |||
| parameter is shown in Figure 18. This transport parameter is only | is shown in Figure 18. This transport parameter is only sent by a | |||
| sent by a server. Servers MAY choose to only send a preferred | server. Servers MAY choose to only send a preferred address of | |||
| address of one address family by sending an all-zero address and | one address family by sending an all-zero address and port | |||
| port (0.0.0.0:0 or ::.0) for the other family. IP addresses are | (0.0.0.0:0 or ::.0) for the other family. IP addresses are | |||
| encoded in network byte order. The CID Length field contains the | encoded in network byte order. The CID Length field contains the | |||
| length of the Connection ID field. | length of the Connection ID field. | |||
| 0 1 2 3 | 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 | 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 | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | IPv4 Address (32) | | | IPv4 Address (32) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| | IPv4 Port (16) | | | IPv4 Port (16) | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| skipping to change at page 110, line 37 ¶ | skipping to change at page 110, line 37 ¶ | |||
| + + | + + | |||
| | | | | | | |||
| + Stateless Reset Token (128) + | + Stateless Reset Token (128) + | |||
| | | | | | | |||
| + + | + + | |||
| | | | | | | |||
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |||
| Figure 18: Preferred Address format | Figure 18: Preferred Address format | |||
| active_connection_id_limit (0x000e): The active connection ID limit | active_connection_id_limit (0x0e): The active connection ID limit is | |||
| is an integer value specifying the maximum number of connection | an integer value specifying the maximum number of connection IDs | |||
| IDs from the peer that an endpoint is willing to store. This | from the peer that an endpoint is willing to store. This value | |||
| value includes the connection ID received during the handshake, | includes the connection ID received during the handshake, that | |||
| that received in the preferred_address transport parameter, and | received in the preferred_address transport parameter, and those | |||
| those received in NEW_CONNECTION_ID frames. Unless a zero-length | received in NEW_CONNECTION_ID frames. Unless a zero-length | |||
| connection ID is being used, the value of the | connection ID is being used, the value of the | |||
| active_connection_id_limit parameter MUST be no less than 2. If | active_connection_id_limit parameter MUST be no less than 2. If | |||
| this transport parameter is absent, a default of 2 is assumed. | this transport parameter is absent, a default of 2 is assumed. | |||
| When a zero-length connection ID is being used, the | When a zero-length connection ID is being used, the | |||
| active_connection_id_limit parameter MUST NOT be sent. | active_connection_id_limit parameter MUST NOT be sent. | |||
| If present, transport parameters that set initial flow control limits | If present, transport parameters that set initial flow control limits | |||
| (initial_max_stream_data_bidi_local, | (initial_max_stream_data_bidi_local, | |||
| initial_max_stream_data_bidi_remote, and initial_max_stream_data_uni) | initial_max_stream_data_bidi_remote, and initial_max_stream_data_uni) | |||
| are equivalent to sending a MAX_STREAM_DATA frame (Section 19.10) on | are equivalent to sending a MAX_STREAM_DATA frame (Section 19.10) on | |||
| skipping to change at page 147, line 22 ¶ | skipping to change at page 147, line 22 ¶ | |||
| All registrations in this document are assigned a permanent status | All registrations in this document are assigned a permanent status | |||
| and list as contact both the IESG (ietf@ietf.org) and the QUIC | and list as contact both the IESG (ietf@ietf.org) and the QUIC | |||
| working group (quic@ietf.org). | working group (quic@ietf.org). | |||
| 22.2. QUIC Transport Parameter Registry | 22.2. QUIC Transport Parameter Registry | |||
| IANA [SHALL add/has added] a registry for "QUIC Transport Parameters" | IANA [SHALL add/has added] a registry for "QUIC Transport Parameters" | |||
| under a "QUIC" heading. | under a "QUIC" heading. | |||
| The "QUIC Transport Parameters" registry governs a 16-bit space. | The "QUIC Transport Parameters" registry governs a 62-bit space. | |||
| This registry follows the registration policy from Section 22.1. | This registry follows the registration policy from Section 22.1. | |||
| Permanent registrations in this registry are assigned using the | Permanent registrations in this registry are assigned using the | |||
| Specification Required policy [RFC8126]. | Specification Required policy [RFC8126]. | |||
| In addition to the fields in Section 22.1.1, permanent registrations | In addition to the fields in Section 22.1.1, permanent registrations | |||
| in this registry MUST include the following fields: | in this registry MUST include the following fields: | |||
| Parameter Name: A short mnemonic for the parameter. | Parameter Name: A short mnemonic for the parameter. | |||
| The initial contents of this registry are shown in Table 6. | The initial contents of this registry are shown in Table 6. | |||
| +--------+-------------------------------------+---------------+ | +-------+-------------------------------------+---------------+ | |||
| | Value | Parameter Name | Specification | | | Value | Parameter Name | Specification | | |||
| +========+=====================================+===============+ | +=======+=====================================+===============+ | |||
| | 0x0000 | original_connection_id | Section 18.2 | | | 0x00 | original_connection_id | Section 18.2 | | |||
| +--------+-------------------------------------+---------------+ | +-------+-------------------------------------+---------------+ | |||
| | 0x0001 | max_idle_timeout | Section 18.2 | | | 0x01 | max_idle_timeout | Section 18.2 | | |||
| +--------+-------------------------------------+---------------+ | +-------+-------------------------------------+---------------+ | |||
| | 0x0002 | stateless_reset_token | Section 18.2 | | | 0x02 | stateless_reset_token | Section 18.2 | | |||
| +--------+-------------------------------------+---------------+ | +-------+-------------------------------------+---------------+ | |||
| | 0x0003 | max_packet_size | Section 18.2 | | | 0x03 | max_packet_size | Section 18.2 | | |||
| +--------+-------------------------------------+---------------+ | +-------+-------------------------------------+---------------+ | |||
| | 0x0004 | initial_max_data | Section 18.2 | | | 0x04 | initial_max_data | Section 18.2 | | |||
| +--------+-------------------------------------+---------------+ | +-------+-------------------------------------+---------------+ | |||
| | 0x0005 | initial_max_stream_data_bidi_local | Section 18.2 | | | 0x05 | initial_max_stream_data_bidi_local | Section 18.2 | | |||
| +--------+-------------------------------------+---------------+ | +-------+-------------------------------------+---------------+ | |||
| | 0x0006 | initial_max_stream_data_bidi_remote | Section 18.2 | | | 0x06 | initial_max_stream_data_bidi_remote | Section 18.2 | | |||
| +--------+-------------------------------------+---------------+ | +-------+-------------------------------------+---------------+ | |||
| | 0x0007 | initial_max_stream_data_uni | Section 18.2 | | | 0x07 | initial_max_stream_data_uni | Section 18.2 | | |||
| +--------+-------------------------------------+---------------+ | +-------+-------------------------------------+---------------+ | |||
| | 0x0008 | initial_max_streams_bidi | Section 18.2 | | | 0x08 | initial_max_streams_bidi | Section 18.2 | | |||
| +--------+-------------------------------------+---------------+ | +-------+-------------------------------------+---------------+ | |||
| | 0x0009 | initial_max_streams_uni | Section 18.2 | | | 0x09 | initial_max_streams_uni | Section 18.2 | | |||
| +--------+-------------------------------------+---------------+ | +-------+-------------------------------------+---------------+ | |||
| | 0x000a | ack_delay_exponent | Section 18.2 | | | 0x0a | ack_delay_exponent | Section 18.2 | | |||
| +--------+-------------------------------------+---------------+ | +-------+-------------------------------------+---------------+ | |||
| | 0x000b | max_ack_delay | Section 18.2 | | | 0x0b | max_ack_delay | Section 18.2 | | |||
| +--------+-------------------------------------+---------------+ | +-------+-------------------------------------+---------------+ | |||
| | 0x000c | disable_active_migration | Section 18.2 | | | 0x0c | disable_active_migration | Section 18.2 | | |||
| +--------+-------------------------------------+---------------+ | +-------+-------------------------------------+---------------+ | |||
| | 0x000d | preferred_address | Section 18.2 | | | 0x0d | preferred_address | Section 18.2 | | |||
| +--------+-------------------------------------+---------------+ | +-------+-------------------------------------+---------------+ | |||
| | 0x000e | active_connection_id_limit | Section 18.2 | | | 0x0e | active_connection_id_limit | Section 18.2 | | |||
| +--------+-------------------------------------+---------------+ | +-------+-------------------------------------+---------------+ | |||
| Table 6: Initial QUIC Transport Parameters Entries | Table 6: Initial QUIC Transport Parameters Entries | |||
| Additionally, each value of the format "31 * N + 27" for integer | Additionally, each value of the format "31 * N + 27" for integer | |||
| values of N (that is, "27", "58", "89", ...) are reserved and MUST | values of N (that is, "27", "58", "89", ...) are reserved and MUST | |||
| NOT be assigned by IANA. | NOT be assigned by IANA. | |||
| 22.3. QUIC Frame Type Registry | 22.3. QUIC Frame Type Registry | |||
| IANA [SHALL add/has added] a registry for "QUIC Frame Types" under a | IANA [SHALL add/has added] a registry for "QUIC Frame Types" under a | |||
| "QUIC" heading. | "QUIC" heading. | |||
| skipping to change at page 151, line 23 ¶ | skipping to change at page 151, line 23 ¶ | |||
| <http://www.ietf.org/internet-drafts/draft-ietf-tsvwg- | <http://www.ietf.org/internet-drafts/draft-ietf-tsvwg- | |||
| datagram-plpmtud-08.txt>. | datagram-plpmtud-08.txt>. | |||
| [IPv4] Postel, J., "Internet Protocol", STD 5, RFC 791, | [IPv4] Postel, J., "Internet Protocol", STD 5, RFC 791, | |||
| DOI 10.17487/RFC0791, September 1981, | DOI 10.17487/RFC0791, September 1981, | |||
| <https://www.rfc-editor.org/info/rfc791>. | <https://www.rfc-editor.org/info/rfc791>. | |||
| [QUIC-RECOVERY] | [QUIC-RECOVERY] | |||
| Iyengar, J., Ed. and I. Swett, Ed., "QUIC Loss Detection | Iyengar, J., Ed. and I. Swett, Ed., "QUIC Loss Detection | |||
| and Congestion Control", Work in Progress, Internet-Draft, | and Congestion Control", Work in Progress, Internet-Draft, | |||
| draft-ietf-quic-recovery-26, 21 February 2020, | draft-ietf-quic-recovery-27, 21 February 2020, | |||
| <https://tools.ietf.org/html/draft-ietf-quic-recovery-26>. | <https://tools.ietf.org/html/draft-ietf-quic-recovery-27>. | |||
| [QUIC-TLS] Thomson, M., Ed. and S. Turner, Ed., "Using Transport | [QUIC-TLS] Thomson, M., Ed. and S. Turner, Ed., "Using Transport | |||
| Layer Security (TLS) to Secure QUIC", Work in Progress, | Layer Security (TLS) to Secure QUIC", Work in Progress, | |||
| Internet-Draft, draft-ietf-quic-tls-26, 21 February 2020, | Internet-Draft, draft-ietf-quic-tls-27, 21 February 2020, | |||
| <https://tools.ietf.org/html/draft-ietf-quic-tls-26>. | <https://tools.ietf.org/html/draft-ietf-quic-tls-27>. | |||
| [RFC1191] Mogul, J.C. and S.E. Deering, "Path MTU discovery", | [RFC1191] Mogul, J.C. and S.E. Deering, "Path MTU discovery", | |||
| RFC 1191, DOI 10.17487/RFC1191, November 1990, | RFC 1191, DOI 10.17487/RFC1191, November 1990, | |||
| <https://www.rfc-editor.org/info/rfc1191>. | <https://www.rfc-editor.org/info/rfc1191>. | |||
| [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 156, line 33 ¶ | skipping to change at page 156, line 33 ¶ | |||
| marked packets are discarded by the path, the short duration of the | marked packets are discarded by the path, the short duration of the | |||
| testing period limits the number of losses incurred. | testing period limits the number of losses incurred. | |||
| Appendix C. Change Log | Appendix C. 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. | |||
| Issue and pull request numbers are listed with a leading octothorp. | Issue and pull request numbers are listed with a leading octothorp. | |||
| C.1. Since draft-ietf-quic-transport-24 | C.1. Since draft-ietf-quic-transport-26 | |||
| * Change format of transport paramters to use varints (#3294, #3169) | ||||
| C.2. Since draft-ietf-quic-transport-25 | ||||
| * Define the use of CONNECTION_CLOSE prior to establishing | ||||
| connection state (#3269, #3297, #3292) | ||||
| * Allow use of address validation tokens after client address | ||||
| changes (#3307, #3308) | ||||
| * Define the timer for address validation (#2910, #3339) | ||||
| C.3. Since draft-ietf-quic-transport-24 | ||||
| * Added HANDSHAKE_DONE to signal handshake confirmation (#2863, | * Added HANDSHAKE_DONE to signal handshake confirmation (#2863, | |||
| #3142, #3145) | #3142, #3145) | |||
| * Add integrity check to Retry packets (#3014, #3274, #3120) | * Add integrity check to Retry packets (#3014, #3274, #3120) | |||
| * Specify handling of reordered NEW_CONNECTION_ID frames (#3194, | * Specify handling of reordered NEW_CONNECTION_ID frames (#3194, | |||
| #3202) | #3202) | |||
| * Require checking of sequence numbers in RETIRE_CONNECTION_ID | * Require checking of sequence numbers in RETIRE_CONNECTION_ID | |||
| skipping to change at page 157, line 38 ¶ | skipping to change at page 158, line 5 ¶ | |||
| * Idle timeout is symmetric (#2602, #3099) | * Idle timeout is symmetric (#2602, #3099) | |||
| * Prohibit IP fragmentation (#3243, #3280) | * Prohibit IP fragmentation (#3243, #3280) | |||
| * Define the use of provisional registration for all registries | * Define the use of provisional registration for all registries | |||
| (#3109, #3020, #3102, #3170) | (#3109, #3020, #3102, #3170) | |||
| * Packets on one path must not adjust values for a different path | * Packets on one path must not adjust values for a different path | |||
| (#2909, #3139) | (#2909, #3139) | |||
| C.2. Since draft-ietf-quic-transport-23 | C.4. Since draft-ietf-quic-transport-23 | |||
| * Allow ClientHello to span multiple packets (#2928, #3045) | * Allow ClientHello to span multiple packets (#2928, #3045) | |||
| * Client Initial size constraints apply to UDP datagram payload | * Client Initial size constraints apply to UDP datagram payload | |||
| (#3053, #3051) | (#3053, #3051) | |||
| * Stateless reset changes (#2152, #2993) | * Stateless reset changes (#2152, #2993) | |||
| - tokens need to be compared in constant time | - tokens need to be compared in constant time | |||
| skipping to change at page 158, line 26 ¶ | skipping to change at page 158, line 41 ¶ | |||
| * CONNECTION_CLOSE is not ack-eliciting (#3097, #3098) | * CONNECTION_CLOSE is not ack-eliciting (#3097, #3098) | |||
| * Frame encoding error conditions updated (#3027, #3042) | * Frame encoding error conditions updated (#3027, #3042) | |||
| * Non-ack-eliciting packets cannot be sent in response to non-ack- | * Non-ack-eliciting packets cannot be sent in response to non-ack- | |||
| eliciting packets (#3100, #3104) | eliciting packets (#3100, #3104) | |||
| * Servers have to change connection IDs in Retry (#2837, #3147) | * Servers have to change connection IDs in Retry (#2837, #3147) | |||
| C.3. Since draft-ietf-quic-transport-22 | C.5. Since draft-ietf-quic-transport-22 | |||
| * Rules for preventing correlation by connection ID tightened | * Rules for preventing correlation by connection ID tightened | |||
| (#2084, #2929) | (#2084, #2929) | |||
| * Clarified use of CONNECTION_CLOSE in Handshake packets (#2151, | * Clarified use of CONNECTION_CLOSE in Handshake packets (#2151, | |||
| #2541, #2688) | #2541, #2688) | |||
| * Discourage regressions of largest acknowledged in ACK (#2205, | * Discourage regressions of largest acknowledged in ACK (#2205, | |||
| #2752) | #2752) | |||
| skipping to change at page 159, line 32 ¶ | skipping to change at page 159, line 48 ¶ | |||
| #2840, #2841) | #2840, #2841) | |||
| * Explanation of the effect of Retry on 0-RTT packets (#2842, #2852) | * Explanation of the effect of Retry on 0-RTT packets (#2842, #2852) | |||
| * Cryptographic handshake needs to provide server transport | * Cryptographic handshake needs to provide server transport | |||
| parameter encryption (#2920, #2921) | parameter encryption (#2920, #2921) | |||
| * Moved ACK generation guidance from recovery draft to transport | * Moved ACK generation guidance from recovery draft to transport | |||
| draft (#1860, #2916). | draft (#1860, #2916). | |||
| C.4. Since draft-ietf-quic-transport-21 | C.6. Since draft-ietf-quic-transport-21 | |||
| * Connection ID lengths are now one octet, but limited in version 1 | * Connection ID lengths are now one octet, but limited in version 1 | |||
| to 20 octets of length (#2736, #2749) | to 20 octets of length (#2736, #2749) | |||
| C.5. Since draft-ietf-quic-transport-20 | C.7. Since draft-ietf-quic-transport-20 | |||
| * Error codes are encoded as variable-length integers (#2672, #2680) | * Error codes are encoded as variable-length integers (#2672, #2680) | |||
| * NEW_CONNECTION_ID includes a request to retire old connection IDs | * NEW_CONNECTION_ID includes a request to retire old connection IDs | |||
| (#2645, #2769) | (#2645, #2769) | |||
| * Tighter rules for generating and explicitly eliciting ACK frames | * Tighter rules for generating and explicitly eliciting ACK frames | |||
| (#2546, #2794) | (#2546, #2794) | |||
| * Recommend having only one packet per encryption level in a | * Recommend having only one packet per encryption level in a | |||
| skipping to change at page 160, line 33 ¶ | skipping to change at page 160, line 49 ¶ | |||
| * PATH_RESPONSE no longer needs to be received on the validated path | * PATH_RESPONSE no longer needs to be received on the validated path | |||
| (#2582, #2580, #2579, #2637) | (#2582, #2580, #2579, #2637) | |||
| * PATH_RESPONSE frames are not stored and retransmitted (#2724, | * PATH_RESPONSE frames are not stored and retransmitted (#2724, | |||
| #2729) | #2729) | |||
| * Document hack for enabling routing of ICMP when doing PMTU probing | * Document hack for enabling routing of ICMP when doing PMTU probing | |||
| (#1243, #2402) | (#1243, #2402) | |||
| C.6. Since draft-ietf-quic-transport-19 | C.8. Since draft-ietf-quic-transport-19 | |||
| * Refine discussion of 0-RTT transport parameters (#2467, #2464) | * Refine discussion of 0-RTT transport parameters (#2467, #2464) | |||
| * Fewer transport parameters need to be remembered for 0-RTT (#2624, | * Fewer transport parameters need to be remembered for 0-RTT (#2624, | |||
| #2467) | #2467) | |||
| * Spin bit text incorporated (#2564) | * Spin bit text incorporated (#2564) | |||
| * Close the connection when maximum stream ID in MAX_STREAMS exceeds | * Close the connection when maximum stream ID in MAX_STREAMS exceeds | |||
| 2^62 - 1 (#2499, #2487) | 2^62 - 1 (#2499, #2487) | |||
| * New connection ID required for intentional migration (#2414, | * New connection ID required for intentional migration (#2414, | |||
| #2413) | #2413) | |||
| skipping to change at page 161, line 4 ¶ | skipping to change at page 161, line 18 ¶ | |||
| * Close the connection when maximum stream ID in MAX_STREAMS exceeds | * Close the connection when maximum stream ID in MAX_STREAMS exceeds | |||
| 2^62 - 1 (#2499, #2487) | 2^62 - 1 (#2499, #2487) | |||
| * New connection ID required for intentional migration (#2414, | * New connection ID required for intentional migration (#2414, | |||
| #2413) | #2413) | |||
| * Connection ID issuance can be rate-limited (#2436, #2428) | * Connection ID issuance can be rate-limited (#2436, #2428) | |||
| * The "QUIC bit" is ignored in Version Negotiation (#2400, #2561) | * The "QUIC bit" is ignored in Version Negotiation (#2400, #2561) | |||
| * Initial packets from clients need to be padded to 1200 unless a | * Initial packets from clients need to be padded to 1200 unless a | |||
| Handshake packet is sent as well (#2522, #2523) | Handshake packet is sent as well (#2522, #2523) | |||
| * CRYPTO frames can be discarded if too much data is buffered | * CRYPTO frames can be discarded if too much data is buffered | |||
| (#1834, #2524) | (#1834, #2524) | |||
| * Stateless reset uses a short header packet (#2599, #2600) | * Stateless reset uses a short header packet (#2599, #2600) | |||
| C.7. Since draft-ietf-quic-transport-18 | C.9. Since draft-ietf-quic-transport-18 | |||
| * Removed version negotiation; version negotiation, including | * Removed version negotiation; version negotiation, including | |||
| authentication of the result, will be addressed in the next | authentication of the result, will be addressed in the next | |||
| version of QUIC (#1773, #2313) | version of QUIC (#1773, #2313) | |||
| * Added discussion of the use of IPv6 flow labels (#2348, #2399) | * Added discussion of the use of IPv6 flow labels (#2348, #2399) | |||
| * A connection ID can't be retired in a packet that uses that | * A connection ID can't be retired in a packet that uses that | |||
| connection ID (#2101, #2420) | connection ID (#2101, #2420) | |||
| * Idle timeout transport parameter is in milliseconds (from seconds) | * Idle timeout transport parameter is in milliseconds (from seconds) | |||
| (#2453, #2454) | (#2453, #2454) | |||
| * Endpoints are required to use new connection IDs when they use new | * Endpoints are required to use new connection IDs when they use new | |||
| network paths (#2413, #2414) | network paths (#2413, #2414) | |||
| * Increased the set of permissible frames in 0-RTT (#2344, #2355) | * Increased the set of permissible frames in 0-RTT (#2344, #2355) | |||
| C.8. Since draft-ietf-quic-transport-17 | C.10. Since draft-ietf-quic-transport-17 | |||
| * Stream-related errors now use STREAM_STATE_ERROR (#2305) | * Stream-related errors now use STREAM_STATE_ERROR (#2305) | |||
| * Endpoints discard initial keys as soon as handshake keys are | * Endpoints discard initial keys as soon as handshake keys are | |||
| available (#1951, #2045) | available (#1951, #2045) | |||
| * Expanded conditions for ignoring ICMP packet too big messages | * Expanded conditions for ignoring ICMP packet too big messages | |||
| (#2108, #2161) | (#2108, #2161) | |||
| * Remove rate control from PATH_CHALLENGE/PATH_RESPONSE (#2129, | * Remove rate control from PATH_CHALLENGE/PATH_RESPONSE (#2129, | |||
| skipping to change at page 162, line 23 ¶ | skipping to change at page 162, line 37 ¶ | |||
| #2301) | #2301) | |||
| * Allow server preferred address for both IPv4 and IPv6 (#2122, | * Allow server preferred address for both IPv4 and IPv6 (#2122, | |||
| #2296) | #2296) | |||
| * Corrected requirements for migration to a preferred address | * Corrected requirements for migration to a preferred address | |||
| (#2146, #2349) | (#2146, #2349) | |||
| * ACK of non-existent packet is illegal (#2298, #2302) | * ACK of non-existent packet is illegal (#2298, #2302) | |||
| C.9. Since draft-ietf-quic-transport-16 | C.11. Since draft-ietf-quic-transport-16 | |||
| * Stream limits are defined as counts, not maximums (#1850, #1906) | * Stream limits are defined as counts, not maximums (#1850, #1906) | |||
| * Require amplification attack defense after closing (#1905, #1911) | * Require amplification attack defense after closing (#1905, #1911) | |||
| * Remove reservation of application error code 0 for STOPPING | * Remove reservation of application error code 0 for STOPPING | |||
| (#1804, #1922) | (#1804, #1922) | |||
| * Renumbered frames (#1945) | * Renumbered frames (#1945) | |||
| skipping to change at page 163, line 29 ¶ | skipping to change at page 163, line 44 ¶ | |||
| * Tokens are repeated in all Initial packets (#2089) | * Tokens are repeated in all Initial packets (#2089) | |||
| * Clarified how PING frames are sent after loss (#2094) | * Clarified how PING frames are sent after loss (#2094) | |||
| * Initial keys are discarded once Handshake are available (#1951, | * Initial keys are discarded once Handshake are available (#1951, | |||
| #2045) | #2045) | |||
| * ICMP PTB validation clarifications (#2161, #2109, #2108) | * ICMP PTB validation clarifications (#2161, #2109, #2108) | |||
| C.10. Since draft-ietf-quic-transport-15 | C.12. Since draft-ietf-quic-transport-15 | |||
| Substantial editorial reorganization; no technical changes. | Substantial editorial reorganization; no technical changes. | |||
| C.11. Since draft-ietf-quic-transport-14 | C.13. Since draft-ietf-quic-transport-14 | |||
| * Merge ACK and ACK_ECN (#1778, #1801) | * Merge ACK and ACK_ECN (#1778, #1801) | |||
| * Explicitly communicate max_ack_delay (#981, #1781) | * Explicitly communicate max_ack_delay (#981, #1781) | |||
| * Validate original connection ID after Retry packets (#1710, #1486, | * Validate original connection ID after Retry packets (#1710, #1486, | |||
| #1793) | #1793) | |||
| * Idle timeout is optional and has no specified maximum (#1765) | * Idle timeout is optional and has no specified maximum (#1765) | |||
| * Update connection ID handling; add RETIRE_CONNECTION_ID type | * Update connection ID handling; add RETIRE_CONNECTION_ID type | |||
| (#1464, #1468, #1483, #1484, #1486, #1495, #1729, #1742, #1799, | (#1464, #1468, #1483, #1484, #1486, #1495, #1729, #1742, #1799, | |||
| #1821) | #1821) | |||
| * Include a Token in all Initial packets (#1649, #1794) | * Include a Token in all Initial packets (#1649, #1794) | |||
| * Prevent handshake deadlock (#1764, #1824) | * Prevent handshake deadlock (#1764, #1824) | |||
| C.12. Since draft-ietf-quic-transport-13 | C.14. Since draft-ietf-quic-transport-13 | |||
| * Streams open when higher-numbered streams of the same type open | * Streams open when higher-numbered streams of the same type open | |||
| (#1342, #1549) | (#1342, #1549) | |||
| * Split initial stream flow control limit into 3 transport | * Split initial stream flow control limit into 3 transport | |||
| parameters (#1016, #1542) | parameters (#1016, #1542) | |||
| * All flow control transport parameters are optional (#1610) | * All flow control transport parameters are optional (#1610) | |||
| * Removed UNSOLICITED_PATH_RESPONSE error code (#1265, #1539) | * Removed UNSOLICITED_PATH_RESPONSE error code (#1265, #1539) | |||
| skipping to change at page 164, line 43 ¶ | skipping to change at page 165, line 7 ¶ | |||
| * Permit 0-RTT after receiving Version Negotiation or Retry (#1507, | * Permit 0-RTT after receiving Version Negotiation or Retry (#1507, | |||
| #1514, #1621) | #1514, #1621) | |||
| * Permit Retry in response to 0-RTT (#1547, #1552) | * Permit Retry in response to 0-RTT (#1547, #1552) | |||
| * Looser verification of ECN counters to account for ACK loss | * Looser verification of ECN counters to account for ACK loss | |||
| (#1555, #1481, #1565) | (#1555, #1481, #1565) | |||
| * Remove frame type field from APPLICATION_CLOSE (#1508, #1528) | * Remove frame type field from APPLICATION_CLOSE (#1508, #1528) | |||
| C.13. Since draft-ietf-quic-transport-12 | C.15. Since draft-ietf-quic-transport-12 | |||
| * Changes to integration of the TLS handshake (#829, #1018, #1094, | * Changes to integration of the TLS handshake (#829, #1018, #1094, | |||
| #1165, #1190, #1233, #1242, #1252, #1450, #1458) | #1165, #1190, #1233, #1242, #1252, #1450, #1458) | |||
| - The cryptographic handshake uses CRYPTO frames, not stream 0 | - The cryptographic handshake uses CRYPTO frames, not stream 0 | |||
| - QUIC packet protection is used in place of TLS record | - QUIC packet protection is used in place of TLS record | |||
| protection | protection | |||
| - Separate QUIC packet number spaces are used for the handshake | - Separate QUIC packet number spaces are used for the handshake | |||
| skipping to change at page 165, line 38 ¶ | skipping to change at page 165, line 50 ¶ | |||
| * Fixed sampling method for packet number encryption; the length | * Fixed sampling method for packet number encryption; the length | |||
| field in long headers includes the packet number field in addition | field in long headers includes the packet number field in addition | |||
| to the packet payload (#1387, #1389) | to the packet payload (#1387, #1389) | |||
| * Stateless Reset is now symmetric and subject to size constraints | * Stateless Reset is now symmetric and subject to size constraints | |||
| (#466, #1346) | (#466, #1346) | |||
| * Added frame type extension mechanism (#58, #1473) | * Added frame type extension mechanism (#58, #1473) | |||
| C.14. Since draft-ietf-quic-transport-11 | C.16. Since draft-ietf-quic-transport-11 | |||
| * Enable server to transition connections to a preferred address | * Enable server to transition connections to a preferred address | |||
| (#560, #1251) | (#560, #1251) | |||
| * Packet numbers are encrypted (#1174, #1043, #1048, #1034, #850, | * Packet numbers are encrypted (#1174, #1043, #1048, #1034, #850, | |||
| #990, #734, #1317, #1267, #1079) | #990, #734, #1317, #1267, #1079) | |||
| * Packet numbers use a variable-length encoding (#989, #1334) | * Packet numbers use a variable-length encoding (#989, #1334) | |||
| * STREAM frames can now be empty (#1350) | * STREAM frames can now be empty (#1350) | |||
| C.15. Since draft-ietf-quic-transport-10 | C.17. Since draft-ietf-quic-transport-10 | |||
| * Swap payload length and packed number fields in long header | * Swap payload length and packed number fields in long header | |||
| (#1294) | (#1294) | |||
| * Clarified that CONNECTION_CLOSE is allowed in Handshake packet | * Clarified that CONNECTION_CLOSE is allowed in Handshake packet | |||
| (#1274) | (#1274) | |||
| * Spin bit reserved (#1283) | * Spin bit reserved (#1283) | |||
| * Coalescing multiple QUIC packets in a UDP datagram (#1262, #1285) | * Coalescing multiple QUIC packets in a UDP datagram (#1262, #1285) | |||
| skipping to change at page 166, line 38 ¶ | skipping to change at page 166, line 50 ¶ | |||
| * STOP_SENDING is now prohibited before streams are used (#1050) | * STOP_SENDING is now prohibited before streams are used (#1050) | |||
| * Recommend including ACK in Retry packets and allow PADDING (#1067, | * Recommend including ACK in Retry packets and allow PADDING (#1067, | |||
| #882) | #882) | |||
| * Endpoints now become closing after an idle timeout (#1178, #1179) | * Endpoints now become closing after an idle timeout (#1178, #1179) | |||
| * Remove implication that Version Negotiation is sent when a packet | * Remove implication that Version Negotiation is sent when a packet | |||
| of the wrong version is received (#1197) | of the wrong version is received (#1197) | |||
| C.16. Since draft-ietf-quic-transport-09 | C.18. Since draft-ietf-quic-transport-09 | |||
| * Added PATH_CHALLENGE and PATH_RESPONSE frames to replace PING with | * Added PATH_CHALLENGE and PATH_RESPONSE frames to replace PING with | |||
| Data and PONG frame. Changed ACK frame type from 0x0e to 0x0d. | Data and PONG frame. Changed ACK frame type from 0x0e to 0x0d. | |||
| (#1091, #725, #1086) | (#1091, #725, #1086) | |||
| * A server can now only send 3 packets without validating the client | * A server can now only send 3 packets without validating the client | |||
| address (#38, #1090) | address (#38, #1090) | |||
| * Delivery order of stream data is no longer strongly specified | * Delivery order of stream data is no longer strongly specified | |||
| (#252, #1070) | (#252, #1070) | |||
| skipping to change at page 167, line 4 ¶ | skipping to change at page 167, line 15 ¶ | |||
| Data and PONG frame. Changed ACK frame type from 0x0e to 0x0d. | Data and PONG frame. Changed ACK frame type from 0x0e to 0x0d. | |||
| (#1091, #725, #1086) | (#1091, #725, #1086) | |||
| * A server can now only send 3 packets without validating the client | * A server can now only send 3 packets without validating the client | |||
| address (#38, #1090) | address (#38, #1090) | |||
| * Delivery order of stream data is no longer strongly specified | * Delivery order of stream data is no longer strongly specified | |||
| (#252, #1070) | (#252, #1070) | |||
| * Rework of packet handling and version negotiation (#1038) | * Rework of packet handling and version negotiation (#1038) | |||
| * Stream 0 is now exempt from flow control until the handshake | * Stream 0 is now exempt from flow control until the handshake | |||
| completes (#1074, #725, #825, #1082) | completes (#1074, #725, #825, #1082) | |||
| * Improved retransmission rules for all frame types: information is | * Improved retransmission rules for all frame types: information is | |||
| retransmitted, not packets or frames (#463, #765, #1095, #1053) | retransmitted, not packets or frames (#463, #765, #1095, #1053) | |||
| * Added an error code for server busy signals (#1137) | * Added an error code for server busy signals (#1137) | |||
| * Endpoints now set the connection ID that their peer uses. | * Endpoints now set the connection ID that their peer uses. | |||
| Connection IDs are variable length. Removed the | Connection IDs are variable length. Removed the | |||
| omit_connection_id transport parameter and the corresponding short | omit_connection_id transport parameter and the corresponding short | |||
| header flag. (#1089, #1052, #1146, #821, #745, #821, #1166, #1151) | header flag. (#1089, #1052, #1146, #821, #745, #821, #1166, #1151) | |||
| C.17. Since draft-ietf-quic-transport-08 | C.19. Since draft-ietf-quic-transport-08 | |||
| * Clarified requirements for BLOCKED usage (#65, #924) | * Clarified requirements for BLOCKED usage (#65, #924) | |||
| * BLOCKED frame now includes reason for blocking (#452, #924, #927, | * BLOCKED frame now includes reason for blocking (#452, #924, #927, | |||
| #928) | #928) | |||
| * GAP limitation in ACK Frame (#613) | * GAP limitation in ACK Frame (#613) | |||
| * Improved PMTUD description (#614, #1036) | * Improved PMTUD description (#614, #1036) | |||
| skipping to change at page 167, line 45 ¶ | skipping to change at page 168, line 10 ¶ | |||
| * Stateless reset clarified as version-specific (#930, #986) | * Stateless reset clarified as version-specific (#930, #986) | |||
| * initial_max_stream_id_x transport parameters are optional (#970, | * initial_max_stream_id_x transport parameters are optional (#970, | |||
| #971) | #971) | |||
| * Ack Delay assumes a default value during the handshake (#1007, | * Ack Delay assumes a default value during the handshake (#1007, | |||
| #1009) | #1009) | |||
| * Removed transport parameters from NewSessionTicket (#1015) | * Removed transport parameters from NewSessionTicket (#1015) | |||
| C.18. Since draft-ietf-quic-transport-07 | C.20. Since draft-ietf-quic-transport-07 | |||
| * The long header now has version before packet number (#926, #939) | * The long header now has version before packet number (#926, #939) | |||
| * Rename and consolidate packet types (#846, #822, #847) | * Rename and consolidate packet types (#846, #822, #847) | |||
| * Packet types are assigned new codepoints and the Connection ID | * Packet types are assigned new codepoints and the Connection ID | |||
| Flag is inverted (#426, #956) | Flag is inverted (#426, #956) | |||
| * Removed type for Version Negotiation and use Version 0 (#963, | * Removed type for Version Negotiation and use Version 0 (#963, | |||
| #968) | #968) | |||
| * Streams are split into unidirectional and bidirectional (#643, | * Streams are split into unidirectional and bidirectional (#643, | |||
| #656, #720, #872, #175, #885) | #656, #720, #872, #175, #885) | |||
| - Stream limits now have separate uni- and bi-directional | - Stream limits now have separate uni- and bi-directional | |||
| skipping to change at page 168, line 42 ¶ | skipping to change at page 169, line 5 ¶ | |||
| * Address validation for connection migration (#161, #732, #878) | * Address validation for connection migration (#161, #732, #878) | |||
| * Clearly defined retransmission rules for BLOCKED (#452, #65, #924) | * Clearly defined retransmission rules for BLOCKED (#452, #65, #924) | |||
| * negotiated_version is sent in server transport parameters (#710, | * negotiated_version is sent in server transport parameters (#710, | |||
| #959) | #959) | |||
| * Increased the range over which packet numbers are randomized | * Increased the range over which packet numbers are randomized | |||
| (#864, #850, #964) | (#864, #850, #964) | |||
| C.19. Since draft-ietf-quic-transport-06 | C.21. Since draft-ietf-quic-transport-06 | |||
| * Replaced FNV-1a with AES-GCM for all "Cleartext" packets (#554) | * Replaced FNV-1a with AES-GCM for all "Cleartext" packets (#554) | |||
| * Split error code space between application and transport (#485) | * Split error code space between application and transport (#485) | |||
| * Stateless reset token moved to end (#820) | * Stateless reset token moved to end (#820) | |||
| * 1-RTT-protected long header types removed (#848) | * 1-RTT-protected long header types removed (#848) | |||
| * No acknowledgments during draining period (#852) | * No acknowledgments during draining period (#852) | |||
| * Remove "application close" as a separate close type (#854) | * Remove "application close" as a separate close type (#854) | |||
| * Remove timestamps from the ACK frame (#841) | * Remove timestamps from the ACK frame (#841) | |||
| * Require transport parameters to only appear once (#792) | * Require transport parameters to only appear once (#792) | |||
| C.20. Since draft-ietf-quic-transport-05 | C.22. Since draft-ietf-quic-transport-05 | |||
| * Stateless token is server-only (#726) | * Stateless token is server-only (#726) | |||
| * Refactor section on connection termination (#733, #748, #328, | * Refactor section on connection termination (#733, #748, #328, | |||
| #177) | #177) | |||
| * Limit size of Version Negotiation packet (#585) | * Limit size of Version Negotiation packet (#585) | |||
| * Clarify when and what to ack (#736) | * Clarify when and what to ack (#736) | |||
| * Renamed STREAM_ID_NEEDED to STREAM_ID_BLOCKED | * Renamed STREAM_ID_NEEDED to STREAM_ID_BLOCKED | |||
| * Clarify Keep-alive requirements (#729) | * Clarify Keep-alive requirements (#729) | |||
| C.21. Since draft-ietf-quic-transport-04 | C.23. Since draft-ietf-quic-transport-04 | |||
| * Introduce STOP_SENDING frame, RESET_STREAM only resets in one | * Introduce STOP_SENDING frame, RESET_STREAM only resets in one | |||
| direction (#165) | direction (#165) | |||
| * Removed GOAWAY; application protocols are responsible for graceful | * Removed GOAWAY; application protocols are responsible for graceful | |||
| shutdown (#696) | shutdown (#696) | |||
| * Reduced the number of error codes (#96, #177, #184, #211) | * Reduced the number of error codes (#96, #177, #184, #211) | |||
| * Version validation fields can't move or change (#121) | * Version validation fields can't move or change (#121) | |||
| skipping to change at page 170, line 4 ¶ | skipping to change at page 170, line 13 ¶ | |||
| NewSessionTicket message (#547) | NewSessionTicket message (#547) | |||
| * Clarify the meaning of "bytes in flight" (#550) | * Clarify the meaning of "bytes in flight" (#550) | |||
| * Public reset is now stateless reset and not visible to the path | * Public reset is now stateless reset and not visible to the path | |||
| (#215) | (#215) | |||
| * Reordered bits and fields in STREAM frame (#620) | * Reordered bits and fields in STREAM frame (#620) | |||
| * Clarifications to the stream state machine (#572, #571) | * Clarifications to the stream state machine (#572, #571) | |||
| * Increased the maximum length of the Largest Acknowledged field in | * Increased the maximum length of the Largest Acknowledged field in | |||
| ACK frames to 64 bits (#629) | ACK frames to 64 bits (#629) | |||
| * truncate_connection_id is renamed to omit_connection_id (#659) | * truncate_connection_id is renamed to omit_connection_id (#659) | |||
| * CONNECTION_CLOSE terminates the connection like TCP RST (#330, | * CONNECTION_CLOSE terminates the connection like TCP RST (#330, | |||
| #328) | #328) | |||
| * Update labels used in HKDF-Expand-Label to match TLS 1.3 (#642) | * Update labels used in HKDF-Expand-Label to match TLS 1.3 (#642) | |||
| C.22. Since draft-ietf-quic-transport-03 | C.24. Since draft-ietf-quic-transport-03 | |||
| * Change STREAM and RESET_STREAM layout | * Change STREAM and RESET_STREAM layout | |||
| * Add MAX_STREAM_ID settings | * Add MAX_STREAM_ID settings | |||
| C.23. Since draft-ietf-quic-transport-02 | C.25. Since draft-ietf-quic-transport-02 | |||
| * The size of the initial packet payload has a fixed minimum (#267, | * The size of the initial packet payload has a fixed minimum (#267, | |||
| #472) | #472) | |||
| * Define when Version Negotiation packets are ignored (#284, #294, | * Define when Version Negotiation packets are ignored (#284, #294, | |||
| #241, #143, #474) | #241, #143, #474) | |||
| * The 64-bit FNV-1a algorithm is used for integrity protection of | * The 64-bit FNV-1a algorithm is used for integrity protection of | |||
| unprotected packets (#167, #480, #481, #517) | unprotected packets (#167, #480, #481, #517) | |||
| skipping to change at page 171, line 4 ¶ | skipping to change at page 171, line 13 ¶ | |||
| different handshake protocol (#516) | different handshake protocol (#516) | |||
| * STREAM frames have a reduced number of offset lengths (#543, #430) | * STREAM frames have a reduced number of offset lengths (#543, #430) | |||
| * Split some frames into separate connection- and stream- level | * Split some frames into separate connection- and stream- level | |||
| frames (#443) | frames (#443) | |||
| - WINDOW_UPDATE split into MAX_DATA and MAX_STREAM_DATA (#450) | - WINDOW_UPDATE split into MAX_DATA and MAX_STREAM_DATA (#450) | |||
| - BLOCKED split to match WINDOW_UPDATE split (#454) | - BLOCKED split to match WINDOW_UPDATE split (#454) | |||
| - Define STREAM_ID_NEEDED frame (#455) | - Define STREAM_ID_NEEDED frame (#455) | |||
| * A NEW_CONNECTION_ID frame supports connection migration without | * A NEW_CONNECTION_ID frame supports connection migration without | |||
| linkability (#232, #491, #496) | linkability (#232, #491, #496) | |||
| * Transport parameters for 0-RTT are retained from a previous | * Transport parameters for 0-RTT are retained from a previous | |||
| connection (#405, #513, #512) | connection (#405, #513, #512) | |||
| - A client in 0-RTT no longer required to reset excess streams | - A client in 0-RTT no longer required to reset excess streams | |||
| (#425, #479) | (#425, #479) | |||
| * Expanded security considerations (#440, #444, #445, #448) | * Expanded security considerations (#440, #444, #445, #448) | |||
| C.24. Since draft-ietf-quic-transport-01 | C.26. Since draft-ietf-quic-transport-01 | |||
| * Defined short and long packet headers (#40, #148, #361) | * Defined short and long packet headers (#40, #148, #361) | |||
| * Defined a versioning scheme and stable fields (#51, #361) | * Defined a versioning scheme and stable fields (#51, #361) | |||
| * Define reserved version values for "greasing" negotiation (#112, | * Define reserved version values for "greasing" negotiation (#112, | |||
| #278) | #278) | |||
| * The initial packet number is randomized (#35, #283) | * The initial packet number is randomized (#35, #283) | |||
| skipping to change at page 173, line 17 ¶ | skipping to change at page 173, line 25 ¶ | |||
| * Remove error code and reason phrase from GOAWAY (#352, #355) | * Remove error code and reason phrase from GOAWAY (#352, #355) | |||
| * GOAWAY includes a final stream number for both directions (#347) | * GOAWAY includes a final stream number for both directions (#347) | |||
| * Error codes for RESET_STREAM and CONNECTION_CLOSE are now at a | * Error codes for RESET_STREAM and CONNECTION_CLOSE are now at a | |||
| consistent offset (#249) | consistent offset (#249) | |||
| * Defined priority as the responsibility of the application protocol | * Defined priority as the responsibility of the application protocol | |||
| (#104, #303) | (#104, #303) | |||
| C.25. Since draft-ietf-quic-transport-00 | C.27. Since draft-ietf-quic-transport-00 | |||
| * Replaced DIVERSIFICATION_NONCE flag with KEY_PHASE flag | * Replaced DIVERSIFICATION_NONCE flag with KEY_PHASE flag | |||
| * Defined versioning | * Defined versioning | |||
| * Reworked description of packet and frame layout | * Reworked description of packet and frame layout | |||
| * Error code space is divided into regions for each component | * Error code space is divided into regions for each component | |||
| * Use big endian for all numeric values | * Use big endian for all numeric values | |||
| C.26. Since draft-hamilton-quic-transport-protocol-01 | C.28. Since draft-hamilton-quic-transport-protocol-01 | |||
| * Adopted as base for draft-ietf-quic-tls | * Adopted as base for draft-ietf-quic-tls | |||
| * Updated authors/editors list | * Updated authors/editors list | |||
| * Added IANA Considerations section | * Added IANA Considerations section | |||
| * Moved Contributors and Acknowledgments to appendices | * Moved Contributors and Acknowledgments to appendices | |||
| Contributors | Contributors | |||
| End of changes. 61 change blocks. | ||||
| 131 lines changed or deleted | 149 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/ | ||||