From 3c796fb70a7a00b0be4eb194ee7d5bcfbee358df Mon Sep 17 00:00:00 2001 From: ID Bot Date: Wed, 8 Jan 2020 05:27:52 +0000 Subject: [PATCH] Script updating gh-pages from e8c7b2ff. [ci skip] --- ecn-alg/draft-ietf-quic-http.html | 654 +++--- ecn-alg/draft-ietf-quic-http.txt | 126 +- ecn-alg/draft-ietf-quic-invariants.html | 86 +- ecn-alg/draft-ietf-quic-invariants.txt | 28 +- ecn-alg/draft-ietf-quic-qpack.html | 278 +-- ecn-alg/draft-ietf-quic-qpack.txt | 84 +- ecn-alg/draft-ietf-quic-recovery.html | 490 ++--- ecn-alg/draft-ietf-quic-recovery.txt | 90 +- ecn-alg/draft-ietf-quic-tls.html | 420 ++-- ecn-alg/draft-ietf-quic-tls.txt | 110 +- ecn-alg/draft-ietf-quic-transport.html | 1996 +++++++++---------- ecn-alg/draft-ietf-quic-transport.txt | 1298 ++++++------ index.html | 2400 +++++++++++------------ 13 files changed, 4059 insertions(+), 4001 deletions(-) diff --git a/ecn-alg/draft-ietf-quic-http.html b/ecn-alg/draft-ietf-quic-http.html index 12ae6d3e6c..573c423f6b 100644 --- a/ecn-alg/draft-ietf-quic-http.html +++ b/ecn-alg/draft-ietf-quic-http.html @@ -13,7 +13,7 @@ semantics over QUIC. This document also identifies HTTP/2 features that are subsumed by QUIC, and describes how HTTP/2 extensions can be ported to HTTP/3. " name="description"> - + @@ -822,7 +822,7 @@ Bishop -Expires 10 July 2020 +Expires 11 July 2020 [Page] @@ -835,12 +835,12 @@
draft-ietf-quic-http-latest
Published:
- +
Intended Status:
Standards Track
Expires:
-
+
Author:
@@ -890,7 +890,7 @@

time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

- This Internet-Draft will expire on 10 July 2020.

+ This Internet-Draft will expire on 11 July 2020.

@@ -1346,35 +1346,35 @@

  • Connection Setup and Management (Section 3) covers how an HTTP/3 endpoint is discovered and a connection is established.
  • -
  • HTTP Request Lifecycle (Section 4) describes how HTTP +
  • HTTP Request Lifecycle (Section 4) describes how HTTP semantics are expressed using frames.
  • -
  • Connection Closure (Section 5) describes how connections are +
  • Connection Closure (Section 5) describes how connections are terminated, either gracefully or abruptly.
  • - +

    The details of the wire protocol and interactions with the transport are described in subsequent sections:

    • Stream Mapping and Usage (Section 6) describes the way QUIC streams are used.
    • -
    • HTTP Framing Layer (Section 7) describes the frames used on +
    • HTTP Framing Layer (Section 7) describes the frames used on most streams.
    • -
    • Error Handling (Section 8) describes how error conditions are handled and +
    • Error Handling (Section 8) describes how error conditions are handled and expressed, either on a particular stream or for the connection as a whole.
    • -
    +

    Additional resources are provided in the final sections:

    • Extensions to HTTP/3 (Section 9) describes how new capabilities can be added in future documents.
    • -
    • A more detailed comparison between HTTP/2 and HTTP/3 can be found in +
    • A more detailed comparison between HTTP/2 and HTTP/3 can be found in Appendix A.
    • -
    +
    @@ -1393,30 +1393,30 @@

    The following terms are used:

    abort:
    -
    +
    An abrupt termination of a connection or stream, possibly due to an error condition.
    client:
    -
    +
    The endpoint that initiates an HTTP/3 connection. Clients send HTTP requests and receive HTTP responses.
    connection:
    -
    +
    A transport-layer connection between two endpoints, using QUIC as the transport protocol.
    connection error:
    -
    +
    An error that affects the entire HTTP/3 connection.
    endpoint:
    -
    +
    Either the client or server of the connection.
    frame:
    -
    +
    The smallest unit of communication on a stream in HTTP/3, consisting of a header and a variable-length sequence of bytes structured according to the frame type. @@ -1428,29 +1428,29 @@

    Section 7.2.

    peer:
    -
    +
    An endpoint. When discussing a particular endpoint, "peer" refers to the endpoint that is remote to the primary subject of discussion.
    receiver:
    -
    +
    An endpoint that is receiving frames.
    sender:
    -
    +
    An endpoint that is transmitting frames.
    server:
    -
    +
    The endpoint that accepts an HTTP/3 connection. Servers receive HTTP requests and send HTTP responses.
    stream:
    -
    +
    A bidirectional or unidirectional bytestream provided by the QUIC transport.
    stream error:
    -
    +
    An error on the individual HTTP/3 stream.
    @@ -1477,7 +1477,7 @@

    RFC Editor's Note: Please remove this section prior to publication of a final version of this document. - +

    HTTP/3 uses the token "h3" to identify itself in ALPN and Alt-Svc. Only implementations of the final, published RFC can identify themselves as "h3". Until such an RFC exists, implementations MUST NOT identify themselves using @@ -1592,13 +1592,13 @@

  • the message header (see [RFC7230], Section 3.2), sent as a single HEADERS frame (see Section 7.2.2),
  • -
  • optionally, the payload body, if present (see [RFC7230], Section 3.3), +
  • optionally, the payload body, if present (see [RFC7230], Section 3.3), sent as a series of DATA frames (see Section 7.2.1),
  • -
  • optionally, trailing headers, if present (see [RFC7230], Section 4.1.2), +
  • optionally, trailing headers, if present (see [RFC7230], Section 4.1.2), sent as a single HEADERS frame.
  • - +

    A server MAY send one or more PUSH_PROMISE (see Section 7.2.5) or DUPLICATE_PUSH (see Section 7.2.8) frames before, after, or interleaved with the frames of a response message. These PUSH_PROMISE and @@ -2307,16 +2307,16 @@

    A frame includes the following fields:

    Type:
    -
    +
    A variable-length integer that identifies the frame type.
    Length:
    -
    +
    A variable-length integer that describes the length in bytes of the Frame Payload.
    Frame Payload:
    -
    +
    A payload, the semantics of which are determined by the Type field.
    @@ -2503,7 +2503,7 @@

    The following settings are defined in HTTP/3:

    SETTINGS_MAX_HEADER_LIST_SIZE (0x6):
    -
    +
    The default value is unlimited. See Section 4.1.1 for usage.
    @@ -2597,13 +2597,13 @@

    The payload consists of:

    Push ID:
    -
    +
    A variable-length integer that identifies the server push operation. A Push ID is used in push stream headers (Section 4.4), CANCEL_PUSH frames (Section 7.2.3), and DUPLICATE_PUSH frames (Section 7.2.8).
    Header Block:
    -
    +
    QPACK-compressed request header fields for the promised response. See [QPACK] for more details.
    @@ -2794,74 +2794,74 @@

    aborting reading of streams, or immediately closing connections.

    H3_NO_ERROR (0x100):
    -
    +
    No error. This is used when the connection or stream needs to be closed, but there is no error to signal.
    H3_GENERAL_PROTOCOL_ERROR (0x101):
    -
    +
    Peer violated protocol requirements in a way which doesn't match a more specific error code, or endpoint declines to use the more specific error code.
    H3_INTERNAL_ERROR (0x102):
    -
    +
    An internal error has occurred in the HTTP stack.
    H3_STREAM_CREATION_ERROR (0x103):
    -
    +
    The endpoint detected that its peer created a stream that it will not accept.
    H3_CLOSED_CRITICAL_STREAM (0x104):
    -
    +
    A stream required by the connection was closed or reset.
    H3_FRAME_UNEXPECTED (0x105):
    -
    +
    A frame was received which was not permitted in the current state or on the current stream.
    H3_FRAME_ERROR (0x106):
    -
    +
    A frame that fails to satisfy layout requirements or with an invalid size was received.
    H3_EXCESSIVE_LOAD (0x107):
    -
    +
    The endpoint detected that its peer is exhibiting a behavior that might be generating excessive load.
    H3_ID_ERROR (0x108):
    -
    +
    A Stream ID or Push ID was used incorrectly, such as exceeding a limit, reducing a limit, or being reused.
    H3_SETTINGS_ERROR (0x109):
    -
    +
    An endpoint detected an error in the payload of a SETTINGS frame.
    H3_MISSING_SETTINGS (0x10A):
    -
    +
    No SETTINGS frame was received at the beginning of the control stream.
    H3_REQUEST_REJECTED (0x10B):
    -
    +
    A server rejected a request without performing any application processing.
    H3_REQUEST_CANCELLED (0x10C):
    -
    +
    The request or its response (including pushed response) is cancelled.
    H3_REQUEST_INCOMPLETE (0x10D):
    -
    +
    The client's stream terminated without containing a fully-formed request.
    H3_CONNECT_ERROR (0x10F):
    -
    +
    The connection established in response to a CONNECT request was reset or abnormally closed.
    H3_VERSION_FALLBACK (0x110):
    -
    +
    The requested operation cannot be served over HTTP/3. The peer should retry over HTTP/1.1.
    @@ -2988,15 +2988,15 @@

    The "h3" string identifies HTTP/3:

    Protocol:
    -
    +
    HTTP/3
    Identification Sequence:
    -
    +
    0x68 0x33 ("h3")
    Specification:
    -
    +
    This document
    @@ -3034,7 +3034,7 @@

    registrations in this registry MUST include the following field:

    Frame Type:
    -
    +
    A name or label for the frame type.
    @@ -3159,11 +3159,11 @@

    registrations in this registry MUST include the following fields:

    Setting Name:
    -
    +
    A symbolic name for the setting. Specifying a setting name is optional.
    Default:
    -
    +
    The value of the setting unless otherwise indicated. A default SHOULD be the most restrictive possible value.
    @@ -3244,11 +3244,11 @@

    registrations in this registry MUST include the following fields:

    Name:
    -
    +
    A name for the error code. Specifying an error code name is optional.
    Description:
    -
    +
    A brief description of the error code semantics.
    @@ -3417,11 +3417,11 @@

    registrations in this registry MUST include the following fields:

    Stream Type:
    -
    +
    A name or label for the stream type.
    Sender:
    -
    +
    Which endpoint on a connection may initiate a stream of this type. Values are "Client", "Server", or "Both".
    @@ -3477,52 +3477,52 @@

    [ALTSVC]
    -
    +
    Nottingham, M., McManus, P., and J. Reschke, "HTTP Alternative Services", RFC 7838, DOI 10.17487/RFC7838, , <https://www.rfc-editor.org/info/rfc7838>.
    [HTTP-REPLAY]
    -
    +
    Thomson, M., Nottingham, M., and W. Tarreau, "Using Early Data in HTTP", RFC 8470, DOI 10.17487/RFC8470, , <https://www.rfc-editor.org/info/rfc8470>.
    [HTTP2]
    -
    +
    Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext Transfer Protocol Version 2 (HTTP/2)", RFC 7540, DOI 10.17487/RFC7540, , <https://www.rfc-editor.org/info/rfc7540>.
    [QPACK]
    -
    -Krasic, C., Bishop, M., and A. Frindell, Ed., "QPACK: Header Compression for HTTP over QUIC", Work in Progress, Internet-Draft, draft-ietf-quic-qpack-latest, , <https://tools.ietf.org/html/draft-ietf-quic-qpack-latest>.
    +
    +Krasic, C., Bishop, M., and A. Frindell, Ed., "QPACK: Header Compression for HTTP over QUIC", Work in Progress, Internet-Draft, draft-ietf-quic-qpack-latest, , <https://tools.ietf.org/html/draft-ietf-quic-qpack-latest>.
    [QUIC-TRANSPORT]
    -
    -Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", Work in Progress, Internet-Draft, draft-ietf-quic-transport-latest, , <https://tools.ietf.org/html/draft-ietf-quic-transport-latest>.
    +
    +Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", Work in Progress, Internet-Draft, draft-ietf-quic-transport-latest, , <https://tools.ietf.org/html/draft-ietf-quic-transport-latest>.
    [RFC0793]
    -
    +
    Postel, J., "Transmission Control Protocol", STD 7, RFC 793, DOI 10.17487/RFC0793, , <https://www.rfc-editor.org/info/rfc793>.
    [RFC2119]
    -
    +
    Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
    [RFC5234]
    -
    +
    Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", STD 68, RFC 5234, DOI 10.17487/RFC5234, , <https://www.rfc-editor.org/info/rfc5234>.
    [RFC6066]
    -
    +
    Eastlake 3rd, D., "Transport Layer Security (TLS) Extensions: Extension Definitions", RFC 6066, DOI 10.17487/RFC6066, , <https://www.rfc-editor.org/info/rfc6066>.
    [RFC6265]
    -
    +
    Barth, A., "HTTP State Management Mechanism", RFC 6265, DOI 10.17487/RFC6265, , <https://www.rfc-editor.org/info/rfc6265>.
    [RFC7230]
    -
    +
    Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing", RFC 7230, DOI 10.17487/RFC7230, , <https://www.rfc-editor.org/info/rfc7230>.
    [RFC7231]
    -
    +
    Fielding, R., Ed. and J. Reschke, Ed., "Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content", RFC 7231, DOI 10.17487/RFC7231, , <https://www.rfc-editor.org/info/rfc7231>.
    [RFC7838]
    -
    +
    Nottingham, M., McManus, P., and J. Reschke, "HTTP Alternative Services", RFC 7838, DOI 10.17487/RFC7838, , <https://www.rfc-editor.org/info/rfc7838>.
    [RFC8126]
    -
    +
    Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10.17487/RFC8126, , <https://www.rfc-editor.org/info/rfc8126>.
    [RFC8164]
    -
    +
    Nottingham, M. and M. Thomson, "Opportunistic Security for HTTP/2", RFC 8164, DOI 10.17487/RFC8164, , <https://www.rfc-editor.org/info/rfc8164>.
    [RFC8174]
    -
    +
    Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.
    @@ -3532,16 +3532,16 @@

    [HPACK]
    -
    +
    Peon, R. and H. Ruellan, "HPACK: Header Compression for HTTP/2", RFC 7541, DOI 10.17487/RFC7541, , <https://www.rfc-editor.org/info/rfc7541>.
    [RFC6585]
    -
    +
    Nottingham, M. and R. Fielding, "Additional HTTP Status Codes", RFC 6585, DOI 10.17487/RFC6585, , <https://www.rfc-editor.org/info/rfc6585>.
    [RFC7301]
    -
    +
    Friedl, S., Popov, A., Langley, A., and E. Stephan, "Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension", RFC 7301, DOI 10.17487/RFC7301, , <https://www.rfc-editor.org/info/rfc7301>.
    [RFC7413]
    -
    +
    Cheng, Y., Chu, J., Radhakrishnan, S., and A. Jain, "TCP Fast Open", RFC 7413, DOI 10.17487/RFC7413, , <https://www.rfc-editor.org/info/rfc7413>.
    @@ -3668,51 +3668,51 @@

    DATA (0x0):
    -
    +
    Padding is not defined in HTTP/3 frames. See Section 7.2.1.
    HEADERS (0x1):
    -
    +
    The PRIORITY region of HEADERS is not defined in HTTP/3 frames. Padding is not defined in HTTP/3 frames. See Section 7.2.2.
    PRIORITY (0x2):
    -
    +
    As described in Appendix A.2.1, HTTP/3 does not provide a means of signaling priority.
    RST_STREAM (0x3):
    -
    +
    RST_STREAM frames do not exist, since QUIC provides stream lifecycle management. The same code point is used for the CANCEL_PUSH frame (Section 7.2.3).
    SETTINGS (0x4):
    -
    +
    SETTINGS frames are sent only at the beginning of the connection. See Section 7.2.4 and Appendix A.3.
    PUSH_PROMISE (0x5):
    -
    +
    The PUSH_PROMISE does not reference a stream; instead the push stream references the PUSH_PROMISE frame using a Push ID. See Section 7.2.5.
    PING (0x6):
    -
    +
    PING frames do not exist, since QUIC provides equivalent functionality.
    GOAWAY (0x7):
    -
    +
    GOAWAY is sent only from server to client and does not contain an error code. See Section 7.2.6.
    WINDOW_UPDATE (0x8):
    -
    +
    WINDOW_UPDATE frames do not exist, since QUIC provides flow control.
    CONTINUATION (0x9):
    -
    +
    CONTINUATION frames do not exist; instead, larger HEADERS/PUSH_PROMISE frames than HTTP/2 are permitted.
    @@ -3740,32 +3740,32 @@

    Below is a listing of how each HTTP/2 SETTINGS parameter is mapped:

    SETTINGS_HEADER_TABLE_SIZE:
    -
    +
    See [QPACK].
    SETTINGS_ENABLE_PUSH:
    -
    +
    This is removed in favor of the MAX_PUSH_ID which provides a more granular control over server push.
    SETTINGS_MAX_CONCURRENT_STREAMS:
    -
    +
    QUIC controls the largest open Stream ID as part of its flow control logic. Specifying SETTINGS_MAX_CONCURRENT_STREAMS in the SETTINGS frame is an error.
    SETTINGS_INITIAL_WINDOW_SIZE:
    -
    +
    QUIC requires both stream and connection flow control window sizes to be specified in the initial transport handshake. Specifying SETTINGS_INITIAL_WINDOW_SIZE in the SETTINGS frame is an error.
    SETTINGS_MAX_FRAME_SIZE:
    -
    +
    This setting has no equivalent in HTTP/3. Specifying it in the SETTINGS frame is an error.
    SETTINGS_MAX_HEADER_LIST_SIZE:
    -
    +
    See Section 7.2.4.1.
    @@ -3798,64 +3798,64 @@

    the HTTP/3 error codes as follows:

    NO_ERROR (0x0):
    -
    +
    H3_NO_ERROR in Section 8.1.
    PROTOCOL_ERROR (0x1):
    -
    +
    This is mapped to H3_GENERAL_PROTOCOL_ERROR except in cases where more specific error codes have been defined. This includes H3_FRAME_UNEXPECTED and H3_CLOSED_CRITICAL_STREAM defined in Section 8.1.
    INTERNAL_ERROR (0x2):
    -
    +
    H3_INTERNAL_ERROR in Section 8.1.
    FLOW_CONTROL_ERROR (0x3):
    -
    +
    Not applicable, since QUIC handles flow control.
    SETTINGS_TIMEOUT (0x4):
    -
    +
    Not applicable, since no acknowledgement of SETTINGS is defined.
    STREAM_CLOSED (0x5):
    -
    +
    Not applicable, since QUIC handles stream management.
    FRAME_SIZE_ERROR (0x6):
    -
    +
    H3_FRAME_ERROR error code defined in Section 8.1.
    REFUSED_STREAM (0x7):
    -
    +
    H3_REQUEST_REJECTED (in Section 8.1) is used to indicate that a request was not processed. Otherwise, not applicable because QUIC handles stream management.
    CANCEL (0x8):
    -
    +
    H3_REQUEST_CANCELLED in Section 8.1.
    COMPRESSION_ERROR (0x9):
    -
    +
    Multiple error codes are defined in [QPACK].
    CONNECT_ERROR (0xa):
    -
    +
    H3_CONNECT_ERROR in Section 8.1.
    ENHANCE_YOUR_CALM (0xb):
    -
    +
    H3_EXCESSIVE_LOAD in Section 8.1.
    INADEQUATE_SECURITY (0xc):
    -
    +
    Not applicable, since QUIC is assumed to provide sufficient security on all connections.
    H3_1_1_REQUIRED (0xd):
    -
    +
    H3_VERSION_FALLBACK in Section 8.1.
    @@ -3875,7 +3875,7 @@

    RFC Editor's Note: Please remove this section prior to publication of a final version of this document. - +

    @@ -3885,7 +3885,7 @@

  • Removed H3_EARLY_RESPONSE error code; H3_NO_ERROR is recommended instead (#3130,#3208)
  • - +

    @@ -3896,11 +3896,11 @@

    • Removed quic Alt-Svc parameter (#3061,#3118)
    • -
    • Clients need not persist unknown settings for use in 0-RTT (#3110,#3113) +
    • Clients need not persist unknown settings for use in 0-RTT (#3110,#3113)
    • -
    • Clarify error cases around CANCEL_PUSH (#2819,#3083) +
    • Clarify error cases around CANCEL_PUSH (#2819,#3083)
    • -
    +

    @@ -3911,49 +3911,49 @@

    • Removed priority signaling (#2922,#2924)
    • -
    • +
    • Further changes to error codes (#2662,#2551):

      • Error codes renumbered
      • -
      • HTTP_MALFORMED_FRAME replaced by HTTP_FRAME_ERROR, HTTP_ID_ERROR, and others +
      • HTTP_MALFORMED_FRAME replaced by HTTP_FRAME_ERROR, HTTP_ID_ERROR, and others
      • -
      +
    -
  • Clarify how unknown frame types interact with required frame sequence +
  • Clarify how unknown frame types interact with required frame sequence (#2867,#2858)
  • -
  • Describe interactions with the transport in terms of defined interface terms +
  • Describe interactions with the transport in terms of defined interface terms (#2857,#2805)
  • -
  • Require the use of the http-opportunistic resource (RFC 8164) when scheme is +
  • Require the use of the http-opportunistic resource (RFC 8164) when scheme is http (#2439,#2973)
  • -
  • Settings identifiers cannot be duplicated (#2979) +
  • Settings identifiers cannot be duplicated (#2979)
  • -
  • +
  • Changes to SETTINGS frames in 0-RTT (#2972,#2790,#2945):

    • Servers must send all settings with non-default values in their SETTINGS frame, even when resuming
    • -
    • If a client doesn't have settings associated with a 0-RTT ticket, it uses +
    • If a client doesn't have settings associated with a 0-RTT ticket, it uses the defaults
    • -
    • Servers can't accept early data if they cannot recover the settings the +
    • Servers can't accept early data if they cannot recover the settings the client will have remembered
    • -
    +
  • -
  • Clarify that Upgrade and the 101 status code are prohibited (#2898,#2889) +
  • Clarify that Upgrade and the 101 status code are prohibited (#2898,#2889)
  • -
  • Clarify that frame types reserved for greasing can occur on any stream, but +
  • Clarify that frame types reserved for greasing can occur on any stream, but frame types reserved due to HTTP/2 correspondence are prohibited (#2997,#2692,#2693)
  • -
  • Unknown error codes cannot be treated as errors (#2998,#2816) +
  • Unknown error codes cannot be treated as errors (#2998,#2816)
  • - +

    @@ -3972,46 +3972,46 @@

    • Prohibit closing the control stream (#2509, #2666)
    • -
    • Change default priority to use an orphan node (#2502, #2690) +
    • Change default priority to use an orphan node (#2502, #2690)
    • -
    • Exclusive priorities are restored (#2754, #2781) +
    • Exclusive priorities are restored (#2754, #2781)
    • -
    • Restrict use of frames when using CONNECT (#2229, #2702) +
    • Restrict use of frames when using CONNECT (#2229, #2702)
    • -
    • Close and maybe reset streams if a connection error occurs for CONNECT (#2228, +
    • Close and maybe reset streams if a connection error occurs for CONNECT (#2228, #2703)
    • -
    • Encourage provision of sufficient unidirectional streams for QPACK (#2100, +
    • Encourage provision of sufficient unidirectional streams for QPACK (#2100, #2529, #2762)
    • -
    • Allow extensions to use server-initiated bidirectional streams (#2711, #2773) +
    • Allow extensions to use server-initiated bidirectional streams (#2711, #2773)
    • -
    • Clarify use of maximum header list size setting (#2516, #2774) +
    • Clarify use of maximum header list size setting (#2516, #2774)
    • -
    • +
    • Extensive changes to error codes and conditions of their sending

      • Require connection errors for more error conditions (#2511, #2510)
      • -
      • Updated the error codes for illegal GOAWAY frames (#2714, #2707) +
      • Updated the error codes for illegal GOAWAY frames (#2714, #2707)
      • -
      • Specified error code for HEADERS on control stream (#2708) +
      • Specified error code for HEADERS on control stream (#2708)
      • -
      • Specified error code for servers receiving PUSH_PROMISE (#2709) +
      • Specified error code for servers receiving PUSH_PROMISE (#2709)
      • -
      • Specified error code for receiving DATA before HEADERS (#2715) +
      • Specified error code for receiving DATA before HEADERS (#2715)
      • -
      • Describe malformed messages and their handling (#2410, #2764) +
      • Describe malformed messages and their handling (#2410, #2764)
      • -
      • Remove HTTP_PUSH_ALREADY_IN_CACHE error (#2812, #2813) +
      • Remove HTTP_PUSH_ALREADY_IN_CACHE error (#2812, #2813)
      • -
      • Refactor Push ID related errors (#2818, #2820) +
      • Refactor Push ID related errors (#2818, #2820)
      • -
      • Rationalize HTTP/3 stream creation errors (#2821, #2822) +
      • Rationalize HTTP/3 stream creation errors (#2821, #2822)
      • -
      +
    - +

    @@ -4022,10 +4022,10 @@

    • SETTINGS_NUM_PLACEHOLDERS is 0x9 (#2443,#2530)
    • -
    • Non-zero bits in the Empty field of the PRIORITY frame MAY be treated as an +
    • Non-zero bits in the Empty field of the PRIORITY frame MAY be treated as an error (#2501)
    • -
    +

    @@ -4037,25 +4037,25 @@

  • Resetting streams following a GOAWAY is recommended, but not required (#2256,#2457)
  • -
  • +
  • Use variable-length integers throughout (#2437,#2233,#2253,#2275)

    • Variable-length frame types, stream types, and settings identifiers
    • -
    • Renumbered stream type assignments +
    • Renumbered stream type assignments
    • -
    • Modified associated reserved values +
    • Modified associated reserved values
    • -
    +
  • -
  • Frame layout switched from Length-Type-Value to Type-Length-Value +
  • Frame layout switched from Length-Type-Value to Type-Length-Value (#2395,#2235)
  • -
  • Specified error code for servers receiving DUPLICATE_PUSH (#2497) +
  • Specified error code for servers receiving DUPLICATE_PUSH (#2497)
  • -
  • Use connection error for invalid PRIORITY (#2507, #2508) +
  • Use connection error for invalid PRIORITY (#2507, #2508)
  • - +

    @@ -4067,9 +4067,9 @@

  • HTTP_REQUEST_REJECTED is used to indicate a request can be retried (#2106, #2325)
  • -
  • Changed error code for GOAWAY on the wrong stream (#2231, #2343) +
  • Changed error code for GOAWAY on the wrong stream (#2231, #2343)
  • - +

    @@ -4080,30 +4080,30 @@

    • Rename "HTTP/QUIC" to "HTTP/3" (#1973)
    • -
    • +
    • Changes to PRIORITY frame (#1865, #2075)

      • Permitted as first frame of request streams
      • -
      • Remove exclusive reprioritization +
      • Remove exclusive reprioritization
      • -
      • Changes to Prioritized Element Type bits +
      • Changes to Prioritized Element Type bits
      • -
      +
    -
  • Define DUPLICATE_PUSH frame to refer to another PUSH_PROMISE (#2072) +
  • Define DUPLICATE_PUSH frame to refer to another PUSH_PROMISE (#2072)
  • -
  • Set defaults for settings, allow request before receiving SETTINGS (#1809, +
  • Set defaults for settings, allow request before receiving SETTINGS (#1809, #1846, #2038)
  • -
  • Clarify message processing rules for streams that aren't closed (#1972, #2003) +
  • Clarify message processing rules for streams that aren't closed (#1972, #2003)
  • -
  • Removed reservation of error code 0 and moved HTTP_NO_ERROR to this value +
  • Removed reservation of error code 0 and moved HTTP_NO_ERROR to this value (#1922)
  • -
  • Removed prohibition of zero-length DATA frames (#2098) +
  • Removed prohibition of zero-length DATA frames (#2098)
  • - +

    @@ -4122,16 +4122,16 @@

    • Recommend sensible values for QUIC transport parameters (#1720,#1806)
    • -
    • Define error for missing SETTINGS frame (#1697,#1808) +
    • Define error for missing SETTINGS frame (#1697,#1808)
    • -
    • Setting values are variable-length integers (#1556,#1807) and do not have +
    • Setting values are variable-length integers (#1556,#1807) and do not have separate maximum values (#1820)
    • -
    • Expanded discussion of connection closure (#1599,#1717,#1712) +
    • Expanded discussion of connection closure (#1599,#1717,#1712)
    • -
    • HTTP_VERSION_FALLBACK falls back to HTTP/1.1 (#1677,#1685) +
    • HTTP_VERSION_FALLBACK falls back to HTTP/1.1 (#1677,#1685)
    • -
    +

    @@ -4142,15 +4142,15 @@

    • Reserved some frame types for grease (#1333, #1446)
    • -
    • Unknown unidirectional stream types are tolerated, not errors; some reserved +
    • Unknown unidirectional stream types are tolerated, not errors; some reserved for grease (#1490, #1525)
    • -
    • Require settings to be remembered for 0-RTT, prohibit reductions (#1541, +
    • Require settings to be remembered for 0-RTT, prohibit reductions (#1541, #1641)
    • -
    • Specify behavior for truncated requests (#1596, #1643) +
    • Specify behavior for truncated requests (#1596, #1643)
    • -
    +

    @@ -4162,19 +4162,19 @@

  • TLS SNI extension isn't mandatory if an alternative method is used (#1459, #1462, #1466)
  • -
  • Removed flags from HTTP/3 frames (#1388, #1398) +
  • Removed flags from HTTP/3 frames (#1388, #1398)
  • -
  • Reserved frame types and settings for use in preserving extensibility (#1333, +
  • Reserved frame types and settings for use in preserving extensibility (#1333, #1446)
  • -
  • Added general error code (#1391, #1397) +
  • Added general error code (#1391, #1397)
  • -
  • Unidirectional streams carry a type byte and are extensible (#910,#1359) +
  • Unidirectional streams carry a type byte and are extensible (#910,#1359)
  • -
  • Priority mechanism now uses explicit placeholders to enable persistent +
  • Priority mechanism now uses explicit placeholders to enable persistent structure in the tree (#441,#1421,#1422)
  • - +

    @@ -4186,7 +4186,7 @@

  • Moved QPACK table updates and acknowledgments to dedicated streams (#1121, #1122, #1238)
  • - +

    @@ -4198,7 +4198,7 @@

  • Settings need to be remembered when attempting and accepting 0-RTT (#1157, #1207)
  • - +

    @@ -4209,11 +4209,11 @@

    • Selected QCRAM for header compression (#228, #1117)
    • -
    • The server_name TLS extension is now mandatory (#296, #495) +
    • The server_name TLS extension is now mandatory (#296, #495)
    • -
    • Specified handling of unsupported versions in Alt-Svc (#1093, #1097) +
    • Specified handling of unsupported versions in Alt-Svc (#1093, #1097)
    • -
    +

    @@ -4224,7 +4224,7 @@

    • Clarified connection coalescing rules (#940, #1024)
    • -
    +

    @@ -4235,13 +4235,13 @@

    • Changes for integer encodings in QUIC (#595,#905)
    • -
    • Use unidirectional streams as appropriate (#515, #240, #281, #886) +
    • Use unidirectional streams as appropriate (#515, #240, #281, #886)
    • -
    • Improvement to the description of GOAWAY (#604, #898) +
    • Improvement to the description of GOAWAY (#604, #898)
    • -
    • Improve description of server push usage (#947, #950, #957) +
    • Improve description of server push usage (#947, #950, #957)
    • -
    +

    @@ -4252,7 +4252,7 @@

    • Track changes in QUIC error code usage (#485)
    • -
    +

    @@ -4263,11 +4263,11 @@

    • Made push ID sequential, add MAX_PUSH_ID, remove SETTINGS_ENABLE_PUSH (#709)
    • -
    • Guidance about keep-alive and QUIC PINGs (#729) +
    • Guidance about keep-alive and QUIC PINGs (#729)
    • -
    • Expanded text on GOAWAY and cancellation (#757) +
    • Expanded text on GOAWAY and cancellation (#757)
    • -
    +

    @@ -4278,19 +4278,19 @@

    • Cite RFC 5234 (#404)
    • -
    • Return to a single stream per request (#245,#557) +
    • Return to a single stream per request (#245,#557)
    • -
    • Use separate frame type and settings registries from HTTP/2 (#81) +
    • Use separate frame type and settings registries from HTTP/2 (#81)
    • -
    • SETTINGS_ENABLE_PUSH instead of SETTINGS_DISABLE_PUSH (#477) +
    • SETTINGS_ENABLE_PUSH instead of SETTINGS_DISABLE_PUSH (#477)
    • -
    • Restored GOAWAY (#696) +
    • Restored GOAWAY (#696)
    • -
    • Identify server push using Push ID rather than a stream ID (#702,#281) +
    • Identify server push using Push ID rather than a stream ID (#702,#281)
    • -
    • DATA frames cannot be empty (#700) +
    • DATA frames cannot be empty (#700)
    • -
    +

    @@ -4309,7 +4309,7 @@

    • Track changes in transport draft
    • -
    +

    @@ -4324,27 +4324,27 @@

  • SETTINGS can be sent only once at the start of a connection; no changes thereafter
  • -
  • SETTINGS_ACK removed +
  • SETTINGS_ACK removed
  • -
  • Settings can only occur in the SETTINGS frame a single time +
  • Settings can only occur in the SETTINGS frame a single time
  • -
  • Boolean format updated +
  • Boolean format updated
  • - + -
  • Alt-Svc parameter changed from "v" to "quic"; format updated (#229) +
  • Alt-Svc parameter changed from "v" to "quic"; format updated (#229)
  • -
  • Closing the connection control stream or any message control stream is a +
  • Closing the connection control stream or any message control stream is a fatal error (#176)
  • -
  • HPACK Sequence counter can wrap (#173) +
  • HPACK Sequence counter can wrap (#173)
  • -
  • 0-RTT guidance added +
  • 0-RTT guidance added
  • -
  • Guide to differences from HTTP/2 and porting HTTP/2 extensions added +
  • Guide to differences from HTTP/2 and porting HTTP/2 extensions added (#127,#242)
  • - +

    @@ -4355,20 +4355,20 @@

    • Changed "HTTP/2-over-QUIC" to "HTTP/QUIC" throughout (#11,#29)
    • -
    • Changed from using HTTP/2 framing within Stream 3 to new framing format and +
    • Changed from using HTTP/2 framing within Stream 3 to new framing format and two-stream-per-request model (#71,#72,#73)
    • -
    • Adopted SETTINGS format from draft-bishop-httpbis-extended-settings-01 +
    • Adopted SETTINGS format from draft-bishop-httpbis-extended-settings-01
    • -
    • Reworked SETTINGS_ACK to account for indeterminate inter-stream order (#75) +
    • Reworked SETTINGS_ACK to account for indeterminate inter-stream order (#75)
    • -
    • Described CONNECT pseudo-method (#95) +
    • Described CONNECT pseudo-method (#95)
    • -
    • Updated ALPN token and Alt-Svc guidance (#13,#87) +
    • Updated ALPN token and Alt-Svc guidance (#13,#87)
    • -
    • Application-layer-defined error codes (#19,#74) +
    • Application-layer-defined error codes (#19,#74)
    • -
    +

    @@ -4379,9 +4379,9 @@

    • Adopted as base for draft-ietf-quic-http
    • -
    • Updated authors/editors list +
    • Updated authors/editors list
    • -
    +

    diff --git a/ecn-alg/draft-ietf-quic-http.txt b/ecn-alg/draft-ietf-quic-http.txt index 8b95065e01..d920e9b42d 100644 --- a/ecn-alg/draft-ietf-quic-http.txt +++ b/ecn-alg/draft-ietf-quic-http.txt @@ -4,8 +4,8 @@ QUIC M. Bishop, Ed. Internet-Draft Akamai -Intended status: Standards Track 7 January 2020 -Expires: 10 July 2020 +Intended status: Standards Track 8 January 2020 +Expires: 11 July 2020 Hypertext Transfer Protocol Version 3 (HTTP/3) @@ -47,13 +47,13 @@ Status of This Memo time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." - This Internet-Draft will expire on 10 July 2020. + This Internet-Draft will expire on 11 July 2020. -Bishop Expires 10 July 2020 [Page 1] +Bishop Expires 11 July 2020 [Page 1] Internet-Draft HTTP/3 January 2020 @@ -109,7 +109,7 @@ Table of Contents -Bishop Expires 10 July 2020 [Page 2] +Bishop Expires 11 July 2020 [Page 2] Internet-Draft HTTP/3 January 2020 @@ -165,7 +165,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 3] +Bishop Expires 11 July 2020 [Page 3] Internet-Draft HTTP/3 January 2020 @@ -221,7 +221,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 4] +Bishop Expires 11 July 2020 [Page 4] Internet-Draft HTTP/3 January 2020 @@ -277,7 +277,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 5] +Bishop Expires 11 July 2020 [Page 5] Internet-Draft HTTP/3 January 2020 @@ -333,7 +333,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 6] +Bishop Expires 11 July 2020 [Page 6] Internet-Draft HTTP/3 January 2020 @@ -389,7 +389,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 7] +Bishop Expires 11 July 2020 [Page 7] Internet-Draft HTTP/3 January 2020 @@ -445,7 +445,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 8] +Bishop Expires 11 July 2020 [Page 8] Internet-Draft HTTP/3 January 2020 @@ -501,7 +501,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 9] +Bishop Expires 11 July 2020 [Page 9] Internet-Draft HTTP/3 January 2020 @@ -557,7 +557,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 10] +Bishop Expires 11 July 2020 [Page 10] Internet-Draft HTTP/3 January 2020 @@ -613,7 +613,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 11] +Bishop Expires 11 July 2020 [Page 11] Internet-Draft HTTP/3 January 2020 @@ -669,7 +669,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 12] +Bishop Expires 11 July 2020 [Page 12] Internet-Draft HTTP/3 January 2020 @@ -725,7 +725,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 13] +Bishop Expires 11 July 2020 [Page 13] Internet-Draft HTTP/3 January 2020 @@ -781,7 +781,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 14] +Bishop Expires 11 July 2020 [Page 14] Internet-Draft HTTP/3 January 2020 @@ -837,7 +837,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 15] +Bishop Expires 11 July 2020 [Page 15] Internet-Draft HTTP/3 January 2020 @@ -893,7 +893,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 16] +Bishop Expires 11 July 2020 [Page 16] Internet-Draft HTTP/3 January 2020 @@ -949,7 +949,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 17] +Bishop Expires 11 July 2020 [Page 17] Internet-Draft HTTP/3 January 2020 @@ -1005,7 +1005,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 18] +Bishop Expires 11 July 2020 [Page 18] Internet-Draft HTTP/3 January 2020 @@ -1061,7 +1061,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 19] +Bishop Expires 11 July 2020 [Page 19] Internet-Draft HTTP/3 January 2020 @@ -1117,7 +1117,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 20] +Bishop Expires 11 July 2020 [Page 20] Internet-Draft HTTP/3 January 2020 @@ -1173,7 +1173,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 21] +Bishop Expires 11 July 2020 [Page 21] Internet-Draft HTTP/3 January 2020 @@ -1229,7 +1229,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 22] +Bishop Expires 11 July 2020 [Page 22] Internet-Draft HTTP/3 January 2020 @@ -1285,7 +1285,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 23] +Bishop Expires 11 July 2020 [Page 23] Internet-Draft HTTP/3 January 2020 @@ -1341,7 +1341,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 24] +Bishop Expires 11 July 2020 [Page 24] Internet-Draft HTTP/3 January 2020 @@ -1397,7 +1397,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 25] +Bishop Expires 11 July 2020 [Page 25] Internet-Draft HTTP/3 January 2020 @@ -1453,7 +1453,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 26] +Bishop Expires 11 July 2020 [Page 26] Internet-Draft HTTP/3 January 2020 @@ -1509,7 +1509,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 27] +Bishop Expires 11 July 2020 [Page 27] Internet-Draft HTTP/3 January 2020 @@ -1565,7 +1565,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 28] +Bishop Expires 11 July 2020 [Page 28] Internet-Draft HTTP/3 January 2020 @@ -1621,7 +1621,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 29] +Bishop Expires 11 July 2020 [Page 29] Internet-Draft HTTP/3 January 2020 @@ -1677,7 +1677,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 30] +Bishop Expires 11 July 2020 [Page 30] Internet-Draft HTTP/3 January 2020 @@ -1733,7 +1733,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 31] +Bishop Expires 11 July 2020 [Page 31] Internet-Draft HTTP/3 January 2020 @@ -1789,7 +1789,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 32] +Bishop Expires 11 July 2020 [Page 32] Internet-Draft HTTP/3 January 2020 @@ -1845,7 +1845,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 33] +Bishop Expires 11 July 2020 [Page 33] Internet-Draft HTTP/3 January 2020 @@ -1901,7 +1901,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 34] +Bishop Expires 11 July 2020 [Page 34] Internet-Draft HTTP/3 January 2020 @@ -1957,7 +1957,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 35] +Bishop Expires 11 July 2020 [Page 35] Internet-Draft HTTP/3 January 2020 @@ -2013,7 +2013,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 36] +Bishop Expires 11 July 2020 [Page 36] Internet-Draft HTTP/3 January 2020 @@ -2069,7 +2069,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 37] +Bishop Expires 11 July 2020 [Page 37] Internet-Draft HTTP/3 January 2020 @@ -2125,7 +2125,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 38] +Bishop Expires 11 July 2020 [Page 38] Internet-Draft HTTP/3 January 2020 @@ -2181,7 +2181,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 39] +Bishop Expires 11 July 2020 [Page 39] Internet-Draft HTTP/3 January 2020 @@ -2237,7 +2237,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 40] +Bishop Expires 11 July 2020 [Page 40] Internet-Draft HTTP/3 January 2020 @@ -2293,7 +2293,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 41] +Bishop Expires 11 July 2020 [Page 41] Internet-Draft HTTP/3 January 2020 @@ -2349,7 +2349,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 42] +Bishop Expires 11 July 2020 [Page 42] Internet-Draft HTTP/3 January 2020 @@ -2405,19 +2405,19 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 43] +Bishop Expires 11 July 2020 [Page 43] Internet-Draft HTTP/3 January 2020 - Internet-Draft, draft-ietf-quic-qpack-latest, 7 January + Internet-Draft, draft-ietf-quic-qpack-latest, 8 January 2020, . [QUIC-TRANSPORT] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", Work in Progress, - Internet-Draft, draft-ietf-quic-transport-latest, 7 + Internet-Draft, draft-ietf-quic-transport-latest, 8 January 2020, . @@ -2461,7 +2461,7 @@ Internet-Draft HTTP/3 January 2020 -Bishop Expires 10 July 2020 [Page 44] +Bishop Expires 11 July 2020 [Page 44] Internet-Draft HTTP/3 January 2020 @@ -2517,7 +2517,7 @@ Appendix A. Considerations for Transitioning from HTTP/2 -Bishop Expires 10 July 2020 [Page 45] +Bishop Expires 11 July 2020 [Page 45] Internet-Draft HTTP/3 January 2020 @@ -2573,7 +2573,7 @@ A.2. HTTP Frame Types -Bishop Expires 10 July 2020 [Page 46] +Bishop Expires 11 July 2020 [Page 46] Internet-Draft HTTP/3 January 2020 @@ -2629,7 +2629,7 @@ A.2.3. Guidance for New Frame Type Definitions -Bishop Expires 10 July 2020 [Page 47] +Bishop Expires 11 July 2020 [Page 47] Internet-Draft HTTP/3 January 2020 @@ -2685,7 +2685,7 @@ A.2.4. Mapping Between HTTP/2 and HTTP/3 Frame Types -Bishop Expires 10 July 2020 [Page 48] +Bishop Expires 11 July 2020 [Page 48] Internet-Draft HTTP/3 January 2020 @@ -2741,7 +2741,7 @@ A.3. HTTP/2 SETTINGS Parameters -Bishop Expires 10 July 2020 [Page 49] +Bishop Expires 11 July 2020 [Page 49] Internet-Draft HTTP/3 January 2020 @@ -2797,7 +2797,7 @@ A.4. HTTP/2 Error Codes -Bishop Expires 10 July 2020 [Page 50] +Bishop Expires 11 July 2020 [Page 50] Internet-Draft HTTP/3 January 2020 @@ -2853,7 +2853,7 @@ B.3. Since draft-ietf-quic-http-22 -Bishop Expires 10 July 2020 [Page 51] +Bishop Expires 11 July 2020 [Page 51] Internet-Draft HTTP/3 January 2020 @@ -2909,7 +2909,7 @@ B.5. Since draft-ietf-quic-http-20 -Bishop Expires 10 July 2020 [Page 52] +Bishop Expires 11 July 2020 [Page 52] Internet-Draft HTTP/3 January 2020 @@ -2965,7 +2965,7 @@ B.7. Since draft-ietf-quic-http-18 -Bishop Expires 10 July 2020 [Page 53] +Bishop Expires 11 July 2020 [Page 53] Internet-Draft HTTP/3 January 2020 @@ -3021,7 +3021,7 @@ B.11. Since draft-ietf-quic-http-14 -Bishop Expires 10 July 2020 [Page 54] +Bishop Expires 11 July 2020 [Page 54] Internet-Draft HTTP/3 January 2020 @@ -3077,7 +3077,7 @@ B.16. Since draft-ietf-quic-http-09 -Bishop Expires 10 July 2020 [Page 55] +Bishop Expires 11 July 2020 [Page 55] Internet-Draft HTTP/3 January 2020 @@ -3133,7 +3133,7 @@ B.21. Since draft-ietf-quic-http-04 -Bishop Expires 10 July 2020 [Page 56] +Bishop Expires 11 July 2020 [Page 56] Internet-Draft HTTP/3 January 2020 @@ -3189,7 +3189,7 @@ B.25. Since draft-ietf-quic-http-00 -Bishop Expires 10 July 2020 [Page 57] +Bishop Expires 11 July 2020 [Page 57] Internet-Draft HTTP/3 January 2020 @@ -3245,4 +3245,4 @@ Author's Address -Bishop Expires 10 July 2020 [Page 58] +Bishop Expires 11 July 2020 [Page 58] diff --git a/ecn-alg/draft-ietf-quic-invariants.html b/ecn-alg/draft-ietf-quic-invariants.html index d923f57d3b..762c3402c9 100644 --- a/ecn-alg/draft-ietf-quic-invariants.html +++ b/ecn-alg/draft-ietf-quic-invariants.html @@ -11,7 +11,7 @@ expected to remain unchanged over time as new versions of the protocol are developed. " name="description"> - + @@ -820,7 +820,7 @@ Thomson -Expires 10 July 2020 +Expires 11 July 2020 [Page] @@ -833,12 +833,12 @@
    draft-ietf-quic-invariants-latest
    Published:
    - +
    Intended Status:
    Standards Track
    Expires:
    -
    +
    Author:
    @@ -885,7 +885,7 @@

    time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

    - This Internet-Draft will expire on 10 July 2020.

    + This Internet-Draft will expire on 11 July 2020.

    @@ -1251,13 +1251,13 @@

    [QUIC-TRANSPORT]
    -
    -Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", Work in Progress, Internet-Draft, draft-ietf-quic-transport-latest, , <https://tools.ietf.org/html/draft-ietf-quic-transport-latest>.
    +
    +Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", Work in Progress, Internet-Draft, draft-ietf-quic-transport-latest, , <https://tools.ietf.org/html/draft-ietf-quic-transport-latest>.
    [RFC2119]
    -
    +
    Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
    [RFC8174]
    -
    +
    Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.
    @@ -1267,10 +1267,10 @@

    [QUIC-TLS]
    -
    -Thomson, M., Ed. and S. Turner, Ed., "Using Transport Layer Security (TLS) to Secure QUIC", Work in Progress, Internet-Draft, draft-ietf-quic-tls-latest, , <https://tools.ietf.org/html/draft-ietf-quic-tls-latest>.
    +
    +Thomson, M., Ed. and S. Turner, Ed., "Using Transport Layer Security (TLS) to Secure QUIC", Work in Progress, Internet-Draft, draft-ietf-quic-tls-latest, , <https://tools.ietf.org/html/draft-ietf-quic-tls-latest>.
    [RFC5116]
    -
    +
    McGrew, D., "An Interface and Algorithms for Authenticated Encryption", RFC 5116, DOI 10.17487/RFC5116, , <https://www.rfc-editor.org/info/rfc5116>.
    @@ -1291,40 +1291,40 @@

    • QUIC uses TLS [QUIC-TLS] and some TLS messages are visible on the wire
    • -
    • QUIC long headers are only exchanged during connection establishment +
    • QUIC long headers are only exchanged during connection establishment
    • -
    • Every flow on a given 5-tuple will include a connection establishment phase +
    • Every flow on a given 5-tuple will include a connection establishment phase
    • -
    • The first packets exchanged on a flow use the long header +
    • The first packets exchanged on a flow use the long header
    • -
    • QUIC forbids acknowledgments of packets that only contain ACK frames, +
    • QUIC forbids acknowledgments of packets that only contain ACK frames, therefore the last packet before a long period of quiescence might be assumed to contain an acknowledgment
    • -
    • QUIC uses an AEAD (AEAD_AES_128_GCM [RFC5116]) to protect the packets it +
    • QUIC uses an AEAD (AEAD_AES_128_GCM [RFC5116]) to protect the packets it exchanges during connection establishment
    • -
    • QUIC packet numbers appear after the Version field +
    • QUIC packet numbers appear after the Version field
    • -
    • QUIC packet numbers increase by one for every packet sent +
    • QUIC packet numbers increase by one for every packet sent
    • -
    • QUIC has a minimum size for the first handshake packet sent by a client +
    • QUIC has a minimum size for the first handshake packet sent by a client
    • -
    • QUIC stipulates that a client speaks first +
    • QUIC stipulates that a client speaks first
    • -
    • A QUIC Version Negotiation packet is only sent by a server +
    • A QUIC Version Negotiation packet is only sent by a server
    • -
    • A QUIC connection ID changes infrequently +
    • A QUIC connection ID changes infrequently
    • -
    • QUIC endpoints change the version they speak if they are sent a Version +
    • QUIC endpoints change the version they speak if they are sent a Version Negotiation packet
    • -
    • The version field in a QUIC long header is the same in both directions +
    • The version field in a QUIC long header is the same in both directions
    • -
    • Only one connection at a time is established between any pair of QUIC +
    • Only one connection at a time is established between any pair of QUIC endpoints
    • -
    +

    diff --git a/ecn-alg/draft-ietf-quic-invariants.txt b/ecn-alg/draft-ietf-quic-invariants.txt index fe9e13592b..2444a581d1 100644 --- a/ecn-alg/draft-ietf-quic-invariants.txt +++ b/ecn-alg/draft-ietf-quic-invariants.txt @@ -4,8 +4,8 @@ QUIC M. Thomson Internet-Draft Mozilla -Intended status: Standards Track 7 January 2020 -Expires: 10 July 2020 +Intended status: Standards Track 8 January 2020 +Expires: 11 July 2020 Version-Independent Properties of QUIC @@ -45,7 +45,7 @@ Status of This Memo time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." - This Internet-Draft will expire on 10 July 2020. + This Internet-Draft will expire on 11 July 2020. @@ -53,7 +53,7 @@ Status of This Memo -Thomson Expires 10 July 2020 [Page 1] +Thomson Expires 11 July 2020 [Page 1] Internet-Draft QUIC Invariants January 2020 @@ -109,7 +109,7 @@ Table of Contents -Thomson Expires 10 July 2020 [Page 2] +Thomson Expires 11 July 2020 [Page 2] Internet-Draft QUIC Invariants January 2020 @@ -165,7 +165,7 @@ Internet-Draft QUIC Invariants January 2020 -Thomson Expires 10 July 2020 [Page 3] +Thomson Expires 11 July 2020 [Page 3] Internet-Draft QUIC Invariants January 2020 @@ -221,7 +221,7 @@ Internet-Draft QUIC Invariants January 2020 -Thomson Expires 10 July 2020 [Page 4] +Thomson Expires 11 July 2020 [Page 4] Internet-Draft QUIC Invariants January 2020 @@ -277,7 +277,7 @@ Internet-Draft QUIC Invariants January 2020 -Thomson Expires 10 July 2020 [Page 5] +Thomson Expires 11 July 2020 [Page 5] Internet-Draft QUIC Invariants January 2020 @@ -333,7 +333,7 @@ Internet-Draft QUIC Invariants January 2020 -Thomson Expires 10 July 2020 [Page 6] +Thomson Expires 11 July 2020 [Page 6] Internet-Draft QUIC Invariants January 2020 @@ -389,7 +389,7 @@ Internet-Draft QUIC Invariants January 2020 -Thomson Expires 10 July 2020 [Page 7] +Thomson Expires 11 July 2020 [Page 7] Internet-Draft QUIC Invariants January 2020 @@ -399,7 +399,7 @@ Internet-Draft QUIC Invariants January 2020 [QUIC-TRANSPORT] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", Work in Progress, - Internet-Draft, draft-ietf-quic-transport-latest, 7 + Internet-Draft, draft-ietf-quic-transport-latest, 8 January 2020, . @@ -416,7 +416,7 @@ Internet-Draft QUIC Invariants January 2020 [QUIC-TLS] Thomson, M., Ed. and S. Turner, Ed., "Using Transport Layer Security (TLS) to Secure QUIC", Work in Progress, - Internet-Draft, draft-ietf-quic-tls-latest, 7 January + Internet-Draft, draft-ietf-quic-tls-latest, 8 January 2020, . @@ -445,7 +445,7 @@ Appendix A. Incorrect Assumptions -Thomson Expires 10 July 2020 [Page 8] +Thomson Expires 11 July 2020 [Page 8] Internet-Draft QUIC Invariants January 2020 @@ -501,4 +501,4 @@ Author's Address -Thomson Expires 10 July 2020 [Page 9] +Thomson Expires 11 July 2020 [Page 9] diff --git a/ecn-alg/draft-ietf-quic-qpack.html b/ecn-alg/draft-ietf-quic-qpack.html index b100ac26fe..3182078c38 100644 --- a/ecn-alg/draft-ietf-quic-qpack.html +++ b/ecn-alg/draft-ietf-quic-qpack.html @@ -13,7 +13,7 @@ representing HTTP header fields, to be used in HTTP/3. This is a variation of HPACK header compression that seeks to reduce head-of-line blocking. " name="description"> - + @@ -822,7 +822,7 @@ Krasic, et al. -Expires 10 July 2020 +Expires 11 July 2020 [Page] @@ -835,12 +835,12 @@
    draft-ietf-quic-qpack-latest
    Published:
    - +
    Intended Status:
    Standards Track
    Expires:
    -
    +
    Authors:
    @@ -896,7 +896,7 @@

    time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

    - This Internet-Draft will expire on 10 July 2020.

    + This Internet-Draft will expire on 11 July 2020.

    @@ -1191,38 +1191,38 @@

    Definitions of terms that are used in this document:

    Header field:
    -
    +
    A name-value pair sent as part of an HTTP message.
    Header list:
    -
    +
    An ordered collection of header fields associated with an HTTP message. A header list can contain multiple header fields with the same name. It can also contain duplicate header fields.
    Header block:
    -
    +
    The compressed representation of a header list.
    Encoder:
    -
    +
    An implementation which transforms a header list into a header block.
    Decoder:
    -
    +
    An implementation which transforms a header block into a header list.
    Absolute Index:
    -
    +
    A unique index for each entry in the dynamic table.
    Base:
    -
    +
    A reference point for relative and post-base indices. References to dynamic table entries in header blocks are relative to a Base.
    Insert Count:
    -
    +
    The total number of entries inserted in the dynamic table.
    @@ -1238,16 +1238,16 @@

    following additional conventions:

    x (A)
    -
    +
    Indicates that x is A bits long
    x (A+)
    -
    +
    Indicates that x uses the prefixed integer encoding defined in Section 4.1.1, beginning with an A-bit prefix.
    x ...
    -
    +
    Indicates that x is variable-length and extends to the end of the region.
    @@ -1801,11 +1801,11 @@

    It carries an unframed sequence of encoder instructions from encoder to decoder. -
  • A decoder stream is a unidirectional stream of type 0x03. +
  • A decoder stream is a unidirectional stream of type 0x03. It carries an unframed sequence of decoder instructions from decoder to encoder.
  • - +

    HTTP/3 endpoints contain a QPACK encoder and decoder. Each endpoint MUST initiate at most one encoder stream and at most one decoder stream. Receipt of a second instance of either stream type MUST be treated as a connection error of @@ -2383,12 +2383,12 @@

    QPACK defines two settings which are included in the HTTP/3 SETTINGS frame.

    SETTINGS_QPACK_MAX_TABLE_CAPACITY (0x1):
    -
    +
    The default value is zero. See Section 3.2 for usage. This is the equivalent of the SETTINGS_HEADER_TABLE_SIZE from HTTP/2.
    SETTINGS_QPACK_BLOCKED_STREAMS (0x7):
    -
    +
    The default value is zero. See Section 2.1.3.
    @@ -2403,17 +2403,17 @@

    QPACK which prevent the connection from continuing:

    HTTP_QPACK_DECOMPRESSION_FAILED (0x200):
    -
    +
    The decoder failed to interpret a header block and is not able to continue decoding that header block.
    HTTP_QPACK_ENCODER_STREAM_ERROR (0x201):
    -
    +
    The decoder failed to interpret an encoder instruction received on the encoder stream.
    HTTP_QPACK_DECODER_STREAM_ERROR (0x202):
    -
    +
    The encoder failed to interpret a decoder instruction received on the decoder stream.
    @@ -2575,19 +2575,19 @@

    [HTTP3]
    -
    -Bishop, M., Ed., "Hypertext Transfer Protocol Version 3 (HTTP/3)", Work in Progress, Internet-Draft, draft-ietf-quic-http-latest, , <https://tools.ietf.org/html/draft-ietf-quic-http-latest>.
    +
    +Bishop, M., Ed., "Hypertext Transfer Protocol Version 3 (HTTP/3)", Work in Progress, Internet-Draft, draft-ietf-quic-http-latest, , <https://tools.ietf.org/html/draft-ietf-quic-http-latest>.
    [QUIC-TRANSPORT]
    -
    -Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", Work in Progress, Internet-Draft, draft-ietf-quic-transport-latest, , <https://tools.ietf.org/html/draft-ietf-quic-transport-latest>.
    +
    +Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", Work in Progress, Internet-Draft, draft-ietf-quic-transport-latest, , <https://tools.ietf.org/html/draft-ietf-quic-transport-latest>.
    [RFC2119]
    -
    +
    Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
    [RFC7541]
    -
    +
    Peon, R. and H. Ruellan, "HPACK: Header Compression for HTTP/2", RFC 7541, DOI 10.17487/RFC7541, , <https://www.rfc-editor.org/info/rfc7541>.
    [RFC8174]
    -
    +
    Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.
    @@ -2597,10 +2597,10 @@

    [RFC2360]
    -
    +
    Scott, G., "Guide for Internet Standards Writers", BCP 22, RFC 2360, DOI 10.17487/RFC2360, , <https://www.rfc-editor.org/info/rfc2360>.
    [RFC7540]
    -
    +
    Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext Transfer Protocol Version 2 (HTTP/2)", RFC 7540, DOI 10.17487/RFC7540, , <https://www.rfc-editor.org/info/rfc7540>.
    @@ -3187,7 +3187,7 @@

    RFC Editor's Note: Please remove this section prior to publication of a final version of this document. - +

    @@ -3204,11 +3204,11 @@

    • 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)
    • -
    +

    @@ -3220,9 +3220,9 @@

  • Endpoints are permitted to create encoder and decoder streams even if they can't use them (#2100, #2529)
  • -
  • Maximum values for settings removed (#2766, #2767) +
  • Maximum values for settings removed (#2766, #2767)
  • - +

    @@ -3233,7 +3233,7 @@

    • Clarify initial dynamic table capacity maximums (#2276, #2330, #2330)
    • -
    +

    @@ -3245,9 +3245,9 @@

  • Introduced the terms dynamic table capacity and maximum dynamic table capacity.
  • -
  • Renamed SETTINGS_HEADER_TABLE_SIZE to SETTINGS_QPACK_MAX_TABLE_CAPACITY. +
  • Renamed SETTINGS_HEADER_TABLE_SIZE to SETTINGS_QPACK_MAX_TABLE_CAPACITY.
  • - +

    @@ -3259,7 +3259,7 @@

  • Changed calculation of Delta Base Index to avoid an illegal value (#2002, #2005)
  • - +

    @@ -3270,9 +3270,9 @@

    • Change HTTP settings defaults (#2038)
    • -
    • Substantial editorial reorganization +
    • Substantial editorial reorganization
    • -
    +

    @@ -3283,22 +3283,22 @@

    • 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 (#1762) +
    • Table Size Update with Insert Count=0 is a connection error (#1762)
    • -
    • Stream Cancellations are optional when SETTINGS_HEADER_TABLE_SIZE=0 (#1761) +
    • Stream Cancellations are optional when SETTINGS_HEADER_TABLE_SIZE=0 (#1761)
    • -
    • Implementations must handle 62 bit integers (#1760) +
    • Implementations must handle 62 bit integers (#1760)
    • -
    • Different error types for each QPACK stream, other changes to error +
    • Different error types for each QPACK stream, other changes to error handling (#1726)
    • -
    • Preserve header field order (#1725) +
    • Preserve header field order (#1725)
    • -
    • Initial table size is the maximum permitted when table is first usable (#1642) +
    • Initial table size is the maximum permitted when table is first usable (#1642)
    • -
    +

    @@ -3310,7 +3310,7 @@

  • Only header blocks that reference the dynamic table are acknowledged (#1603, #1605)
  • - +

    @@ -3321,19 +3321,19 @@

    • 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 largest reference +
    • Header block acknowledgments also acknowledge the associated 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 stream IDs +
    • Control streams use typed unidirectional streams rather than fixed stream IDs (#910,#1359)
    • -
    +

    @@ -3345,16 +3345,16 @@

  • Separate instruction sets for table updates and header blocks (#1235, #1142, #1141)
  • -
  • Reworked indexing scheme (#1176, #1145, #1136, #1130, #1125, #1314) +
  • Reworked indexing scheme (#1176, #1145, #1136, #1130, #1125, #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, #1140, #1143) +
  • Added a setting to control the number of blocked decoders (#238, #1140, #1143)
  • -
  • Moved table updates and acknowledgments to dedicated streams (#1121, #1122, +
  • Moved table updates and acknowledgments to dedicated streams (#1121, #1122, #1238)
  • - +

    @@ -3369,17 +3369,17 @@

    • Ryan Hamilton
    • -
    • Patrick McManus +
    • Patrick McManus
    • -
    • Kazuho Oku +
    • Kazuho Oku
    • -
    • Biren Roy +
    • Biren Roy
    • -
    • Ian Swett +
    • Ian Swett
    • -
    • Dmitri Tikhonov +
    • Dmitri Tikhonov
    • -
    +

    Buck's contribution was supported by Google during his employment there.

    A substantial portion of Mike's contribution was supported by Microsoft during his employment there.

    diff --git a/ecn-alg/draft-ietf-quic-qpack.txt b/ecn-alg/draft-ietf-quic-qpack.txt index 5f813c45ff..af3b3c5eb8 100644 --- a/ecn-alg/draft-ietf-quic-qpack.txt +++ b/ecn-alg/draft-ietf-quic-qpack.txt @@ -5,10 +5,10 @@ QUIC C. Krasic Internet-Draft Netflix Intended status: Standards Track M. Bishop -Expires: 10 July 2020 Akamai Technologies +Expires: 11 July 2020 Akamai Technologies A. Frindell, Ed. Facebook - 7 January 2020 + 8 January 2020 QPACK: Header Compression for HTTP/3 @@ -48,12 +48,12 @@ Status of This Memo time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." - This Internet-Draft will expire on 10 July 2020. + This Internet-Draft will expire on 11 July 2020. -Krasic, et al. Expires 10 July 2020 [Page 1] +Krasic, et al. Expires 11 July 2020 [Page 1] Internet-Draft QPACK January 2020 @@ -109,7 +109,7 @@ Table of Contents -Krasic, et al. Expires 10 July 2020 [Page 2] +Krasic, et al. Expires 11 July 2020 [Page 2] Internet-Draft QPACK January 2020 @@ -165,7 +165,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 3] +Krasic, et al. Expires 11 July 2020 [Page 3] Internet-Draft QPACK January 2020 @@ -221,7 +221,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 4] +Krasic, et al. Expires 11 July 2020 [Page 4] Internet-Draft QPACK January 2020 @@ -277,7 +277,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 5] +Krasic, et al. Expires 11 July 2020 [Page 5] Internet-Draft QPACK January 2020 @@ -333,7 +333,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 6] +Krasic, et al. Expires 11 July 2020 [Page 6] Internet-Draft QPACK January 2020 @@ -389,7 +389,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 7] +Krasic, et al. Expires 11 July 2020 [Page 7] Internet-Draft QPACK January 2020 @@ -445,7 +445,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 8] +Krasic, et al. Expires 11 July 2020 [Page 8] Internet-Draft QPACK January 2020 @@ -501,7 +501,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 9] +Krasic, et al. Expires 11 July 2020 [Page 9] Internet-Draft QPACK January 2020 @@ -557,7 +557,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 10] +Krasic, et al. Expires 11 July 2020 [Page 10] Internet-Draft QPACK January 2020 @@ -613,7 +613,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 11] +Krasic, et al. Expires 11 July 2020 [Page 11] Internet-Draft QPACK January 2020 @@ -669,7 +669,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 12] +Krasic, et al. Expires 11 July 2020 [Page 12] Internet-Draft QPACK January 2020 @@ -725,7 +725,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 13] +Krasic, et al. Expires 11 July 2020 [Page 13] Internet-Draft QPACK January 2020 @@ -781,7 +781,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 14] +Krasic, et al. Expires 11 July 2020 [Page 14] Internet-Draft QPACK January 2020 @@ -837,7 +837,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 15] +Krasic, et al. Expires 11 July 2020 [Page 15] Internet-Draft QPACK January 2020 @@ -893,7 +893,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 16] +Krasic, et al. Expires 11 July 2020 [Page 16] Internet-Draft QPACK January 2020 @@ -949,7 +949,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 17] +Krasic, et al. Expires 11 July 2020 [Page 17] Internet-Draft QPACK January 2020 @@ -1005,7 +1005,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 18] +Krasic, et al. Expires 11 July 2020 [Page 18] Internet-Draft QPACK January 2020 @@ -1061,7 +1061,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 19] +Krasic, et al. Expires 11 July 2020 [Page 19] Internet-Draft QPACK January 2020 @@ -1117,7 +1117,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 20] +Krasic, et al. Expires 11 July 2020 [Page 20] Internet-Draft QPACK January 2020 @@ -1173,7 +1173,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 21] +Krasic, et al. Expires 11 July 2020 [Page 21] Internet-Draft QPACK January 2020 @@ -1229,7 +1229,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 22] +Krasic, et al. Expires 11 July 2020 [Page 22] Internet-Draft QPACK January 2020 @@ -1285,7 +1285,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 23] +Krasic, et al. Expires 11 July 2020 [Page 23] Internet-Draft QPACK January 2020 @@ -1341,7 +1341,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 24] +Krasic, et al. Expires 11 July 2020 [Page 24] Internet-Draft QPACK January 2020 @@ -1397,7 +1397,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 25] +Krasic, et al. Expires 11 July 2020 [Page 25] Internet-Draft QPACK January 2020 @@ -1453,7 +1453,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 26] +Krasic, et al. Expires 11 July 2020 [Page 26] Internet-Draft QPACK January 2020 @@ -1488,13 +1488,13 @@ Internet-Draft QPACK January 2020 [HTTP3] Bishop, M., Ed., "Hypertext Transfer Protocol Version 3 (HTTP/3)", Work in Progress, Internet-Draft, draft-ietf- - quic-http-latest, 7 January 2020, + quic-http-latest, 8 January 2020, . [QUIC-TRANSPORT] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", Work in Progress, - Internet-Draft, draft-ietf-quic-transport-latest, 7 + Internet-Draft, draft-ietf-quic-transport-latest, 8 January 2020, . @@ -1509,7 +1509,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 27] +Krasic, et al. Expires 11 July 2020 [Page 27] Internet-Draft QPACK January 2020 @@ -1565,7 +1565,7 @@ Appendix A. Static Table -Krasic, et al. Expires 10 July 2020 [Page 28] +Krasic, et al. Expires 11 July 2020 [Page 28] Internet-Draft QPACK January 2020 @@ -1621,7 +1621,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 29] +Krasic, et al. Expires 11 July 2020 [Page 29] Internet-Draft QPACK January 2020 @@ -1677,7 +1677,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 30] +Krasic, et al. Expires 11 July 2020 [Page 30] Internet-Draft QPACK January 2020 @@ -1733,7 +1733,7 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 31] +Krasic, et al. Expires 11 July 2020 [Page 31] Internet-Draft QPACK January 2020 @@ -1789,7 +1789,7 @@ Appendix B. Sample One Pass Encoding Algorithm -Krasic, et al. Expires 10 July 2020 [Page 32] +Krasic, et al. Expires 11 July 2020 [Page 32] Internet-Draft QPACK January 2020 @@ -1845,7 +1845,7 @@ Appendix C. Change Log -Krasic, et al. Expires 10 July 2020 [Page 33] +Krasic, et al. Expires 11 July 2020 [Page 33] Internet-Draft QPACK January 2020 @@ -1901,7 +1901,7 @@ C.8. Since draft-ietf-quic-qpack-02 -Krasic, et al. Expires 10 July 2020 [Page 34] +Krasic, et al. Expires 11 July 2020 [Page 34] Internet-Draft QPACK January 2020 @@ -1957,7 +1957,7 @@ C.11. Since draft-ietf-quic-qcram-00 -Krasic, et al. Expires 10 July 2020 [Page 35] +Krasic, et al. Expires 11 July 2020 [Page 35] Internet-Draft QPACK January 2020 @@ -2013,7 +2013,7 @@ Authors' Addresses -Krasic, et al. Expires 10 July 2020 [Page 36] +Krasic, et al. Expires 11 July 2020 [Page 36] Internet-Draft QPACK January 2020 @@ -2069,4 +2069,4 @@ Internet-Draft QPACK January 2020 -Krasic, et al. Expires 10 July 2020 [Page 37] +Krasic, et al. Expires 11 July 2020 [Page 37] diff --git a/ecn-alg/draft-ietf-quic-recovery.html b/ecn-alg/draft-ietf-quic-recovery.html index e3dda87a4c..55c5f9532a 100644 --- a/ecn-alg/draft-ietf-quic-recovery.html +++ b/ecn-alg/draft-ietf-quic-recovery.html @@ -11,7 +11,7 @@ This document describes loss detection and congestion control mechanisms for QUIC. " name="description"> - + @@ -820,7 +820,7 @@ Iyengar & Swett -Expires 10 July 2020 +Expires 11 July 2020 [Page] @@ -833,12 +833,12 @@
    draft-ietf-quic-recovery-latest
    Published:
    - +
    Intended Status:
    Standards Track
    Expires:
    -
    +
    Authors:
    @@ -890,7 +890,7 @@

    time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

    - This Internet-Draft will expire on 10 July 2020.

    + This Internet-Draft will expire on 11 July 2020.

    @@ -1252,27 +1252,27 @@

    Definitions of terms that are used in this document:

    ACK-only:
    -
    +
    Any packet containing only one or more ACK frame(s).
    In-flight:
    -
    +
    Packets are considered in-flight when they have been sent and are not ACK-only, and they are not acknowledged, declared lost, or abandoned along with old keys.
    Ack-eliciting Frames:
    -
    +
    All frames other than ACK, PADDING, and CONNECTION_CLOSE are considered ack-eliciting.
    Ack-eliciting Packets:
    -
    +
    Packets that contain ack-eliciting frames elicit an ACK from the receiver within the maximum ack delay and are called ack-eliciting packets.
    Out-of-order Packets:
    -
    +
    Packets that do not increase the largest received packet number for its packet number space by exactly one. Packets arrive out of order when earlier packets are lost or delayed. @@ -1303,17 +1303,17 @@

    ack-eliciting frames are only acknowledged along with ack-eliciting packets. -
  • Long header packets that contain CRYPTO frames are critical to the +
  • Long header packets that contain CRYPTO frames are critical to the performance of the QUIC handshake and use shorter timers for acknowledgement.
  • -
  • Packets containing frames besides ACK or CONNECTION_CLOSE frames count toward +
  • Packets containing frames besides ACK or CONNECTION_CLOSE frames count toward congestion control limits and are considered in-flight.
  • -
  • PADDING frames cause packets to contribute toward bytes in flight without +
  • PADDING frames cause packets to contribute toward bytes in flight without directly causing an acknowledgment to be sent.
  • - +

    @@ -1435,9 +1435,9 @@

    • the largest acknowledged packet number is newly acknowledged, and
    • -
    • at least one of the newly acknowledged packets was ack-eliciting. +
    • at least one of the newly acknowledged packets was ack-eliciting.
    • -
    +

    The RTT sample, latest_rtt, is generated as the time elapsed since the largest acknowledged packet was sent:

    @@ -1503,14 +1503,14 @@

  • MUST ignore the Ack Delay field of the ACK frame for packets sent in the Initial and Handshake packet number space.
  • -
  • MUST use the lesser of the value reported in Ack Delay field of the ACK frame +
  • MUST use the lesser of the value reported in Ack Delay field of the ACK frame and the peer's max_ack_delay transport parameter.
  • -
  • MUST NOT apply the adjustment if the resulting RTT sample is smaller than the +
  • MUST NOT apply the adjustment if the resulting RTT sample is smaller than the min_rtt. This limits the underestimation that a misreporting peer can cause to the smoothed_rtt.
  • - +

    On the first RTT sample in a connection, the smoothed_rtt is set to the latest_rtt.

    smoothed_rtt and rttvar are computed as follows, similar to [RFC6298]. On @@ -1562,11 +1562,11 @@

  • The packet is unacknowledged, in-flight, and was sent prior to an acknowledged packet.
  • -
  • Either its packet number is kPacketThreshold smaller than an acknowledged +
  • Either its packet number is kPacketThreshold smaller than an acknowledged packet (Section 5.1.1), or it was sent long enough in the past (Section 5.1.2).
  • - +

    The acknowledgement indicates that a packet sent later was delivered, and the packet and time thresholds provide some tolerance for packet reordering.

    Spuriously declaring packets as lost leads to unnecessary retransmissions and @@ -1610,11 +1610,11 @@

  • the latest RTT sample is lower than the smoothed RTT, perhaps due to reordering where the acknowledgement encountered a shorter path;
  • -
  • the latest RTT sample is higher than the smoothed RTT, perhaps due to a +
  • the latest RTT sample is higher than the smoothed RTT, perhaps due to a sustained increase in the actual RTT, but the smoothed RTT has not yet caught up.
  • - +

    The RECOMMENDED time threshold (kTimeThreshold), expressed as a round-trip time multiplier, is 9/8.

    Implementations MAY experiment with absolute thresholds, thresholds from @@ -2109,16 +2109,16 @@

    [QUIC-TLS]
    -
    -Thomson, M., Ed. and S. Turner, Ed., "Using TLS to Secure QUIC", Work in Progress, Internet-Draft, draft-ietf-quic-tls-latest, , <https://tools.ietf.org/html/draft-ietf-quic-tls-latest>.
    +
    +Thomson, M., Ed. and S. Turner, Ed., "Using TLS to Secure QUIC", Work in Progress, Internet-Draft, draft-ietf-quic-tls-latest, , <https://tools.ietf.org/html/draft-ietf-quic-tls-latest>.
    [QUIC-TRANSPORT]
    -
    -Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", Work in Progress, Internet-Draft, draft-ietf-quic-transport-latest, , <https://tools.ietf.org/html/draft-ietf-quic-transport-latest>.
    +
    +Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", Work in Progress, Internet-Draft, draft-ietf-quic-transport-latest, , <https://tools.ietf.org/html/draft-ietf-quic-transport-latest>.
    [RFC2119]
    -
    +
    Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
    [RFC8174]
    -
    +
    Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.

    @@ -2128,49 +2128,49 @@

    [FACK]
    -
    +
    Mathis, M. and J. Mahdavi, "Forward Acknowledgement: Refining TCP Congestion Control", ACM SIGCOMM , .
    [RACK]
    -
    +
    Cheng, Y., Cardwell, N., Dukkipati, N., and P. Jha, "RACK: a time-based fast loss detection algorithm for TCP", Work in Progress, Internet-Draft, draft-ietf-tcpm-rack-05, , <http://www.ietf.org/internet-drafts/draft-ietf-tcpm-rack-05.txt>.
    [RFC3168]
    -
    +
    Ramakrishnan, K., Floyd, S., and D. Black, "The Addition of Explicit Congestion Notification (ECN) to IP", RFC 3168, DOI 10.17487/RFC3168, , <https://www.rfc-editor.org/info/rfc3168>.
    [RFC3465]
    -
    +
    Allman, M., "TCP Congestion Control with Appropriate Byte Counting (ABC)", RFC 3465, DOI 10.17487/RFC3465, , <https://www.rfc-editor.org/info/rfc3465>.
    [RFC4653]
    -
    +
    Bhandarkar, S., Reddy, A. L. N., Allman, M., and E. Blanton, "Improving the Robustness of TCP to Non-Congestion Events", RFC 4653, DOI 10.17487/RFC4653, , <https://www.rfc-editor.org/info/rfc4653>.
    [RFC5681]
    -
    +
    Allman, M., Paxson, V., and E. Blanton, "TCP Congestion Control", RFC 5681, DOI 10.17487/RFC5681, , <https://www.rfc-editor.org/info/rfc5681>.
    [RFC5682]
    -
    +
    Sarolahti, P., Kojo, M., Yamamoto, K., and M. Hata, "Forward RTO-Recovery (F-RTO): An Algorithm for Detecting Spurious Retransmission Timeouts with TCP", RFC 5682, DOI 10.17487/RFC5682, , <https://www.rfc-editor.org/info/rfc5682>.
    [RFC5827]
    -
    +
    Allman, M., Avrachenkov, K., Ayesta, U., Blanton, J., and P. Hurtig, "Early Retransmit for TCP and Stream Control Transmission Protocol (SCTP)", RFC 5827, DOI 10.17487/RFC5827, , <https://www.rfc-editor.org/info/rfc5827>.
    [RFC6298]
    -
    +
    Paxson, V., Allman, M., Chu, J., and M. Sargent, "Computing TCP's Retransmission Timer", RFC 6298, DOI 10.17487/RFC6298, , <https://www.rfc-editor.org/info/rfc6298>.
    [RFC6582]
    -
    +
    Henderson, T., Floyd, S., Gurtov, A., and Y. Nishida, "The NewReno Modification to TCP's Fast Recovery Algorithm", RFC 6582, DOI 10.17487/RFC6582, , <https://www.rfc-editor.org/info/rfc6582>.
    [RFC6675]
    -
    +
    Blanton, E., Allman, M., Wang, L., Jarvinen, I., Kojo, M., and Y. Nishida, "A Conservative Loss Recovery Algorithm Based on Selective Acknowledgment (SACK) for TCP", RFC 6675, DOI 10.17487/RFC6675, , <https://www.rfc-editor.org/info/rfc6675>.
    [RFC6928]
    -
    +
    Chu, J., Dukkipati, N., Cheng, Y., and M. Mathis, "Increasing TCP's Initial Window", RFC 6928, DOI 10.17487/RFC6928, , <https://www.rfc-editor.org/info/rfc6928>.
    [RFC7661]
    -
    +
    Fairhurst, G., Sathiaseelan, A., and R. Secchi, "Updating TCP to Support Rate-Limited Traffic", RFC 7661, DOI 10.17487/RFC7661, , <https://www.rfc-editor.org/info/rfc7661>.
    [RFC8311]
    -
    +
    Black, D., "Relaxing Restrictions on Explicit Congestion Notification (ECN) Experimentation", RFC 8311, DOI 10.17487/RFC8311, , <https://www.rfc-editor.org/info/rfc8311>.
    [RFC8312]
    -
    +
    Rhee, I., Xu, L., Ha, S., Zimmermann, A., Eggert, L., and R. Scheffenegger, "CUBIC for Fast Long-Distance Networks", RFC 8312, DOI 10.17487/RFC8312, , <https://www.rfc-editor.org/info/rfc8312>.
    @@ -2204,28 +2204,28 @@

    packet_number:
    -
    +
    The packet number of the sent packet.
    ack_eliciting:
    -
    +
    A boolean that indicates whether a packet is ack-eliciting. If true, it is expected that an acknowledgement will be received, though the peer could delay sending the ACK frame containing it by up to the MaxAckDelay.
    in_flight:
    -
    +
    A boolean that indicates whether the packet counts towards bytes in flight.
    sent_bytes:
    -
    +
    The number of bytes sent in the packet, not including UDP or IP overhead, but including QUIC framing overhead.
    time_sent:
    -
    +
    The time the packet was sent.
    @@ -2243,27 +2243,27 @@

    suit a variety of environments.

    kPacketThreshold:
    -
    +
    Maximum reordering in packets before packet threshold loss detection considers a packet lost. The RECOMMENDED value is 3.
    kTimeThreshold:
    -
    +
    Maximum reordering in time before time threshold loss detection considers a packet lost. Specified as an RTT multiplier. The RECOMMENDED value is 9/8.
    kGranularity:
    -
    +
    Timer granularity. This is a system-dependent value. However, implementations SHOULD use a value no smaller than 1ms.
    kInitialRtt:
    -
    +
    The RTT used before an RTT sample is taken. The RECOMMENDED value is 500ms.
    kPacketNumberSpace:
    -
    +
    An enum to enumerate the three packet number spaces.
    @@ -2287,53 +2287,53 @@

    are described in this section.

    latest_rtt:
    -
    +
    The most recent RTT measurement made when receiving an ack for a previously unacked packet.
    smoothed_rtt:
    -
    +
    The smoothed RTT of the connection, computed as described in [RFC6298]
    rttvar:
    -
    +
    The RTT variation, computed as described in [RFC6298]
    min_rtt:
    -
    +
    The minimum RTT seen in the connection, ignoring ack delay.
    max_ack_delay:
    -
    +
    The maximum amount of time by which the receiver intends to delay acknowledgments for packets in the ApplicationData packet number space. The actual ack_delay in a received ACK frame may be larger due to late timers, reordering, or lost ACK frames.
    loss_detection_timer:
    -
    +
    Multi-modal timer used for loss detection.
    pto_count:
    -
    +
    The number of times a PTO has been sent without receiving an ack.
    time_of_last_sent_ack_eliciting_packet[kPacketNumberSpace]:
    -
    +
    The time the most recent ack-eliciting packet was sent.
    largest_acked_packet[kPacketNumberSpace]:
    -
    +
    The largest packet number acknowledged in the packet number space so far.
    loss_time[kPacketNumberSpace]:
    -
    +
    The time at which the next packet in that packet number space will be considered lost based on exceeding the reordering window in time.
    sent_packets[kPacketNumberSpace]:
    -
    +
    An association of packet numbers in a packet number space to information about them. Described in detail above in Appendix A.1.
    @@ -2655,24 +2655,24 @@

    in order to better suit a variety of environments.

    kInitialWindow:
    -
    +
    Default limit on the initial amount of data in flight, in bytes. Taken from [RFC6928], but increased slightly to account for the smaller 8 byte overhead of UDP vs 20 bytes for TCP. The RECOMMENDED value is the minimum of 10 * max_datagram_size and max(2 * max_datagram_size, 14720)).
    kMinimumWindow:
    -
    +
    Minimum congestion window in bytes. The RECOMMENDED value is 2 * max_datagram_size.
    kLossReductionFactor:
    -
    +
    Reduction in congestion window when a new loss event is detected. The RECOMMENDED value is 0.5.
    kPersistentCongestionThreshold:
    -
    +
    Period of time for persistent congestion to be established, specified as a PTO multiplier. The rationale for this threshold is to enable a sender to use initial PTOs for aggressive probing, as TCP does with Tail Loss Probe (TLP) @@ -2693,7 +2693,7 @@

    are described in this section.

    max_datagram_size:
    -
    +
    The sender's current maximum payload size. Does not include UDP or IP overhead. The max datagram size is used for congestion window computations. An endpoint sets the value of this variable based on its @@ -2701,13 +2701,13 @@

    1200 bytes.

    ecn_ce_counters[kPacketNumberSpace]:
    -
    +
    The highest value reported for the ECN-CE counter in the packet number space by the peer in an ACK frame. This value is used to detect increases in the reported ECN-CE counter.
    bytes_in_flight:
    -
    +
    The sum of the size in bytes of all sent packets that contain at least one ack-eliciting or PADDING frame, and have not been acked or declared lost. The size does not include IP or UDP overhead, but does include the QUIC @@ -2716,17 +2716,17 @@

    congestion feedback.

    congestion_window:
    -
    +
    Maximum number of bytes-in-flight that may be sent.
    congestion_recovery_start_time:
    -
    +
    The time when QUIC first detects congestion due to loss or ECN, causing it to enter congestion recovery. When a packet sent after this time is acknowledged, QUIC exits congestion recovery.
    ssthresh:
    -
    +
    Slow start threshold in bytes. When the congestion window is below ssthresh, the mode is slow start and the window grows by the number of bytes acknowledged. @@ -2885,7 +2885,7 @@

    RFC Editor's Note: Please remove this section prior to publication of a final version of this document. - +

    Issue and pull request numbers are listed with a leading octothorp.

    @@ -2895,16 +2895,16 @@

    • Define under-utilizing the congestion window (#2630, #2686, #2675)
    • -
    • PTO MUST send data if possible (#3056, #3057) +
    • PTO MUST send data if possible (#3056, #3057)
    • -
    • Connection Close is not ack-eliciting (#3097, #3098) +
    • Connection Close is not ack-eliciting (#3097, #3098)
    • -
    • MUST limit bursts to the initial congestion window (#3160) +
    • MUST limit bursts to the initial congestion window (#3160)
    • -
    • Define the current max_datagram_size for congestion control +
    • Define the current max_datagram_size for congestion control (#3041, #3167)
    • -
    +

    @@ -2915,11 +2915,11 @@

    • PTO should always send an ack-eliciting packet (#2895)
    • -
    • Unify the Handshake Timer with the PTO timer (#2648, #2658, #2886) +
    • Unify the Handshake Timer with the PTO timer (#2648, #2658, #2886)
    • -
    • Move ACK generation text to transport draft (#1860, #2916) +
    • Move ACK generation text to transport draft (#1860, #2916)
    • -
    +

    @@ -2930,7 +2930,7 @@

    • No changes
    • -
    +

    @@ -2941,12 +2941,12 @@

    • Path validation can be used as initial RTT value (#2644, #2687)
    • -
    • max_ack_delay transport parameter defaults to 0 (#2638, #2646) +
    • max_ack_delay transport parameter defaults to 0 (#2638, #2646)
    • -
    • Ack Delay only measures intentional delays induced by the implementation +
    • Ack Delay only measures intentional delays induced by the implementation (#2596, #2786)
    • -
    +

    @@ -2957,25 +2957,25 @@

    • Change kPersistentThreshold from an exponent to a multiplier (#2557)
    • -
    • Send a PING if the PTO timer fires and there's nothing to send (#2624) +
    • Send a PING if the PTO timer fires and there's nothing to send (#2624)
    • -
    • Set loss delay to at least kGranularity (#2617) +
    • Set loss delay to at least kGranularity (#2617)
    • -
    • Merge application limited and sending after idle sections. Always limit +
    • Merge application limited and sending after idle sections. Always limit burst size instead of requiring resetting CWND to initial CWND after idle (#2605)
    • -
    • Rewrite RTT estimation, allow RTT samples where a newly acked packet is +
    • Rewrite RTT estimation, allow RTT samples where a newly acked packet is ack-eliciting but the largest_acked is not (#2592)
    • -
    • Don't arm the handshake timer if there is no handshake data (#2590) +
    • Don't arm the handshake timer if there is no handshake data (#2590)
    • -
    • Clarify that the time threshold loss alarm takes precedence over the +
    • Clarify that the time threshold loss alarm takes precedence over the crypto handshake timer (#2590, #2620)
    • -
    • Change initial RTT to 500ms to align with RFC6298 (#2184) +
    • Change initial RTT to 500ms to align with RFC6298 (#2184)
    • -
    +

    @@ -2986,20 +2986,20 @@

    • Change IW byte limit to 14720 from 14600 (#2494)
    • -
    • Update PTO calculation to match RFC6298 (#2480, #2489, #2490) +
    • Update PTO calculation to match RFC6298 (#2480, #2489, #2490)
    • -
    • Improve loss detection's description of multiple packet number spaces and +
    • Improve loss detection's description of multiple packet number spaces and pseudocode (#2485, #2451, #2417)
    • -
    • Declare persistent congestion even if non-probe packets are sent and don't +
    • Declare persistent congestion even if non-probe packets are sent and don't make persistent congestion more aggressive than RTO verified was (#2365, #2244)
    • -
    • Move pseudocode to the appendices (#2408) +
    • Move pseudocode to the appendices (#2408)
    • -
    • What to send on multiple PTOs (#2380) +
    • What to send on multiple PTOs (#2380)
    • -
    +

    @@ -3010,27 +3010,27 @@

    • After Probe Timeout discard in-flight packets or send another (#2212, #1965)
    • -
    • Endpoints discard initial keys as soon as handshake keys are available (#1951, +
    • Endpoints discard initial keys as soon as handshake keys are available (#1951, #2045)
    • -
    • 0-RTT state is discarded when 0-RTT is rejected (#2300) +
    • 0-RTT state is discarded when 0-RTT is rejected (#2300)
    • -
    • Loss detection timer is cancelled when ack-eliciting frames are in flight +
    • Loss detection timer is cancelled when ack-eliciting frames are in flight (#2117, #2093)
    • -
    • Packets are declared lost if they are in flight (#2104) +
    • Packets are declared lost if they are in flight (#2104)
    • -
    • After becoming idle, either pace packets or reset the congestion controller +
    • After becoming idle, either pace packets or reset the congestion controller (#2138, 2187)
    • -
    • Process ECN counts before marking packets lost (#2142) +
    • Process ECN counts before marking packets lost (#2142)
    • -
    • Mark packets lost before resetting crypto_count and pto_count (#2208, #2209) +
    • Mark packets lost before resetting crypto_count and pto_count (#2208, #2209)
    • -
    • Congestion and loss recovery state are discarded when keys are discarded +
    • Congestion and loss recovery state are discarded when keys are discarded (#2327)
    • -
    +

    @@ -3042,30 +3042,30 @@

  • Unify TLP and RTO into a single PTO; eliminate min RTO, min TLP and min crypto timeouts; eliminate timeout validation (#2114, #2166, #2168, #1017)
  • -
  • Redefine how congestion avoidance in terms of when the period starts (#1928, +
  • Redefine how congestion avoidance in terms of when the period starts (#1928, #1930)
  • -
  • Document what needs to be tracked for packets that are in flight (#765, #1724, +
  • Document what needs to be tracked for packets that are in flight (#765, #1724, #1939)
  • -
  • Integrate both time and packet thresholds into loss detection (#1969, #1212, +
  • Integrate both time and packet thresholds into loss detection (#1969, #1212, #934, #1974)
  • -
  • Reduce congestion window after idle, unless pacing is used (#2007, #2023) +
  • Reduce congestion window after idle, unless pacing is used (#2007, #2023)
  • -
  • Disable RTT calculation for packets that don't elicit acknowledgment (#2060, +
  • Disable RTT calculation for packets that don't elicit acknowledgment (#2060, #2078)
  • -
  • Limit ack_delay by max_ack_delay (#2060, #2099) +
  • Limit ack_delay by max_ack_delay (#2060, #2099)
  • -
  • Initial keys are discarded once Handshake keys are available (#1951, #2045) +
  • Initial keys are discarded once Handshake keys are available (#1951, #2045)
  • -
  • Reorder ECN and loss detection in pseudocode (#2142) +
  • Reorder ECN and loss detection in pseudocode (#2142)
  • -
  • Only cancel loss detection timer if ack-eliciting packets are in flight +
  • Only cancel loss detection timer if ack-eliciting packets are in flight (#2093, #2117)
  • - +

    @@ -3076,9 +3076,9 @@

    • Used max_ack_delay from transport params (#1796, #1782)
    • -
    • Merge ACK and ACK_ECN (#1783) +
    • Merge ACK and ACK_ECN (#1783)
    • -
    +

    @@ -3089,16 +3089,16 @@

    • Corrected the lack of ssthresh reduction in CongestionEvent pseudocode (#1598)
    • -
    • Considerations for ECN spoofing (#1426, #1626) +
    • Considerations for ECN spoofing (#1426, #1626)
    • -
    • Clarifications for PADDING and congestion control (#837, #838, #1517, #1531, +
    • Clarifications for PADDING and congestion control (#837, #838, #1517, #1531, #1540)
    • -
    • Reduce early retransmission timer to RTT/8 (#945, #1581) +
    • Reduce early retransmission timer to RTT/8 (#945, #1581)
    • -
    • Packets are declared lost after an RTO is verified (#935, #1582) +
    • Packets are declared lost after an RTO is verified (#935, #1582)
    • -
    +

    @@ -3110,10 +3110,10 @@

  • Changes to manage separate packet number spaces and encryption levels (#1190, #1242, #1413, #1450)
  • -
  • Added ECN feedback mechanisms and handling; new ACK_ECN frame (#804, #805, +
  • Added ECN feedback mechanisms and handling; new ACK_ECN frame (#804, #805, #1372)
  • - +

    @@ -3132,16 +3132,16 @@

    • Improved text on ack generation (#1139, #1159)
    • -
    • Make references to TCP recovery mechanisms informational (#1195) +
    • Make references to TCP recovery mechanisms informational (#1195)
    • -
    • Define time_of_last_sent_handshake_packet (#1171) +
    • Define time_of_last_sent_handshake_packet (#1171)
    • -
    • Added signal from TLS the data it includes needs to be sent in a Retry packet +
    • Added signal from TLS the data it includes needs to be sent in a Retry packet (#1061, #1199)
    • -
    • Minimum RTT (min_rtt) is initialized with an infinite value (#1169) +
    • Minimum RTT (min_rtt) is initialized with an infinite value (#1169)
    • -
    +

    @@ -3160,7 +3160,7 @@

    • Clarified pacing and RTO (#967, #977)
    • -
    +

    @@ -3171,13 +3171,13 @@

    • Include Ack Delay in RTO(and TLP) computations (#981)
    • -
    • Ack Delay in SRTT computation (#961) +
    • Ack Delay in SRTT computation (#961)
    • -
    • Default RTT and Slow Start (#590) +
    • Default RTT and Slow Start (#590)
    • -
    • Many editorial fixes. +
    • Many editorial fixes.
    • -
    +

    @@ -3196,7 +3196,7 @@

    • Add more congestion control text (#776)
    • -
    +

    @@ -3223,13 +3223,13 @@

    • Integrate F-RTO (#544, #409)
    • -
    • Add congestion control (#545, #395) +
    • Add congestion control (#545, #395)
    • -
    • Require connection abort if a skipped packet was acknowledged (#415) +
    • Require connection abort if a skipped packet was acknowledged (#415)
    • -
    • Simplify RTO calculations (#142, #417) +
    • Simplify RTO calculations (#142, #417)
    • -
    +

    @@ -3240,15 +3240,15 @@

    • Overview added to loss detection
    • -
    • Changes initial default RTT to 100ms +
    • Changes initial default RTT to 100ms
    • -
    • Added time-based loss detection and fixes early retransmit +
    • Added time-based loss detection and fixes early retransmit
    • -
    • Clarified loss recovery for handshake packets +
    • Clarified loss recovery for handshake packets
    • -
    • Fixed references and made TCP references informative +
    • Fixed references and made TCP references informative
    • -
    +

    @@ -3259,7 +3259,7 @@

    • Improved description of constants and ACK behavior
    • -
    +

    @@ -3270,11 +3270,11 @@

    • Adopted as base for draft-ietf-quic-recovery
    • -
    • Updated authors/editors list +
    • Updated authors/editors list
    • -
    • Added table of contents +
    • Added table of contents
    • -
    +

    diff --git a/ecn-alg/draft-ietf-quic-recovery.txt b/ecn-alg/draft-ietf-quic-recovery.txt index 73c12ac56b..771ad9ff87 100644 --- a/ecn-alg/draft-ietf-quic-recovery.txt +++ b/ecn-alg/draft-ietf-quic-recovery.txt @@ -5,8 +5,8 @@ QUIC J. Iyengar, Ed. Internet-Draft Fastly Intended status: Standards Track I. Swett, Ed. -Expires: 10 July 2020 Google - 7 January 2020 +Expires: 11 July 2020 Google + 8 January 2020 QUIC Loss Detection and Congestion Control @@ -44,7 +44,7 @@ Status of This Memo time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." - This Internet-Draft will expire on 10 July 2020. + This Internet-Draft will expire on 11 July 2020. Copyright Notice @@ -53,7 +53,7 @@ Copyright Notice -Iyengar & Swett Expires 10 July 2020 [Page 1] +Iyengar & Swett Expires 11 July 2020 [Page 1] Internet-Draft QUIC Loss Detection January 2020 @@ -109,7 +109,7 @@ Table of Contents -Iyengar & Swett Expires 10 July 2020 [Page 2] +Iyengar & Swett Expires 11 July 2020 [Page 2] Internet-Draft QUIC Loss Detection January 2020 @@ -165,7 +165,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 3] +Iyengar & Swett Expires 11 July 2020 [Page 3] Internet-Draft QUIC Loss Detection January 2020 @@ -221,7 +221,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 4] +Iyengar & Swett Expires 11 July 2020 [Page 4] Internet-Draft QUIC Loss Detection January 2020 @@ -277,7 +277,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 5] +Iyengar & Swett Expires 11 July 2020 [Page 5] Internet-Draft QUIC Loss Detection January 2020 @@ -333,7 +333,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 6] +Iyengar & Swett Expires 11 July 2020 [Page 6] Internet-Draft QUIC Loss Detection January 2020 @@ -389,7 +389,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 7] +Iyengar & Swett Expires 11 July 2020 [Page 7] Internet-Draft QUIC Loss Detection January 2020 @@ -445,7 +445,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 8] +Iyengar & Swett Expires 11 July 2020 [Page 8] Internet-Draft QUIC Loss Detection January 2020 @@ -501,7 +501,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 9] +Iyengar & Swett Expires 11 July 2020 [Page 9] Internet-Draft QUIC Loss Detection January 2020 @@ -557,7 +557,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 10] +Iyengar & Swett Expires 11 July 2020 [Page 10] Internet-Draft QUIC Loss Detection January 2020 @@ -613,7 +613,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 11] +Iyengar & Swett Expires 11 July 2020 [Page 11] Internet-Draft QUIC Loss Detection January 2020 @@ -669,7 +669,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 12] +Iyengar & Swett Expires 11 July 2020 [Page 12] Internet-Draft QUIC Loss Detection January 2020 @@ -725,7 +725,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 13] +Iyengar & Swett Expires 11 July 2020 [Page 13] Internet-Draft QUIC Loss Detection January 2020 @@ -781,7 +781,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 14] +Iyengar & Swett Expires 11 July 2020 [Page 14] Internet-Draft QUIC Loss Detection January 2020 @@ -837,7 +837,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 15] +Iyengar & Swett Expires 11 July 2020 [Page 15] Internet-Draft QUIC Loss Detection January 2020 @@ -893,7 +893,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 16] +Iyengar & Swett Expires 11 July 2020 [Page 16] Internet-Draft QUIC Loss Detection January 2020 @@ -949,7 +949,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 17] +Iyengar & Swett Expires 11 July 2020 [Page 17] Internet-Draft QUIC Loss Detection January 2020 @@ -1005,7 +1005,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 18] +Iyengar & Swett Expires 11 July 2020 [Page 18] Internet-Draft QUIC Loss Detection January 2020 @@ -1061,7 +1061,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 19] +Iyengar & Swett Expires 11 July 2020 [Page 19] Internet-Draft QUIC Loss Detection January 2020 @@ -1107,17 +1107,17 @@ Internet-Draft QUIC Loss Detection January 2020 [QUIC-TLS] Thomson, M., Ed. and S. Turner, Ed., "Using TLS to Secure QUIC", Work in Progress, Internet-Draft, draft-ietf-quic- - tls-latest, 7 January 2020, + tls-latest, 8 January 2020, . [QUIC-TRANSPORT] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", Work in Progress, - Internet-Draft, draft-ietf-quic-transport-latest, 7 + Internet-Draft, draft-ietf-quic-transport-latest, 8 -Iyengar & Swett Expires 10 July 2020 [Page 20] +Iyengar & Swett Expires 11 July 2020 [Page 20] Internet-Draft QUIC Loss Detection January 2020 @@ -1173,7 +1173,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 21] +Iyengar & Swett Expires 11 July 2020 [Page 21] Internet-Draft QUIC Loss Detection January 2020 @@ -1229,7 +1229,7 @@ Appendix A. Loss Recovery Pseudocode -Iyengar & Swett Expires 10 July 2020 [Page 22] +Iyengar & Swett Expires 11 July 2020 [Page 22] Internet-Draft QUIC Loss Detection January 2020 @@ -1285,7 +1285,7 @@ A.2. Constants of interest -Iyengar & Swett Expires 10 July 2020 [Page 23] +Iyengar & Swett Expires 11 July 2020 [Page 23] Internet-Draft QUIC Loss Detection January 2020 @@ -1341,7 +1341,7 @@ A.3. Variables of interest -Iyengar & Swett Expires 10 July 2020 [Page 24] +Iyengar & Swett Expires 11 July 2020 [Page 24] Internet-Draft QUIC Loss Detection January 2020 @@ -1397,7 +1397,7 @@ A.5. On Sending a Packet -Iyengar & Swett Expires 10 July 2020 [Page 25] +Iyengar & Swett Expires 11 July 2020 [Page 25] Internet-Draft QUIC Loss Detection January 2020 @@ -1453,7 +1453,7 @@ A.6. On Receiving an Acknowledgment -Iyengar & Swett Expires 10 July 2020 [Page 26] +Iyengar & Swett Expires 11 July 2020 [Page 26] Internet-Draft QUIC Loss Detection January 2020 @@ -1509,7 +1509,7 @@ A.8. Setting the Loss Detection Timer -Iyengar & Swett Expires 10 July 2020 [Page 27] +Iyengar & Swett Expires 11 July 2020 [Page 27] Internet-Draft QUIC Loss Detection January 2020 @@ -1565,7 +1565,7 @@ Internet-Draft QUIC Loss Detection January 2020 -Iyengar & Swett Expires 10 July 2020 [Page 28] +Iyengar & Swett Expires 11 July 2020 [Page 28] Internet-Draft QUIC Loss Detection January 2020 @@ -1621,7 +1621,7 @@ A.10. Detecting Lost Packets -Iyengar & Swett Expires 10 July 2020 [Page 29] +Iyengar & Swett Expires 11 July 2020 [Page 29] Internet-Draft QUIC Loss Detection January 2020 @@ -1677,7 +1677,7 @@ B.1. Constants of interest -Iyengar & Swett Expires 10 July 2020 [Page 30] +Iyengar & Swett Expires 11 July 2020 [Page 30] Internet-Draft QUIC Loss Detection January 2020 @@ -1733,7 +1733,7 @@ B.2. Variables of interest -Iyengar & Swett Expires 10 July 2020 [Page 31] +Iyengar & Swett Expires 11 July 2020 [Page 31] Internet-Draft QUIC Loss Detection January 2020 @@ -1789,7 +1789,7 @@ B.5. On Packet Acknowledgement -Iyengar & Swett Expires 10 July 2020 [Page 32] +Iyengar & Swett Expires 11 July 2020 [Page 32] Internet-Draft QUIC Loss Detection January 2020 @@ -1845,7 +1845,7 @@ B.7. Process ECN Information -Iyengar & Swett Expires 10 July 2020 [Page 33] +Iyengar & Swett Expires 11 July 2020 [Page 33] Internet-Draft QUIC Loss Detection January 2020 @@ -1901,7 +1901,7 @@ C.1. Since draft-ietf-quic-recovery-23 -Iyengar & Swett Expires 10 July 2020 [Page 34] +Iyengar & Swett Expires 11 July 2020 [Page 34] Internet-Draft QUIC Loss Detection January 2020 @@ -1957,7 +1957,7 @@ C.6. Since draft-ietf-quic-recovery-18 -Iyengar & Swett Expires 10 July 2020 [Page 35] +Iyengar & Swett Expires 11 July 2020 [Page 35] Internet-Draft QUIC Loss Detection January 2020 @@ -2013,7 +2013,7 @@ C.8. Since draft-ietf-quic-recovery-16 -Iyengar & Swett Expires 10 July 2020 [Page 36] +Iyengar & Swett Expires 11 July 2020 [Page 36] Internet-Draft QUIC Loss Detection January 2020 @@ -2069,7 +2069,7 @@ C.11. Since draft-ietf-quic-recovery-12 -Iyengar & Swett Expires 10 July 2020 [Page 37] +Iyengar & Swett Expires 11 July 2020 [Page 37] Internet-Draft QUIC Loss Detection January 2020 @@ -2125,7 +2125,7 @@ C.18. Since draft-ietf-quic-recovery-05 -Iyengar & Swett Expires 10 July 2020 [Page 38] +Iyengar & Swett Expires 11 July 2020 [Page 38] Internet-Draft QUIC Loss Detection January 2020 @@ -2181,7 +2181,7 @@ C.24. Since draft-iyengar-quic-loss-recovery-01 -Iyengar & Swett Expires 10 July 2020 [Page 39] +Iyengar & Swett Expires 11 July 2020 [Page 39] Internet-Draft QUIC Loss Detection January 2020 @@ -2237,4 +2237,4 @@ Authors' Addresses -Iyengar & Swett Expires 10 July 2020 [Page 40] +Iyengar & Swett Expires 11 July 2020 [Page 40] diff --git a/ecn-alg/draft-ietf-quic-tls.html b/ecn-alg/draft-ietf-quic-tls.html index 5c11819a20..8afc79550c 100644 --- a/ecn-alg/draft-ietf-quic-tls.html +++ b/ecn-alg/draft-ietf-quic-tls.html @@ -11,7 +11,7 @@ This document describes how Transport Layer Security (TLS) is used to secure QUIC. " name="description"> - + @@ -820,7 +820,7 @@ Thomson & Turner -Expires 10 July 2020 +Expires 11 July 2020 [Page] @@ -833,12 +833,12 @@
    draft-ietf-quic-tls-latest
    Published:
    - +
    Intended Status:
    Standards Track
    Expires:
    -
    +
    Authors:
    @@ -890,7 +890,7 @@

    time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

    - This Internet-Draft will expire on 10 July 2020.

    + This Internet-Draft will expire on 11 July 2020.

    @@ -1287,12 +1287,12 @@

    after one round trip and the server immediately responds after receiving the first handshake message from the client. -
  • A 0-RTT handshake in which the client uses information it has previously +
  • A 0-RTT handshake in which the client uses information it has previously learned about the server to send Application Data immediately. This Application Data can be replayed by an attacker so it MUST NOT carry a self-contained trigger for any non-idempotent action.
  • - +

    A simplified TLS handshake with 0-RTT application data is shown in Figure 2. Note that this omits the EndOfEarlyData message, which is not used in QUIC (see Section 8.3). Likewise, neither ChangeCipherSpec nor KeyUpdate messages are @@ -1328,13 +1328,13 @@

    • Initial Keys
    • -
    • Early Data (0-RTT) Keys +
    • Early Data (0-RTT) Keys
    • -
    • Handshake Keys +
    • Handshake Keys
    • -
    • Application Data (1-RTT) Keys +
    • Application Data (1-RTT) Keys
    • -
    +

    Application Data may appear only in the Early Data and Application Data levels. Handshake and Alert messages may appear in any level.

    The 0-RTT handshake is only possible if the client and server have previously @@ -1391,11 +1391,11 @@

  • The TLS component sends and receives messages via the QUIC component, with QUIC providing a reliable stream abstraction to TLS.
  • -
  • The TLS component provides a series of updates to the QUIC component, +
  • The TLS component provides a series of updates to the QUIC component, including (a) new packet protection keys to install (b) state changes such as handshake completion, the server certificate, etc.
  • - +

    Figure 4 shows these interactions in more detail, with the QUIC packet protection being called out specially.

    @@ -1455,18 +1455,18 @@

    • PADDING and PING frames MAY appear in packets of any encryption level.
    • -
    • CRYPTO frames and CONNECTION_CLOSE frames signaling errors at the QUIC layer +
    • CRYPTO frames and CONNECTION_CLOSE frames signaling errors at the QUIC layer (type 0x1c) MAY appear in packets of any encryption level except 0-RTT.
    • -
    • CONNECTION_CLOSE frames signaling application errors (type 0x1d) MUST only be +
    • CONNECTION_CLOSE frames signaling application errors (type 0x1d) MUST only be sent in packets at the 1-RTT encryption level.
    • -
    • ACK frames MAY appear in packets of any encryption level other than 0-RTT, but +
    • ACK frames MAY appear in packets of any encryption level other than 0-RTT, but can only acknowledge packets which appeared in that packet number space.
    • -
    • All other frame types MUST only be sent in the 0-RTT and 1-RTT levels. +
    • All other frame types MUST only be sent in the 0-RTT and 1-RTT levels.
    • -
    +

    Note that it is not possible to send the following frames in 0-RTT for various reasons: ACK, CRYPTO, NEW_TOKEN, PATH_RESPONSE, and RETIRE_CONNECTION_ID.

    Because packets could be reordered on the wire, QUIC uses the packet type to @@ -1533,14 +1533,14 @@

    • Sending and receiving handshake messages
    • -
    • Processing stored transport and application state from a resumed session +
    • Processing stored transport and application state from a resumed session and determining if it is valid to accept early data
    • -
    • Rekeying (both transmit and receive) +
    • Rekeying (both transmit and receive)
    • -
    • Handshake state updates +
    • Handshake state updates
    • -
    +

    Additional functions might be needed to configure TLS.

    @@ -1606,18 +1606,18 @@

    find the proper location in the data sequence. If the result of this process is that new data is available, then it is delivered to TLS in order. -
  • If the packet is from a previously installed encryption level, it MUST not +
  • If the packet is from a previously installed encryption level, it MUST not contain data which extends past the end of previously received data in that flow. Implementations MUST treat any violations of this requirement as a connection error of type PROTOCOL_VIOLATION.
  • -
  • If the packet is from a new encryption level, it is saved for later processing +
  • If the packet is from a new encryption level, it is saved for later processing by TLS. Once TLS moves to receiving from this encryption level, saved data can be provided. When providing data from any new encryption level to TLS, if there is data from a previous encryption level that TLS has not consumed, this MUST be treated as a connection error of type PROTOCOL_VIOLATION.
  • - +

    Each time that TLS is provided with new data, new handshake bytes are requested from TLS. TLS might not provide any bytes if the handshake messages it has received are incomplete or it has no data to send.

    @@ -1649,11 +1649,11 @@

    • A secret
    • -
    • An Authenticated Encryption with Associated Data (AEAD) function +
    • An Authenticated Encryption with Associated Data (AEAD) function
    • -
    • A Key Derivation Function (KDF) +
    • A Key Derivation Function (KDF)
    • -
    +

    These values are based on the values that TLS negotiates and are used by QUIC to generate packet and header protection keys (see Section 5 and Section 5.4).

    @@ -2061,7 +2061,7 @@

    response to an Initial packet from the server.

    Note:
    -
    +
    The Destination Connection ID is of arbitrary length, and it could be zero length if the server sends a Retry packet with a zero-length Source Connection ID field. In this case, the Initial keys provide no assurance to the client @@ -2099,7 +2099,7 @@

    and produce an output 16 bytes larger than their input.

    Note:
    -
    +
    An endpoint MUST NOT reject a ClientHello that offers a ciphersuite that it does not support, or it would be impossible to deploy a new ciphersuite. This also applies to TLS_AES_128_CCM_8_SHA256. @@ -2365,7 +2365,7 @@

    packets.

    Note:
    -
    +
    0-RTT data can be acknowledged by the server as it receives it, but any packets containing acknowledgments of 0-RTT data cannot have packet protection removed by the client until the TLS handshake is complete. The 1-RTT keys @@ -2392,12 +2392,12 @@

    pre-shared key and validated the client's pre-shared key binder; see Section 4.2.11 of [TLS13]. -
  • The client has not demonstrated liveness, unless a RETRY packet was used. +
  • The client has not demonstrated liveness, unless a RETRY packet was used.
  • -
  • Any received 0-RTT data that the server responds to might be due to a replay +
  • Any received 0-RTT data that the server responds to might be due to a replay attack.
  • - +

    Therefore, the server's use of 1-RTT keys MUST be limited to sending data before the handshake is complete. A server MUST NOT process incoming 1-RTT protected packets before the TLS handshake is complete. Because sending acknowledgments @@ -2407,7 +2407,7 @@

    once the handshake is complete.

    Note:
    -
    +
    TLS implementations might provide all 1-RTT secrets prior to handshake completion. Even where QUIC implementations have 1-RTT read keys, those keys cannot be used prior to completing the handshake. @@ -2507,7 +2507,7 @@

    higher than or equal to the former, another key update can be initiated.

    Note:
    -
    +
    Keys of packets other than the 1-RTT packets are never updated; their keys are derived solely from the TLS handshake state.
    @@ -2795,7 +2795,7 @@

    those produced by the application protocol that QUIC serves.

    Note:
    -
    +
    TLS session tickets and address validation tokens are used to carry QUIC configuration information between connections. These MUST NOT be used to carry application semantics. The potential for reuse of these tokens means @@ -2867,7 +2867,7 @@

    algorithms described in this document, that probability is one in 2^64.

    Note:
    -
    +
    In some cases, inputs shorter than the full size required by the packet protection algorithm might be used.
    @@ -2948,10 +2948,10 @@

    The Recommended column is to be marked Yes. The TLS 1.3 Column is to include CH and EE. -
  • QUIC Transport Error Codes Registry [QUIC-TRANSPORT] - IANA is to register +
  • QUIC Transport Error Codes Registry [QUIC-TRANSPORT] - IANA is to register the KEY_UPDATE_ERROR (0xE), as described in Section 6.7.
  • - +

    @@ -2964,37 +2964,37 @@

    [AEAD]
    -
    +
    McGrew, D., "An Interface and Algorithms for Authenticated Encryption", RFC 5116, DOI 10.17487/RFC5116, , <https://www.rfc-editor.org/info/rfc5116>.
    [AES]
    -
    +
    "Advanced encryption standard (AES)", DOI 10.6028/nist.fips.197, National Institute of Standards and Technology report, , <https://doi.org/10.6028/nist.fips.197>.
    [ALPN]
    -
    +
    Friedl, S., Popov, A., Langley, A., and E. Stephan, "Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension", RFC 7301, DOI 10.17487/RFC7301, , <https://www.rfc-editor.org/info/rfc7301>.
    [CHACHA]
    -
    +
    Nir, Y. and A. Langley, "ChaCha20 and Poly1305 for IETF Protocols", RFC 8439, DOI 10.17487/RFC8439, , <https://www.rfc-editor.org/info/rfc8439>.
    [QUIC-RECOVERY]
    -
    -Iyengar, J., Ed. and I. Swett, Ed., "QUIC Loss Detection and Congestion Control", Work in Progress, Internet-Draft, draft-ietf-quic-recovery-latest, , <https://tools.ietf.org/html/draft-ietf-quic-recovery-latest>.
    +
    +Iyengar, J., Ed. and I. Swett, Ed., "QUIC Loss Detection and Congestion Control", Work in Progress, Internet-Draft, draft-ietf-quic-recovery-latest, , <https://tools.ietf.org/html/draft-ietf-quic-recovery-latest>.
    [QUIC-TRANSPORT]
    -
    -Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", Work in Progress, Internet-Draft, draft-ietf-quic-transport-latest, , <https://tools.ietf.org/html/draft-ietf-quic-transport-latest>.
    +
    +Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", Work in Progress, Internet-Draft, draft-ietf-quic-transport-latest, , <https://tools.ietf.org/html/draft-ietf-quic-transport-latest>.
    [RFC2119]
    -
    +
    Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
    [RFC8174]
    -
    +
    Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.
    [SHA]
    -
    +
    Dang, Q., "Secure Hash Standard", DOI 10.6028/nist.fips.180-4, National Institute of Standards and Technology report, , <https://doi.org/10.6028/nist.fips.180-4>.
    [TLS-REGISTRIES]
    -
    +
    Salowey, J. and S. Turner, "IANA Registry Updates for TLS and DTLS", RFC 8447, DOI 10.17487/RFC8447, , <https://www.rfc-editor.org/info/rfc8447>.
    [TLS13]
    -
    +
    Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, , <https://www.rfc-editor.org/info/rfc8446>.
    @@ -3004,25 +3004,25 @@

    [AEBounds]
    -
    +
    Luykx, A. and K. Paterson, "Limits on Authenticated Encryption Use in TLS", , <http://www.isg.rhul.ac.uk/~kp/TLS-AEbounds.pdf>.
    [HTTP2-TLS13]
    -
    +
    Benjamin, D., "Using TLS 1.3 with HTTP/2", Work in Progress, Internet-Draft, draft-ietf-httpbis-http2-tls13-03, , <http://www.ietf.org/internet-drafts/draft-ietf-httpbis-http2-tls13-03.txt>.
    [IMC]
    -
    +
    Katz, J. and Y. Lindell, "Introduction to Modern Cryptography, Second Edition", ISBN 978-1466570269, .
    [NAN]
    -
    +
    Bellare, M., Ng, R., and B. Tackmann, "Nonces Are Noticed: AEAD Revisited", DOI 10.1007/978-3-030-26948-7_9, Advances in Cryptology - CRYPTO 2019 pp. 235-265, , <https://doi.org/10.1007/978-3-030-26948-7_9>.
    [QUIC-HTTP]
    -
    -Bishop, M., Ed., "Hypertext Transfer Protocol (HTTP) over QUIC", Work in Progress, Internet-Draft, draft-ietf-quic-http-latest, , <https://tools.ietf.org/html/draft-ietf-quic-http-latest>.
    +
    +Bishop, M., Ed., "Hypertext Transfer Protocol (HTTP) over QUIC", Work in Progress, Internet-Draft, draft-ietf-quic-http-latest, , <https://tools.ietf.org/html/draft-ietf-quic-http-latest>.
    [RFC2818]
    -
    +
    Rescorla, E., "HTTP Over TLS", RFC 2818, DOI 10.17487/RFC2818, , <https://www.rfc-editor.org/info/rfc2818>.
    [RFC5280]
    -
    +
    Cooper, D., Santesson, S., Farrell, S., Boeyen, S., Housley, R., and W. Polk, "Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile", RFC 5280, DOI 10.17487/RFC5280, , <https://www.rfc-editor.org/info/rfc5280>.
    @@ -3045,23 +3045,23 @@

    The labels generated by the HKDF-Expand-Label function are:

    client in:
    -
    +
    00200f746c73313320636c69656e7420696e00
    server in:
    -
    +
    00200f746c7331332073657276657220696e00
    quic key:
    -
    +
    00100e746c7331332071756963206b657900
    quic iv:
    -
    +
    000c0d746c733133207175696320697600
    quic hp:
    -
    +
    00100d746c733133207175696320687000
    @@ -3254,7 +3254,7 @@

    RFC Editor's Note: Please remove this section prior to publication of a final version of this document. - +

    Issue and pull request numbers are listed with a leading octothorp.

    @@ -3267,15 +3267,15 @@

    • Recommend constant-time key replacement (#2792)
    • -
    • Provide explicit labels for key update key derivation (#3054) +
    • Provide explicit labels for key update key derivation (#3054)
    • -
    + -
  • Allow first Initial from a client to span multiple packets (#2928, #3045) +
  • Allow first Initial from a client to span multiple packets (#2928, #3045)
  • -
  • PING can be sent at any encryption level (#3034, #3035) +
  • PING can be sent at any encryption level (#3034, #3035)
  • - +

    @@ -3286,7 +3286,7 @@

    • Update the salt used for Initial secrets (#2887, #2980)
    • -
    +

    @@ -3297,7 +3297,7 @@

    • No changes
    • -
    +

    @@ -3308,10 +3308,10 @@

    • Mandate the use of the QUIC transport parameters extension (#2528, #2560)
    • -
    • Define handshake completion and confirmation; define clearer rules when it +
    • Define handshake completion and confirmation; define clearer rules when it encryption keys should be discarded (#2214, #2267, #2673)
    • -
    +

    @@ -3322,9 +3322,9 @@

    • Increased the set of permissible frames in 0-RTT (#2344, #2355)
    • -
    • Transport parameter extension is mandatory (#2528, #2560) +
    • Transport parameter extension is mandatory (#2528, #2560)
    • -
    +

    @@ -3336,9 +3336,9 @@

  • Endpoints discard initial keys as soon as handshake keys are available (#1951, #2045)
  • -
  • Use of ALPN or equivalent is mandatory (#2263, #2284) +
  • Use of ALPN or equivalent is mandatory (#2263, #2284)
  • - +

    @@ -3349,29 +3349,29 @@

    • Update the salt used for Initial secrets (#1970)
    • -
    • Clarify that TLS_AES_128_CCM_8_SHA256 isn't supported (#2019) +
    • Clarify that TLS_AES_128_CCM_8_SHA256 isn't supported (#2019)
    • -
    • +
    • Change header protection

      • Sample from a fixed offset (#1575, #2030)
      • -
      • Cover part of the first byte, including the key phase (#1322, #2006) +
      • Cover part of the first byte, including the key phase (#1322, #2006)
      • -
      +
    -
  • +
  • TLS provides an AEAD and KDF function (#2046)

    • Clarify that the TLS KDF is used with TLS (#1997)
    • -
    • Change the labels for calculation of QUIC keys (#1845, #1971, #1991) +
    • Change the labels for calculation of QUIC keys (#1845, #1971, #1991)
    • -
    +
  • -
  • Initial keys are discarded once Handshake keys are available (#1951, #2045) +
  • Initial keys are discarded once Handshake keys are available (#1951, #2045)
  • - +

    @@ -3382,7 +3382,7 @@

    • Updated to TLS 1.3 final (#1660)
    • -
    +

    @@ -3397,19 +3397,19 @@

    • The cryptographic handshake uses CRYPTO frames, not stream 0
    • -
    • QUIC packet protection is used in place of TLS record protection +
    • QUIC packet protection is used in place of TLS record protection
    • -
    • Separate QUIC packet number spaces are used for the handshake +
    • Separate QUIC packet number spaces are used for the handshake
    • -
    • Changed Retry to be independent of the cryptographic handshake +
    • Changed Retry to be independent of the cryptographic handshake
    • -
    • Limit the use of HelloRetryRequest to address TLS needs (like key shares) +
    • Limit the use of HelloRetryRequest to address TLS needs (like key shares)
    • -
    + -
  • Changed codepoint of TLS extension (#1395, #1402) +
  • Changed codepoint of TLS extension (#1395, #1402)
  • - +

    @@ -3420,7 +3420,7 @@

    • Encrypted packet numbers.
    • -
    +

    @@ -3431,7 +3431,7 @@

    • No significant changes.
    • -
    +

    @@ -3443,7 +3443,7 @@

  • Cleaned up key schedule and updated the salt used for handshake packet protection (#1077)
  • - +

    @@ -3454,9 +3454,9 @@

    • Specify value for max_early_data_size to enable 0-RTT (#942)
    • -
    • Update key derivation function (#1003, #1004) +
    • Update key derivation function (#1003, #1004)
    • -
    +

    @@ -3467,7 +3467,7 @@

    • Handshake errors can be reported with CONNECTION_CLOSE (#608, #891)
    • -
    +

    @@ -3486,7 +3486,7 @@

    • Update labels used in HKDF-Expand-Label to match TLS 1.3 (#642)
    • -
    +

    @@ -3505,7 +3505,7 @@

    • Updates to match changes in transport draft
    • -
    +

    @@ -3516,25 +3516,25 @@

    • Use TLS alerts to signal TLS errors (#272, #374)
    • -
    • Require ClientHello to fit in a single packet (#338) +
    • Require ClientHello to fit in a single packet (#338)
    • -
    • The second client handshake flight is now sent in the clear (#262, #337) +
    • The second client handshake flight is now sent in the clear (#262, #337)
    • -
    • The QUIC header is included as AEAD Associated Data (#226, #243, #302) +
    • The QUIC header is included as AEAD Associated Data (#226, #243, #302)
    • -
    • Add interface necessary for client address validation (#275) +
    • Add interface necessary for client address validation (#275)
    • -
    • Define peer authentication (#140) +
    • Define peer authentication (#140)
    • -
    • Require at least TLS 1.3 (#138) +
    • Require at least TLS 1.3 (#138)
    • -
    • Define transport parameters as a TLS extension (#122) +
    • Define transport parameters as a TLS extension (#122)
    • -
    • Define handling for protected packets before the handshake completes (#39) +
    • Define handling for protected packets before the handshake completes (#39)
    • -
    • Decouple QUIC version and ALPN (#12) +
    • Decouple QUIC version and ALPN (#12)
    • -
    +

    @@ -3545,15 +3545,15 @@

    • Changed bit used to signal key phase
    • -
    • Updated key phase markings during the handshake +
    • Updated key phase markings during the handshake
    • -
    • Added TLS interface requirements section +
    • Added TLS interface requirements section
    • -
    • Moved to use of TLS exporters for key derivation +
    • Moved to use of TLS exporters for key derivation
    • -
    • Moved TLS error code definitions into this document +
    • Moved TLS error code definitions into this document
    • -
    +

    @@ -3564,11 +3564,11 @@

    • Adopted as base for draft-ietf-quic-tls
    • -
    • Updated authors/editors list +
    • Updated authors/editors list
    • -
    • Added status note +
    • Added status note
    • -
    +

    diff --git a/ecn-alg/draft-ietf-quic-tls.txt b/ecn-alg/draft-ietf-quic-tls.txt index e6b654f9c6..c1f328b16b 100644 --- a/ecn-alg/draft-ietf-quic-tls.txt +++ b/ecn-alg/draft-ietf-quic-tls.txt @@ -5,8 +5,8 @@ QUIC M. Thomson, Ed. Internet-Draft Mozilla Intended status: Standards Track S. Turner, Ed. -Expires: 10 July 2020 sn3rd - 7 January 2020 +Expires: 11 July 2020 sn3rd + 8 January 2020 Using TLS to Secure QUIC @@ -44,7 +44,7 @@ Status of This Memo time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." - This Internet-Draft will expire on 10 July 2020. + This Internet-Draft will expire on 11 July 2020. Copyright Notice @@ -53,7 +53,7 @@ Copyright Notice -Thomson & Turner Expires 10 July 2020 [Page 1] +Thomson & Turner Expires 11 July 2020 [Page 1] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -109,7 +109,7 @@ Table of Contents -Thomson & Turner Expires 10 July 2020 [Page 2] +Thomson & Turner Expires 11 July 2020 [Page 2] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -165,7 +165,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 3] +Thomson & Turner Expires 11 July 2020 [Page 3] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -221,7 +221,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 4] +Thomson & Turner Expires 11 July 2020 [Page 4] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -277,7 +277,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 5] +Thomson & Turner Expires 11 July 2020 [Page 5] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -333,7 +333,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 6] +Thomson & Turner Expires 11 July 2020 [Page 6] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -389,7 +389,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 7] +Thomson & Turner Expires 11 July 2020 [Page 7] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -445,7 +445,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 8] +Thomson & Turner Expires 11 July 2020 [Page 8] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -501,7 +501,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 9] +Thomson & Turner Expires 11 July 2020 [Page 9] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -557,7 +557,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 10] +Thomson & Turner Expires 11 July 2020 [Page 10] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -613,7 +613,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 11] +Thomson & Turner Expires 11 July 2020 [Page 11] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -669,7 +669,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 12] +Thomson & Turner Expires 11 July 2020 [Page 12] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -725,7 +725,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 13] +Thomson & Turner Expires 11 July 2020 [Page 13] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -781,7 +781,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 14] +Thomson & Turner Expires 11 July 2020 [Page 14] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -837,7 +837,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 15] +Thomson & Turner Expires 11 July 2020 [Page 15] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -893,7 +893,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 16] +Thomson & Turner Expires 11 July 2020 [Page 16] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -949,7 +949,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 17] +Thomson & Turner Expires 11 July 2020 [Page 17] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -1005,7 +1005,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 18] +Thomson & Turner Expires 11 July 2020 [Page 18] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -1061,7 +1061,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 19] +Thomson & Turner Expires 11 July 2020 [Page 19] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -1117,7 +1117,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 20] +Thomson & Turner Expires 11 July 2020 [Page 20] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -1173,7 +1173,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 21] +Thomson & Turner Expires 11 July 2020 [Page 21] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -1229,7 +1229,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 22] +Thomson & Turner Expires 11 July 2020 [Page 22] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -1285,7 +1285,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 23] +Thomson & Turner Expires 11 July 2020 [Page 23] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -1341,7 +1341,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 24] +Thomson & Turner Expires 11 July 2020 [Page 24] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -1397,7 +1397,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 25] +Thomson & Turner Expires 11 July 2020 [Page 25] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -1453,7 +1453,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 26] +Thomson & Turner Expires 11 July 2020 [Page 26] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -1509,7 +1509,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 27] +Thomson & Turner Expires 11 July 2020 [Page 27] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -1565,7 +1565,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 28] +Thomson & Turner Expires 11 July 2020 [Page 28] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -1621,7 +1621,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 29] +Thomson & Turner Expires 11 July 2020 [Page 29] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -1677,7 +1677,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 30] +Thomson & Turner Expires 11 July 2020 [Page 30] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -1733,7 +1733,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 31] +Thomson & Turner Expires 11 July 2020 [Page 31] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -1789,7 +1789,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 32] +Thomson & Turner Expires 11 July 2020 [Page 32] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -1845,7 +1845,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 33] +Thomson & Turner Expires 11 July 2020 [Page 33] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -1901,7 +1901,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 34] +Thomson & Turner Expires 11 July 2020 [Page 34] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -1957,7 +1957,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 35] +Thomson & Turner Expires 11 July 2020 [Page 35] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -2013,7 +2013,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 36] +Thomson & Turner Expires 11 July 2020 [Page 36] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -2069,7 +2069,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 37] +Thomson & Turner Expires 11 July 2020 [Page 37] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -2125,7 +2125,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 38] +Thomson & Turner Expires 11 July 2020 [Page 38] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -2181,7 +2181,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 39] +Thomson & Turner Expires 11 July 2020 [Page 39] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -2207,14 +2207,14 @@ Internet-Draft Using TLS to Secure QUIC January 2020 [QUIC-RECOVERY] Iyengar, J., Ed. and I. Swett, Ed., "QUIC Loss Detection and Congestion Control", Work in Progress, Internet-Draft, - draft-ietf-quic-recovery-latest, 7 January 2020, + draft-ietf-quic-recovery-latest, 8 January 2020, . [QUIC-TRANSPORT] Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based Multiplexed and Secure Transport", Work in Progress, - Internet-Draft, draft-ietf-quic-transport-latest, 7 + Internet-Draft, draft-ietf-quic-transport-latest, 8 January 2020, . @@ -2237,7 +2237,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 40] +Thomson & Turner Expires 11 July 2020 [Page 40] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -2273,7 +2273,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 [QUIC-HTTP] Bishop, M., Ed., "Hypertext Transfer Protocol (HTTP) over QUIC", Work in Progress, Internet-Draft, draft-ietf-quic- - http-latest, 7 January 2020, + http-latest, 8 January 2020, . [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, @@ -2293,7 +2293,7 @@ Internet-Draft Using TLS to Secure QUIC January 2020 -Thomson & Turner Expires 10 July 2020 [Page 41] +Thomson & Turner Expires 11 July 2020 [Page 41] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -2349,7 +2349,7 @@ A.1. Keys -Thomson & Turner Expires 10 July 2020 [Page 42] +Thomson & Turner Expires 11 July 2020 [Page 42] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -2405,7 +2405,7 @@ A.2. Client Initial -Thomson & Turner Expires 10 July 2020 [Page 43] +Thomson & Turner Expires 11 July 2020 [Page 43] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -2461,7 +2461,7 @@ A.3. Server Initial -Thomson & Turner Expires 10 July 2020 [Page 44] +Thomson & Turner Expires 11 July 2020 [Page 44] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -2517,7 +2517,7 @@ B.1. Since draft-ietf-quic-tls-23 -Thomson & Turner Expires 10 July 2020 [Page 45] +Thomson & Turner Expires 11 July 2020 [Page 45] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -2573,7 +2573,7 @@ B.7. Since draft-ietf-quic-tls-14 -Thomson & Turner Expires 10 July 2020 [Page 46] +Thomson & Turner Expires 11 July 2020 [Page 46] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -2629,7 +2629,7 @@ B.14. Since draft-ietf-quic-tls-07 -Thomson & Turner Expires 10 July 2020 [Page 47] +Thomson & Turner Expires 11 July 2020 [Page 47] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -2685,7 +2685,7 @@ B.20. Since draft-ietf-quic-tls-00 -Thomson & Turner Expires 10 July 2020 [Page 48] +Thomson & Turner Expires 11 July 2020 [Page 48] Internet-Draft Using TLS to Secure QUIC January 2020 @@ -2741,4 +2741,4 @@ Authors' Addresses -Thomson & Turner Expires 10 July 2020 [Page 49] +Thomson & Turner Expires 11 July 2020 [Page 49] diff --git a/ecn-alg/draft-ietf-quic-transport.html b/ecn-alg/draft-ietf-quic-transport.html index 48d6d734c0..48c09d7a7b 100644 --- a/ecn-alg/draft-ietf-quic-transport.html +++ b/ecn-alg/draft-ietf-quic-transport.html @@ -12,7 +12,7 @@ documents describe QUIC's loss detection and congestion control and the use of TLS for key negotiation. " name="description"> - + @@ -821,7 +821,7 @@ Iyengar & Thomson -Expires 10 July 2020 +Expires 11 July 2020 [Page] @@ -834,12 +834,12 @@
    draft-ietf-quic-transport-latest
    Published:
    - +
    Intended Status:
    Standards Track
    Expires:
    -
    +
    Authors:
    @@ -892,7 +892,7 @@

    time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."

    - This Internet-Draft will expire on 10 July 2020.

    + This Internet-Draft will expire on 11 July 2020.

    @@ -1594,15 +1597,15 @@

    • Stream multiplexing
    • -
    • Stream and connection-level flow control +
    • Stream and connection-level flow control
    • -
    • Low-latency connection establishment +
    • Low-latency connection establishment
    • -
    • Connection migration and resilience to NAT rebinding +
    • Connection migration and resilience to NAT rebinding
    • -
    • Authenticated and encrypted header and payload +
    • Authenticated and encrypted header and payload
    • -
    +

    QUIC uses UDP as a substrate to avoid requiring changes to legacy client operating systems and middleboxes. QUIC authenticates all of its headers and encrypts most of the data it exchanges, including its signaling, to avoid @@ -1620,81 +1623,81 @@

  • Section 2 describes core concepts related to streams,
  • -
  • +
  • Section 3 provides a reference model for stream states, and
  • -
  • +
  • Section 4 outlines the operation of flow control.
  • - + -
  • +
  • Connections are the context in which QUIC endpoints communicate.

    • Section 5 describes core concepts related to connections,
    • -
    • +
    • Section 6 describes version negotiation,
    • -
    • +
    • Section 7 details the process for establishing connections,
    • -
    • +
    • Section 8 specifies critical denial of service mitigation mechanisms,
    • -
    • +
    • Section 9 describes how endpoints migrate a connection to a new network path,
    • -
    • +
    • Section 10 lists the options for terminating an open connection, and
    • -
    • +
    • Section 11 provides general guidance for error handling.
    • -
    +
  • -
  • +
  • Packets and frames are the basic unit used by QUIC to communicate.

    • Section 12 describes concepts related to packets and frames,
    • -
    • +
    • Section 13 defines models for the transmission, retransmission, and acknowledgement of data, and
    • -
    • +
    • Section 14 specifies rules for managing the size of packets.
    • -
    +
  • -
  • +
  • Finally, encoding details of QUIC protocol elements are described in:

    +
  • - +

    Accompanying documents describe QUIC's loss detection and congestion control [QUIC-RECOVERY], and the use of TLS for key negotiation [QUIC-TLS].

    This document defines QUIC version 1, which conforms to the protocol invariants @@ -1713,53 +1716,53 @@

    Commonly used terms in the document are described below.

    QUIC:
    -
    +
    The transport protocol described by this document. QUIC is a name, not an acronym.
    QUIC packet:
    -
    +
    A complete processable unit of QUIC that can be encapsulated in a UDP datagram. Multiple QUIC packets can be encapsulated in a single UDP datagram.
    Ack-eliciting Packet:
    -
    +
    A QUIC packet that contains frames other than ACK, PADDING, and CONNECTION_CLOSE. These cause a recipient to send an acknowledgment (see Section 13.2.1).
    Endpoint:
    -
    +
    An entity that can participate in a QUIC connection by generating, receiving, and processing QUIC packets. There are only two types of endpoint in QUIC: client and server.
    Client:
    -
    +
    The endpoint initiating a QUIC connection.
    Server:
    -
    +
    The endpoint accepting incoming QUIC connections.
    Address:
    -
    +
    When used without qualification, the tuple of IP version, IP address, UDP protocol, and UDP port number that represents one end of a network path.
    Connection ID:
    -
    +
    An opaque identifier that is used to identify a QUIC connection at an endpoint. Each endpoint sets a value for its peer to include in packets sent towards the endpoint.
    Stream:
    -
    +
    A unidirectional or bidirectional channel of ordered bytes within a QUIC connection. A QUIC connection can carry multiple simultaneous streams.
    Application:
    -
    +
    An entity that uses QUIC to send and receive data.
    @@ -1774,23 +1777,23 @@

    3.1 of [RFC2360], with the following additional conventions:

    [x]:
    -
    +
    Indicates that x is optional
    x (A):
    -
    +
    Indicates that x is A bits long
    x (A/B/C) ...:
    -
    +
    Indicates that x is one of A, B, or C bits long
    x (i) ...:
    -
    +
    Indicates that x uses the variable-length encoding in Section 16
    x (*) ...:
    -
    +
    Indicates that x is variable-length
    @@ -1937,21 +1940,21 @@

    (Section 4.1) has successfully been reserved to send the written data; -
  • end the stream (clean termination), resulting in a STREAM frame +
  • end the stream (clean termination), resulting in a STREAM frame (Section 19.8) with the FIN bit set; and
  • -
  • reset the stream (abrupt termination), resulting in a RESET_STREAM frame +
  • reset the stream (abrupt termination), resulting in a RESET_STREAM frame (Section 19.4), if the stream was not already in a terminal state.
  • - +

    On the receiving part of a stream, application protocols need to be able to:

    • read data; and
    • -
    • abort reading of the stream and request closure, possibly resulting in a +
    • abort reading of the stream and request closure, possibly resulting in a STOP_SENDING frame (Section 19.5).
    • -
    +

    Applications also need to be informed of state changes on streams, including when the peer has opened or reset a stream, when a peer aborts reading on a stream, when new data is available, and when data can or cannot be written to @@ -1978,7 +1981,7 @@

    An endpoint MUST open streams of the same type in increasing order of stream ID.

    Note:
    -
    +
    These states are largely informative. This document uses stream states to describe rules for when and how different types of frames can be sent and the reactions that are expected when different types of frames are received. @@ -2297,7 +2300,7 @@

    Note (*1):
    -
    +
    A stream is considered "idle" if it has not yet been created, or if the receiving part of the stream is in the "Recv" state without yet having received any frames. @@ -2383,11 +2386,11 @@

    receive buffer for a connection by limiting the amount of data that can be sent on any stream. -
  • Connection flow control, which prevents senders from exceeding a receiver's +
  • Connection flow control, which prevents senders from exceeding a receiver's buffer capacity for the connection, by limiting the total bytes of stream data sent in STREAM frames on all streams.
  • - +

    A receiver sets initial credits for all streams by sending transport parameters during the handshake (Section 7.3). A receiver sends MAX_STREAM_DATA (Section 19.10) or MAX_DATA (Section 19.9) @@ -2801,41 +2804,41 @@

    • open a connection, which begins the exchange described in Section 7;
    • -
    • enable 0-RTT when available; and +
    • enable 0-RTT when available; and
    • -
    • be informed when 0-RTT has been accepted or rejected by a server. +
    • be informed when 0-RTT has been accepted or rejected by a server.
    • -
    +

    When implementing the server role, applications need to be able to:

    • listen for incoming connections, which prepares for the exchange described in Section 7;
    • -
    • if Early Data is supported, embed application-controlled data in the TLS +
    • if Early Data is supported, embed application-controlled data in the TLS resumption ticket sent to the client; and
    • -
    • if Early Data is supported, retrieve application-controlled data from the +
    • if Early Data is supported, retrieve application-controlled data from the client's resumption ticket and enable rejecting Early Data based on that information.
    • -
    +

    In either role, applications need to be able to:

    • configure minimum values for the initial number of permitted streams of each type, as communicated in the transport parameters (Section 7.3);
    • -
    • control resource allocation of various types, including flow control and the +
    • control resource allocation of various types, including flow control and the number of permitted streams of each type;
    • -
    • identify whether the handshake has completed successfully or is still ongoing +
    • identify whether the handshake has completed successfully or is still ongoing
    • -
    • keep a connection from silently closing, either by generating PING frames +
    • keep a connection from silently closing, either by generating PING frames (Section 19.2) or by requesting that the transport send additional frames before the idle timeout expires (Section 10.2); and
    • -
    • immediately close (Section 10.3) the connection. +
    • immediately close (Section 10.3) the connection.
    • -
    +

    @@ -2951,25 +2954,25 @@

    • a server is always authenticated,
    • -
    • a client is optionally authenticated, +
    • a client is optionally authenticated,
    • -
    • every connection produces distinct and unrelated keys, +
    • every connection produces distinct and unrelated keys,
    • -
    • keying material is usable for packet protection for both 0-RTT and 1-RTT +
    • keying material is usable for packet protection for both 0-RTT and 1-RTT packets, and
    • -
    • 1-RTT keys have forward secrecy +
    • 1-RTT keys have forward secrecy
    • -
    + -
  • authenticated values for transport parameters of both endpoints, and +
  • authenticated values for transport parameters of both endpoints, and confidentiality protection for server transport parameters (see Section 7.3)
  • -
  • authenticated negotiation of an application protocol (TLS uses ALPN +
  • authenticated negotiation of an application protocol (TLS uses ALPN [RFC7301] for this purpose)
  • - +

    An endpoint can verify support for Explicit Congestion Notification (ECN) in the first packets it sends, as described in Section 13.4.2.

    The CRYPTO frame can be sent in different packet number spaces. The sequence @@ -3159,17 +3162,17 @@

    • initial_max_data
    • -
    • initial_max_stream_data_bidi_local +
    • initial_max_stream_data_bidi_local
    • -
    • initial_max_stream_data_bidi_remote +
    • initial_max_stream_data_bidi_remote
    • -
    • initial_max_stream_data_uni +
    • initial_max_stream_data_uni
    • -
    • initial_max_streams_bidi +
    • initial_max_streams_bidi
    • -
    • initial_max_streams_uni +
    • initial_max_streams_uni
    • -
    +

    Omitting or setting a zero value for certain transport parameters can result in 0-RTT data being enabled, but not usable. The applicable subset of transport parameters that permit sending of application data SHOULD be set to non-zero @@ -3422,7 +3425,7 @@

    handshake to proceed.

    Note:
    -
    +
    The rationale for treating the client as unvalidated rather than discarding the packet is that the client might have received the token in a previous connection using the NEW_TOKEN frame, and if the server has lost state, it @@ -3977,11 +3980,11 @@

    +

    An endpoint MAY discard connection state if it does not have a validated path on which it can send packets (see Section 8.2).

    @@ -4090,7 +4093,7 @@

    endpoints MAY send the exact same packet.

    Note:
    -
    +
    Allowing retransmission of a closing packet contradicts other advice in this document that recommends the creation of new packet numbers for every packet. Sending new packet numbers is primarily of advantage to loss recovery and @@ -4237,12 +4240,12 @@

    case, endpoints will need to rely on other methods - such as timers - to detect that the connection has failed. -
  • The randomly generated connection ID can be used by entities other than the +
  • The randomly generated connection ID can be used by entities other than the peer to identify this as a potential stateless reset. An endpoint that occasionally uses different connection IDs might introduce some uncertainty about this.
  • - +

    This stateless reset design is specific to QUIC version 1. An endpoint that supports multiple versions of QUIC needs to generate a stateless reset that will be accepted by peers that support any version that the endpoint might support @@ -4528,13 +4531,13 @@

    • Initial space: All Initial packets (Section 17.2.2) are in this space.
    • -
    • Handshake space: All Handshake packets (Section 17.2.4) are in this +
    • Handshake space: All Handshake packets (Section 17.2.4) are in this space.
    • -
    • Application data space: All 0-RTT and 1-RTT encrypted packets +
    • Application data space: All 0-RTT and 1-RTT encrypted packets (Section 12.1) are in this space.
    • -
    +

    As described in [QUIC-TLS], each packet type uses different protection keys.

    Conceptually, a packet number space is the context in which a packet can be processed and acknowledged. Initial packets can only be sent with Initial @@ -4793,23 +4796,23 @@

    frame type can appear in, indicated as up to four characters indicating:

    I:
    -
    +
    Initial (Section 17.2.2)
    H:
    -
    +
    Handshake (Section 17.2.4)
    0:
    -
    +
    0-RTT (Section 17.2.3)
    1:
    -
    +
    1-RTT (Section 17.3)
    *:
    -
    +
    A CONNECTION_CLOSE frame of type 0x1c can appear in Initial, Handshake, and 1-RTT packets, whereas a CONNECTION_CLOSE of type 0x1d can only appear in a 1-RTT packet. @@ -5069,51 +5072,51 @@

    frames for Initial and Handshake packets is discarded when keys for the corresponding encryption level are discarded. -
  • Application data sent in STREAM frames is retransmitted in new STREAM frames +
  • Application data sent in STREAM frames is retransmitted in new STREAM frames unless the endpoint has sent a RESET_STREAM for that stream. Once an endpoint sends a RESET_STREAM frame, no further STREAM frames are needed.
  • -
  • ACK frames carry the most recent set of acknowledgements and the Ack Delay +
  • ACK frames carry the most recent set of acknowledgements and the Ack Delay from the largest acknowledged packet, as described in Section 13.2.1. Delaying the transmission of packets containing ACK frames or sending old ACK frames can cause the peer to generate an inflated RTT sample or unnecessarily disable ECN.
  • -
  • Cancellation of stream transmission, as carried in a RESET_STREAM frame, is +
  • Cancellation of stream transmission, as carried in a RESET_STREAM frame, is sent until acknowledged or until all stream data is acknowledged by the peer (that is, either the "Reset Recvd" or "Data Recvd" state is reached on the sending part of the stream). The content of a RESET_STREAM frame MUST NOT change when it is sent again.
  • -
  • Similarly, a request to cancel stream transmission, as encoded in a +
  • Similarly, a request to cancel stream transmission, as encoded in a STOP_SENDING frame, is sent until the receiving part of the stream enters either a "Data Recvd" or "Reset Recvd" state; see Section 3.5.
  • -
  • Connection close signals, including packets that contain CONNECTION_CLOSE +
  • Connection close signals, including packets that contain CONNECTION_CLOSE frames, are not sent again when packet loss is detected, but as described in Section 10.
  • -
  • The current connection maximum data is sent in MAX_DATA frames. An updated +
  • The current connection maximum data is sent in MAX_DATA frames. An updated value is sent in a MAX_DATA frame if the packet containing the most recently sent MAX_DATA frame is declared lost, or when the endpoint decides to update the limit. Care is necessary to avoid sending this frame too often as the limit can increase frequently and cause an unnecessarily large number of MAX_DATA frames to be sent.
  • -
  • The current maximum stream data offset is sent in MAX_STREAM_DATA frames. +
  • The current maximum stream data offset is sent in MAX_STREAM_DATA frames. Like MAX_DATA, an updated value is sent when the packet containing the most recent MAX_STREAM_DATA frame for a stream is lost or when the limit is updated, with care taken to prevent the frame from being sent too often. An endpoint SHOULD stop sending MAX_STREAM_DATA frames when the receiving part of the stream enters a "Size Known" state.
  • -
  • The limit on streams of a given type is sent in MAX_STREAMS frames. Like +
  • The limit on streams of a given type is sent in MAX_STREAMS frames. Like MAX_DATA, an updated value is sent when a packet containing the most recent MAX_STREAMS for a stream type frame is declared lost or when the limit is updated, with care taken to prevent the frame from being sent too often.
  • -
  • Blocked signals are carried in DATA_BLOCKED, STREAM_DATA_BLOCKED, and +
  • Blocked signals are carried in DATA_BLOCKED, STREAM_DATA_BLOCKED, and STREAMS_BLOCKED frames. DATA_BLOCKED frames have connection scope, STREAM_DATA_BLOCKED frames have stream scope, and STREAMS_BLOCKED frames are scoped to a specific stream type. New frames are sent if packets containing @@ -5121,29 +5124,29 @@

    blocked on the corresponding limit. These frames always include the limit that is causing blocking at the time that they are transmitted.

  • -
  • A liveness or path validation check using PATH_CHALLENGE frames is sent +
  • A liveness or path validation check using PATH_CHALLENGE frames is sent periodically until a matching PATH_RESPONSE frame is received or until there is no remaining need for liveness or path validation checking. PATH_CHALLENGE frames include a different payload each time they are sent.
  • -
  • Responses to path validation using PATH_RESPONSE frames are sent just once. +
  • Responses to path validation using PATH_RESPONSE frames are sent just once. The peer is expected to send more PATH_CHALLENGE frames as necessary to evoke additional PATH_RESPONSE frames.
  • -
  • New connection IDs are sent in NEW_CONNECTION_ID frames and retransmitted if +
  • New connection IDs are sent in NEW_CONNECTION_ID frames and retransmitted if the packet containing them is lost. Retransmissions of this frame carry the same sequence number value. Likewise, retired connection IDs are sent in RETIRE_CONNECTION_ID frames and retransmitted if the packet containing them is lost.
  • -
  • NEW_TOKEN frames are retransmitted if the packet containing them is lost. No +
  • NEW_TOKEN frames are retransmitted if the packet containing them is lost. No special support is made for detecting reordered and duplicated NEW_TOKEN frames other than a direct comparison of the frame contents.
  • -
  • PING and PADDING frames contain no information, so lost PING or PADDING frames +
  • PING and PADDING frames contain no information, so lost PING or PADDING frames do not require repair.
  • - +

    Endpoints SHOULD prioritize retransmission of data over sending new data, unless priorities specified by the application indicate otherwise (see Section 2.3).

    @@ -5214,7 +5217,8 @@

    errors are detected.

    Endpoints validate ECN for packets sent on each network path independently. An endpoint thus validates ECN on new connection establishment, when switching to a -new server preferred address, and on active connection migration to a new path.

    +new server preferred address, and on active connection migration to a new path. +Appendix B describes one possible algorithm for testing paths for ECN support.

    Even if an endpoint does not use ECN markings on packets it transmits, the endpoint MUST provide feedback about ECN markings received from the peer if they are accessible. Failing to report ECN counts will cause the peer to disable ECN @@ -5230,10 +5234,10 @@

  • Set the ECT(0) codepoint in the IP header of early outgoing packets sent on a new path to the peer [RFC8311].
  • -
  • If all packets that were sent with the ECT(0) codepoint are eventually deemed +
  • If all packets that were sent with the ECT(0) codepoint are eventually deemed lost [QUIC-RECOVERY], validation is deemed to have failed.
  • - +

    To reduce the chances of misinterpreting congestive loss as packets dropped by a faulty network element, an endpoint could set the ECT(0) codepoint in the first ten outgoing packets on a path, or for a period of three RTTs, whichever occurs @@ -5258,18 +5262,18 @@

    element that zeroes out ECN bits and a peer that is unable to access ECN markings, since the peer could respond without ECN feedback in these cases. -
  • For validation to succeed, the total increase in ECT(0), ECT(1), and CE counts +
  • For validation to succeed, the total increase in ECT(0), ECT(1), and CE counts MUST be no smaller than the total number of QUIC packets sent with an ECT codepoint that are newly acknowledged in this ACK frame. This step detects any network remarking from ECT(0), ECT(1), or CE codepoints to Not-ECT.
  • -
  • Any increase in either ECT(0) or ECT(1) counts, plus any increase in the CE +
  • Any increase in either ECT(0) or ECT(1) counts, plus any increase in the CE count, MUST be no smaller than the number of packets sent with the corresponding ECT codepoint that are newly acknowledged in this ACK frame. This step detects any erroneous network remarking from ECT(0) to ECT(1) (or vice versa).
  • - +

    Processing ECN counts out of order can result in validation failure. An endpoint SHOULD NOT perform this validation if this ACK frame does not advance the largest packet number acknowledged in this connection.

    @@ -5296,45 +5300,6 @@
    later time in the connection.

    -
    -
    -
    -13.4.2.4. Exemplary ECN Validation Algorithm -
    -

    Each time that an endpoint commences sending on a new network path, it -determines whether the path supports ECN. If the path supports ECN, the goal is -to use ECN. Endpoints might also periodically reassess a path that was -determined not support ECN.

    -

    This section describes one method for testing new paths. This algorithm is -intended to show how a path might be tested for ECN support. Endpoints can -implement different methods.

    -

    The path has an ECN state that is one of "testing", "unknown", "failed", or -"capable". In the "testing" and "capable" states the endpoint sends packets -with an ECT(0) marking; otherwise, the endpoint sends unmarked packets.

    -

    To start testing a path, the ECN state is set to "testing" and existing ECN -counts are remembered as a baseline. It should not be necessary to disregard -the effect of packets sent prior to starting testing, though it is necessary for -a sender to remember what markings were used for every packet that is -acknowledged; see Section 13.4.2.2.

    -

    The testing period runs for a number of packets or round trip times as -determined by the endpoint. During this time, packets sent are marked with -ECT(0). The goal is to limit the duration of the testing period, but to ensure -that enough marked packets are sent that it is likely that ECN counts will -provide a clear indication of how the path treats marked packets.

    -

    After the testing period ends, the ECN state for the path becomes "unknown". -From the "unknown" state, successful validation of the ECN counts an ACK frame -(see Section 13.4.2.2) causes the ECN state for the path to become "capable", unless -no marked packet has been acknowledged.

    -

    At any point, if validation of ECN counts fails, the ECN state becomes "failed". -An endpoint can also mark the ECN state for a path as "failed" if all marked -packets are declared lost.

    -

    Following this algorithm ensures that ECN is rarely disabled for paths that -properly support ECN. Any path that incorrectly modifies markings will cause -ECN to be disabled. For those rare cases where marked packets are discarded by -the path, the short duration of the testing period limits the number of losses -incurred.

    -
    -

    @@ -5429,10 +5394,10 @@

    of packets, so that most invalid ICMP messages arrive when there are no DF packets outstanding, and can therefore be identified as spurious. -
  • An endpoint could store additional information from the IP or UDP headers to +
  • An endpoint could store additional information from the IP or UDP headers to use for validation (for example, the IP ID or UDP checksum).
  • - +

    The endpoint SHOULD ignore all ICMP messages that fail validation.

    An endpoint MUST NOT increase PMTU based on ICMP messages. Any reduction in the QUIC maximum packet size MAY be provisional until QUIC's loss detection @@ -5665,32 +5630,32 @@

    packet format. Packets that use the long header contain the following fields:

    Header Form:
    -
    +
    The most significant bit (0x80) of byte 0 (the first byte) is set to 1 for long headers.
    Fixed Bit:
    -
    +
    The next bit (0x40) of byte 0 is set to 1. Packets containing a zero value for this bit are not valid packets in this version and MUST be discarded.
    Long Packet Type (T):
    -
    +
    The next two bits (those with a mask of 0x30) of byte 0 contain a packet type. Packet types are listed in Table 5.
    Type-Specific Bits (X):
    -
    +
    The lower four bits (those with a mask of 0x0f) of byte 0 are type-specific.
    Version:
    -
    +
    The QUIC Version is a 32-bit field that follows the first byte. This field indicates which version of QUIC is in use and determines how the rest of the protocol fields are interpreted.
    DCID Len:
    -
    +
    The byte following the version contains the length in bytes of the Destination Connection ID field that follows it. This length is encoded as an 8-bit unsigned integer. In QUIC version 1, this value MUST NOT exceed 20. @@ -5700,13 +5665,13 @@

    packet.

    Destination Connection ID:
    -
    +
    The Destination Connection ID field follows the DCID Len and is between 0 and 20 bytes in length. Section 7.2 describes the use of this field in more detail.
    SCID Len:
    -
    +
    The byte following the Destination Connection ID contains the length in bytes of the Source Connection ID field that follows it. This length is encoded as a 8-bit unsigned integer. In QUIC version 1, this value MUST NOT exceed 20 @@ -5716,7 +5681,7 @@

    packet.

    Source Connection ID:
    -
    +
    The Source Connection ID field follows the SCID Len and is between 0 and 20 bytes in length. Section 7.2 describes the use of this field in more detail. @@ -5780,7 +5745,7 @@

    contain these additional fields:

    Reserved Bits (R):
    -
    +
    Two bits (those with a mask of 0x0c) of byte 0 are reserved across multiple packet types. These bits are protected using header protection (see Section 5.4 of [QUIC-TLS]). The value included prior to protection MUST be set to 0. @@ -5791,7 +5756,7 @@

    [QUIC-TLS]).

    Packet Number Length (P):
    -
    +
    In packet types which contain a Packet Number field, the least significant two bits (those with a mask of 0x03) of byte 0 contain the length of the packet number, encoded as an unsigned, two-bit integer that is one less than the @@ -5800,13 +5765,13 @@

    using header protection (see Section 5.4 of [QUIC-TLS]).

    Length:
    -
    +
    The length of the remainder of the packet (that is, the Packet Number and Payload fields) in bytes, encoded as a variable-length integer (Section 16).
    Packet Number:
    -
    +
    The packet number field is 1 to 4 bytes long. The packet number has confidentiality protection separate from packet protection, as described in Section 5.4 of [QUIC-TLS]. The length of the packet number field is encoded @@ -5933,7 +5898,7 @@

    field specific to the Initial packet.

    Token Length:
    -
    +
    A variable-length integer specifying the length of the Token field, in bytes. This value is zero if no token is present. Initial packets sent by the server MUST set the Token Length field to zero; clients that receive an Initial @@ -5941,12 +5906,12 @@

    generate a connection error of type PROTOCOL_VIOLATION.

    Token:
    -
    +
    The value of the token that was previously provided in a Retry packet or NEW_TOKEN frame.
    Payload:
    -
    +
    The payload of the packet.
    @@ -6158,7 +6123,7 @@

    addition to the long header, it contains these additional fields:

    ODCID Len:
    -
    +
    The ODCID Len contains the length in bytes of the Original Destination Connection ID field that follows it. This length is encoded as a 8-bit unsigned integer. In QUIC version 1, this value MUST NOT exceed 20 bytes. @@ -6166,13 +6131,13 @@

    drop the packet.

    Original Destination Connection ID:
    -
    +
    The Original Destination Connection ID contains the value of the Destination Connection ID from the Initial packet that this Retry is in response to. The length of this field is given in ODCID Len.
    Retry Token:
    -
    +
    An opaque token that the server can use to validate the client's address.
    @@ -6267,21 +6232,21 @@

    Packets that use the short header contain the following fields:

    Header Form:
    -
    +
    The most significant bit (0x80) of byte 0 is set to 0 for the short header.
    Fixed Bit:
    -
    +
    The next bit (0x40) of byte 0 is set to 1. Packets containing a zero value for this bit are not valid packets in this version and MUST be discarded.
    Spin Bit (S):
    -
    +
    The third most significant bit (0x20) of byte 0 is the latency spin bit, set as described in Section 17.3.1.
    Reserved Bits (R):
    -
    +
    The next two bits (those with a mask of 0x18) of byte 0 are reserved. These bits are protected using header protection (see Section 5.4 of [QUIC-TLS]). The value included prior to protection MUST be set to 0. An @@ -6292,14 +6257,14 @@

    [QUIC-TLS]).

    Key Phase (K):
    -
    +
    The next bit (0x04) of byte 0 indicates the key phase, which allows a recipient of a packet to identify the packet protection keys that are used to protect the packet. See [QUIC-TLS] for details. This bit is protected using header protection (see Section 5.4 of [QUIC-TLS]).
    Packet Number Length (P):
    -
    +
    The least significant two bits (those with a mask of 0x03) of byte 0 contain the length of the packet number, encoded as an unsigned, two-bit integer that is one less than the length of the packet number field in bytes. That is, the @@ -6307,19 +6272,19 @@

    bits are protected using header protection (see Section 5.4 of [QUIC-TLS]).

    Destination Connection ID:
    -
    +
    The Destination Connection ID is a connection ID that is chosen by the intended recipient of the packet. See Section 5.1 for more details.
    Packet Number:
    -
    +
    The packet number field is 1 to 4 bytes long. The packet number has confidentiality protection separate from packet protection, as described in Section 5.4 of [QUIC-TLS]. The length of the packet number field is encoded in Packet Number Length field. See Section 17.1 for details.
    Protected Payload:
    -
    +
    Packets with a short header always include a 1-RTT protected payload.
    @@ -6459,7 +6424,7 @@

    The following transport parameters are defined:

    original_connection_id (0x0000):
    -
    +
    The value of the Destination Connection ID field from the first Initial packet sent by the client. This transport parameter is only sent by a server. This is the same value sent in the "Original Destination Connection ID" field of a @@ -6467,13 +6432,13 @@

    original_connection_id transport parameter if it sent a Retry packet.

    idle_timeout (0x0001):
    -
    +
    The idle timeout is a value in milliseconds that is encoded as an integer; see (Section 10.2). If this parameter is absent or zero then the idle timeout is disabled.
    stateless_reset_token (0x0002):
    -
    +
    A stateless reset token is used in verifying a stateless reset; see Section 10.4. This parameter is a sequence of 16 bytes. This transport parameter MUST NOT be sent by a client, but MAY be sent by a server. @@ -6482,7 +6447,7 @@

    handshake.

    max_packet_size (0x0003):
    -
    +
    The maximum packet size parameter is an integer value that limits the size of packets that the endpoint is willing to receive. This indicates that packets larger than this limit will be dropped. The default for this parameter is the @@ -6490,14 +6455,14 @@

    limit only applies to protected packets (Section 12.1).

    initial_max_data (0x0004):
    -
    +
    The initial maximum data parameter is an integer value that contains the initial value for the maximum amount of data that can be sent on the connection. This is equivalent to sending a MAX_DATA (Section 19.9) for the connection immediately after completing the handshake.
    initial_max_stream_data_bidi_local (0x0005):
    -
    +
    This parameter is an integer value specifying the initial flow control limit for locally-initiated bidirectional streams. This limit applies to newly created bidirectional streams opened by the endpoint that sends the transport @@ -6507,7 +6472,7 @@

    0x1.

    initial_max_stream_data_bidi_remote (0x0006):
    -
    +
    This parameter is an integer value specifying the initial flow control limit for peer-initiated bidirectional streams. This limit applies to newly created bidirectional streams opened by the endpoint that receives the transport @@ -6517,7 +6482,7 @@

    0x0.

    initial_max_stream_data_uni (0x0007):
    -
    +
    This parameter is an integer value specifying the initial flow control limit for unidirectional streams. This limit applies to newly created unidirectional streams opened by the endpoint that receives the transport @@ -6527,7 +6492,7 @@

    0x2.

    initial_max_streams_bidi (0x0008):
    -
    +
    The initial maximum bidirectional streams parameter is an integer value that contains the initial maximum number of bidirectional streams the peer may initiate. If this parameter is absent or zero, the peer cannot open @@ -6536,7 +6501,7 @@

    the corresponding type with the same value.

    initial_max_streams_uni (0x0009):
    -
    +
    The initial maximum unidirectional streams parameter is an integer value that contains the initial maximum number of unidirectional streams the peer may initiate. If this parameter is absent or zero, the peer cannot open @@ -6545,14 +6510,14 @@

    the corresponding type with the same value.

    ack_delay_exponent (0x000a):
    -
    +
    The ACK delay exponent is an integer 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 value of 3 is assumed (indicating a multiplier of 8). Values above 20 are invalid.
    max_ack_delay (0x000b):
    -
    +
    The maximum ACK delay is an integer value indicating the maximum amount of time in milliseconds by which the endpoint will delay sending acknowledgments. This value SHOULD include the receiver's expected @@ -6562,7 +6527,7 @@

    Values of 2^14 or greater are invalid.

    disable_active_migration (0x000c):
    -
    +
    The disable active migration transport parameter is included if the endpoint does not support active connection migration (Section 9). Peers of an endpoint that sets this transport parameter MUST NOT send any packets, @@ -6571,7 +6536,7 @@

    value.

    preferred_address (0x000d):
    -
    +
    The server's preferred address is used to effect a change in server address at the end of the handshake, as described in Section 9.6. The format of this transport parameter is shown in Figure 18. This @@ -6623,7 +6588,7 @@

    active_connection_id_limit (0x000e):
    -
    +
    The maximum number of connection IDs from the peer that an endpoint is willing to store. This value includes the connection ID received during the handshake, that received in the preferred_address transport parameter, and those received @@ -6745,14 +6710,14 @@

    ACK frames contain the following fields:

    Largest Acknowledged:
    -
    +
    A variable-length integer representing the largest packet number the peer is acknowledging; this is usually the largest packet number that the peer has received prior to generating the ACK frame. Unlike the packet number in the QUIC long or short header, the value in an ACK frame is not truncated.
    ACK Delay:
    -
    +
    A variable-length integer representing the time delta in microseconds between when this ACK was sent and when the largest acknowledged packet, as indicated in the Largest Acknowledged field, was received by this peer. The value of @@ -6764,12 +6729,12 @@

    for Initial and Handshake packets, a sender SHOULD send a value of 0.

    ACK Range Count:
    -
    +
    A variable-length integer specifying the number of Gap and ACK Range fields in the frame.
    First ACK Range:
    -
    +
    A variable-length integer indicating the number of contiguous packets preceding the Largest Acknowledged that are being acknowledged. The First ACK Range is encoded as an ACK Range (see Section 19.3.1) starting from the @@ -6778,12 +6743,12 @@

    Acknowledged.

    ACK Ranges:
    -
    +
    Contains additional ranges of packets which are alternately not acknowledged (Gap) and acknowledged (ACK Range); see Section 19.3.1.
    ECN Counts:
    -
    +
    The three ECN Counts; see Section 19.3.2.
    @@ -6827,13 +6792,13 @@

    The fields that form the ACK Ranges are:

    Gap (repeated):
    -
    +
    A variable-length integer indicating the number of contiguous unacknowledged packets preceding the packet number one lower than the smallest in the preceding ACK Range.
    ACK Range (repeated):
    -
    +
    A variable-length integer indicating the number of contiguous acknowledged packets preceding the largest packet number, as determined by the preceding Gap. @@ -6899,17 +6864,17 @@

    The three ECN Counts are:

    ECT(0) Count:
    -
    +
    A variable-length integer representing the total number of packets received with the ECT(0) codepoint in the packet number space of the ACK frame.
    ECT(1) Count:
    -
    +
    A variable-length integer representing the total number of packets received with the ECT(1) codepoint in the packet number space of the ACK frame.
    CE Count:
    -
    +
    A variable-length integer representing the total number of packets received with the CE codepoint in the packet number space of the ACK frame.
    @@ -6948,18 +6913,18 @@

    RESET_STREAM frames contain the following fields:

    Stream ID:
    -
    +
    A variable-length integer encoding of the Stream ID of the stream being terminated.
    Application Protocol Error Code:
    -
    +
    A variable-length integer containing the application protocol error code (see Section 20.1) which indicates why the stream is being closed.
    Final Size:
    -
    +
    A variable-length integer indicating the final size of the stream by the RESET_STREAM sender, in unit of bytes.
    @@ -6995,11 +6960,11 @@

    STOP_SENDING frames contain the following fields:

    Stream ID:
    -
    +
    A variable-length integer carrying the Stream ID of the stream being ignored.
    Application Error Code:
    -
    +
    A variable-length integer containing the application-specified reason the sender is ignoring the stream (see Section 20.1).
    @@ -7040,17 +7005,17 @@

    CRYPTO frames contain the following fields:

    Offset:
    -
    +
    A variable-length integer specifying the byte offset in the stream for the data in this CRYPTO frame.
    Length:
    -
    +
    A variable-length integer specifying the length of the Crypto Data field in this CRYPTO frame.
    Crypto Data:
    -
    +
    The cryptographic message data.
    @@ -7089,11 +7054,11 @@

    NEW_TOKEN frames contain the following fields:

    Token Length:
    -
    +
    A variable-length integer specifying the length of the token in bytes.
    Token:
    -
    +
    An opaque blob that the client may use with a future Initial packet. The token MUST NOT be empty. An endpoint MUST treat receipt of a NEW_TOKEN frame with an empty Token field as a connection error of type FRAME_ENCODING_ERROR. @@ -7123,16 +7088,16 @@

    (that is, the frame contains the first bytes of the stream, or the end of a stream that includes no data). -
  • The LEN bit (0x02) in the frame type is set to indicate that there is a Length +
  • The LEN bit (0x02) in the frame type is set to indicate that there is a Length field present. If this bit is set to 0, the Length field is absent and the Stream Data field extends to the end of the packet. If this bit is set to 1, the Length field is present.
  • -
  • The FIN bit (0x01) of the frame type is set only on frames that contain the +
  • The FIN bit (0x01) of the frame type is set only on frames that contain the final size of the stream. Setting this bit indicates that the frame marks the end of the stream.
  • - +

    An endpoint that receives a STREAM frame for a send-only stream MUST terminate the connection with error STREAM_STATE_ERROR.

    The STREAM frames are as follows:

    @@ -7160,25 +7125,25 @@

    STREAM frames contain the following fields:

    Stream ID:
    -
    +
    A variable-length integer indicating the stream ID of the stream (see Section 2.1).
    Offset:
    -
    +
    A variable-length integer specifying the byte offset in the stream for the data in this STREAM frame. This field is present when the OFF bit is set to 1. When the Offset field is absent, the offset is 0.
    Length:
    -
    +
    A variable-length integer specifying the length of the Stream Data field in this STREAM frame. This field is present when the LEN bit is set to 1. When the LEN bit is set to 0, the Stream Data field consumes all the remaining bytes in the packet.
    Stream Data:
    -
    +
    The bytes from the designated stream to be delivered.
    @@ -7211,7 +7176,7 @@

    MAX_DATA frames contain the following fields:

    Maximum Data:
    -
    +
    A variable-length integer indicating the maximum amount of data that can be sent on the entire connection, in units of bytes.
    @@ -7252,12 +7217,12 @@

    MAX_STREAM_DATA frames contain the following fields:

    Stream ID:
    -
    +
    The stream ID of the stream that is affected encoded as a variable-length integer.
    Maximum Stream Data:
    -
    +
    A variable-length integer indicating the maximum amount of data that can be sent on the identified stream, in units of bytes.
    @@ -7296,7 +7261,7 @@

    MAX_STREAMS frames contain the following fields:

    Maximum Streams:
    -
    +
    A count of the cumulative number of streams of the corresponding type that can be opened over the lifetime of the connection. Stream IDs cannot exceed 2^62-1, as it is not possible to encode stream IDs larger than this value. @@ -7339,7 +7304,7 @@

    DATA_BLOCKED frames contain the following fields:

    Data Limit:
    -
    +
    A variable-length integer indicating the connection-level limit at which blocking occurred.
    @@ -7371,11 +7336,11 @@

    STREAM_DATA_BLOCKED frames contain the following fields:

    Stream ID:
    -
    +
    A variable-length integer indicating the stream which is flow control blocked.
    Stream Data Limit:
    -
    +
    A variable-length integer indicating the offset of the stream at which the blocking occurred.
    @@ -7407,7 +7372,7 @@

    STREAMS_BLOCKED frames contain the following fields:

    Stream Limit:
    -
    +
    A variable-length integer indicating the stream limit at the time the frame was sent. Stream IDs cannot exceed 2^62-1, as it is not possible to encode stream IDs larger than this value. Receipt of a frame that encodes a larger @@ -7451,27 +7416,27 @@

    NEW_CONNECTION_ID frames contain the following fields:

    Sequence Number:
    -
    +
    The sequence number assigned to the connection ID by the sender. See Section 5.1.1.
    Retire Prior To:
    -
    +
    A variable-length integer indicating which connection IDs should be retired. See Section 5.1.2.
    Length:
    -
    +
    An 8-bit unsigned integer containing the length of the connection ID. Values less than 1 and greater than 20 are invalid and MUST be treated as a connection error of type FRAME_ENCODING_ERROR.
    Connection ID:
    -
    +
    A connection ID of the specified length.
    Stateless Reset Token:
    -
    +
    A 128-bit value that will be used for a stateless reset when the associated connection ID is used (see Section 10.4).
    @@ -7533,7 +7498,7 @@

    RETIRE_CONNECTION_ID frames contain the following fields:

    Sequence Number:
    -
    +
    The sequence number of the connection ID being retired. See Section 5.1.2.
    @@ -7573,7 +7538,7 @@

    PATH_CHALLENGE frames contain the following fields:

    Data:
    -
    +
    This 8-byte field contains arbitrary data.
    @@ -7628,7 +7593,7 @@

    CONNECTION_CLOSE frames contain the following fields:

    Error Code:
    -
    +
    A variable length integer error code which indicates the reason for closing this connection. A CONNECTION_CLOSE frame of type 0x1c uses codes from the space defined in Section 20. A CONNECTION_CLOSE frame of @@ -7636,20 +7601,20 @@

    see Section 20.1

    Frame Type:
    -
    +
    A variable-length integer encoding the type of frame that triggered the error. A value of 0 (equivalent to the mention of the PADDING frame) is used when the frame type is unknown. The application-specific variant of CONNECTION_CLOSE (type 0x1d) does not include this field.
    Reason Phrase Length:
    -
    +
    A variable-length integer specifying the length of the reason phrase in bytes. Because a CONNECTION_CLOSE frame cannot be split between packets, any limits on packet size will also limit the space available for a reason phrase.
    Reason Phrase:
    -
    +
    A human-readable explanation for why the connection was closed. This can be zero length if the sender chooses to not give details beyond the Error Code. This SHOULD be a UTF-8 encoded string [RFC3629]. @@ -7695,36 +7660,36 @@

    CONNECTION_CLOSE frame. These errors apply to the entire connection.

    NO_ERROR (0x0):
    -
    +
    An endpoint uses this with CONNECTION_CLOSE to signal that the connection is being closed abruptly in the absence of any error.
    INTERNAL_ERROR (0x1):
    -
    +
    The endpoint encountered an internal error and cannot continue with the connection.
    SERVER_BUSY (0x2):
    -
    +
    The server is currently busy and does not accept any new connections.
    FLOW_CONTROL_ERROR (0x3):
    -
    +
    An endpoint received more data than it permitted in its advertised data limits (see Section 4).
    STREAM_LIMIT_ERROR (0x4):
    -
    +
    An endpoint received a frame for a stream identifier that exceeded its advertised stream limit for the corresponding stream type.
    STREAM_STATE_ERROR (0x5):
    -
    +
    An endpoint received a frame for a stream that was not in a state that permitted that frame (see Section 3).
    FINAL_SIZE_ERROR (0x6):
    -
    +
    An endpoint received a STREAM frame containing data that exceeded the previously established final size. Or an endpoint received a STREAM frame or a RESET_STREAM frame containing a final size that was lower than the size of @@ -7733,37 +7698,37 @@

    established.

    FRAME_ENCODING_ERROR (0x7):
    -
    +
    An endpoint received a frame that was badly formatted. For instance, a frame of an unknown type, or an ACK frame that has more acknowledgment ranges than the remainder of the packet could carry.
    TRANSPORT_PARAMETER_ERROR (0x8):
    -
    +
    An endpoint received transport parameters that were badly formatted, included an invalid value, was absent even though it is mandatory, was present though it is forbidden, or is otherwise in error.
    CONNECTION_ID_LIMIT_ERROR (0x9):
    -
    +
    The number of connection IDs provided by the peer exceeds the advertised active_connection_id_limit.
    PROTOCOL_VIOLATION (0xA):
    -
    +
    An endpoint detected an error with protocol compliance that was not covered by more specific error codes.
    INVALID_TOKEN (0xB):
    -
    +
    A server received a Retry Token in a client Initial that is invalid.
    CRYPTO_BUFFER_EXCEEDED (0xD):
    -
    +
    An endpoint has received more data in CRYPTO frames than it can buffer.
    CRYPTO_ERROR (0x1XX):
    -
    +
    The cryptographic handshake failed. A range of 256 values is reserved for carrying error codes specific to the cryptographic handshake that is used. Codes for errors occurring when TLS is used for the crypto handshake are @@ -8060,27 +8025,27 @@

    registration:

    Value:
    -
    +
    The assigned codepoint.
    Status:
    -
    +
    "Permanent" or "Provisional".
    Specification:
    -
    +
    A reference to a publicly available specification for the value.
    Date:
    -
    +
    The date of last update to the registration.
    Contact:
    -
    +
    Contact details for the registrant.
    Notes:
    -
    +
    Supplementary notes about the registration.
    @@ -8183,7 +8148,7 @@

    this registry MUST include the following fields:

    Parameter Name:
    -
    +
    A short mnemonic for the parameter.
    @@ -8331,7 +8296,7 @@

    this registry MUST include the following fields:

    Frame Name:
    -
    +
    A short mnemonic for the frame type.
    @@ -8361,11 +8326,11 @@

    this registry MUST include the following fields:

    Code:
    -
    +
    A short mnemonic for the parameter.
    Description:
    -
    +
    A brief description of the error code semantics, which MAY be a summary if a specification reference is provided.
    @@ -8507,52 +8472,52 @@

    [DPLPMTUD]
    -
    +
    Fairhurst, G., Jones, T., Tuexen, M., Ruengeler, I., and T. Voelker, "Packetization Layer Path MTU Discovery for Datagram Transports", Work in Progress, Internet-Draft, draft-ietf-tsvwg-datagram-plpmtud-08, , <http://www.ietf.org/internet-drafts/draft-ietf-tsvwg-datagram-plpmtud-08.txt>.
    [QUIC-RECOVERY]
    -
    -Iyengar, J., Ed. and I. Swett, Ed., "QUIC Loss Detection and Congestion Control", Work in Progress, Internet-Draft, draft-ietf-quic-recovery-latest, , <https://tools.ietf.org/html/draft-ietf-quic-recovery-latest>.
    +
    +Iyengar, J., Ed. and I. Swett, Ed., "QUIC Loss Detection and Congestion Control", Work in Progress, Internet-Draft, draft-ietf-quic-recovery-latest, , <https://tools.ietf.org/html/draft-ietf-quic-recovery-latest>.
    [QUIC-TLS]
    -
    -Thomson, M., Ed. and S. Turner, Ed., "Using Transport Layer Security (TLS) to Secure QUIC", Work in Progress, Internet-Draft, draft-ietf-quic-tls-latest, , <https://tools.ietf.org/html/draft-ietf-quic-tls-latest>.
    +
    +Thomson, M., Ed. and S. Turner, Ed., "Using Transport Layer Security (TLS) to Secure QUIC", Work in Progress, Internet-Draft, draft-ietf-quic-tls-latest, , <https://tools.ietf.org/html/draft-ietf-quic-tls-latest>.
    [RFC1191]
    -
    +
    Mogul, J.C. and S.E. Deering, "Path MTU discovery", RFC 1191, DOI 10.17487/RFC1191, , <https://www.rfc-editor.org/info/rfc1191>.
    [RFC2119]
    -
    +
    Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, , <https://www.rfc-editor.org/info/rfc2119>.
    [RFC3168]
    -
    +
    Ramakrishnan, K., Floyd, S., and D. Black, "The Addition of Explicit Congestion Notification (ECN) to IP", RFC 3168, DOI 10.17487/RFC3168, , <https://www.rfc-editor.org/info/rfc3168>.
    [RFC3629]
    -
    +
    Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, , <https://www.rfc-editor.org/info/rfc3629>.
    [RFC4086]
    -
    +
    Eastlake 3rd, D., Schiller, J., and S. Crocker, "Randomness Requirements for Security", BCP 106, RFC 4086, DOI 10.17487/RFC4086, , <https://www.rfc-editor.org/info/rfc4086>.
    [RFC5116]
    -
    +
    McGrew, D., "An Interface and Algorithms for Authenticated Encryption", RFC 5116, DOI 10.17487/RFC5116, , <https://www.rfc-editor.org/info/rfc5116>.
    [RFC6437]
    -
    +
    Amante, S., Carpenter, B., Jiang, S., and J. Rajahalme, "IPv6 Flow Label Specification", RFC 6437, DOI 10.17487/RFC6437, , <https://www.rfc-editor.org/info/rfc6437>.
    [RFC8085]
    -
    +
    Eggert, L., Fairhurst, G., and G. Shepherd, "UDP Usage Guidelines", BCP 145, RFC 8085, DOI 10.17487/RFC8085, , <https://www.rfc-editor.org/info/rfc8085>.
    [RFC8126]
    -
    +
    Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10.17487/RFC8126, , <https://www.rfc-editor.org/info/rfc8126>.
    [RFC8174]
    -
    +
    Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, , <https://www.rfc-editor.org/info/rfc8174>.
    [RFC8201]
    -
    +
    McCann, J., Deering, S., Mogul, J., and R. Hinden, Ed., "Path MTU Discovery for IP version 6", STD 87, RFC 8201, DOI 10.17487/RFC8201, , <https://www.rfc-editor.org/info/rfc8201>.
    [RFC8311]
    -
    +
    Black, D., "Relaxing Restrictions on Explicit Congestion Notification (ECN) Experimentation", RFC 8311, DOI 10.17487/RFC8311, , <https://www.rfc-editor.org/info/rfc8311>.
    [TLS13]
    -
    +
    Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.3", RFC 8446, DOI 10.17487/RFC8446, , <https://www.rfc-editor.org/info/rfc8446>.
    @@ -8562,55 +8527,55 @@

    [EARLY-DESIGN]
    -
    +
    Roskind, J., "QUIC: Multiplexed Transport Over UDP", , <https://goo.gl/dMVtFi>.
    [HTTP2]
    -
    +
    Belshe, M., Peon, R., and M. Thomson, Ed., "Hypertext Transfer Protocol Version 2 (HTTP/2)", RFC 7540, DOI 10.17487/RFC7540, , <https://www.rfc-editor.org/info/rfc7540>.
    [QUIC-INVARIANTS]
    -
    -Thomson, M., "Version-Independent Properties of QUIC", Work in Progress, Internet-Draft, draft-ietf-quic-invariants-latest, , <https://tools.ietf.org/html/draft-ietf-quic-invariants-latest>.
    +
    +Thomson, M., "Version-Independent Properties of QUIC", Work in Progress, Internet-Draft, draft-ietf-quic-invariants-latest, , <https://tools.ietf.org/html/draft-ietf-quic-invariants-latest>.
    [QUIC-MANAGEABILITY]
    -
    +
    Kuehlewind, M. and B. Trammell, "Manageability of the QUIC Transport Protocol", Work in Progress, Internet-Draft, draft-ietf-quic-manageability-05, , <http://www.ietf.org/internet-drafts/draft-ietf-quic-manageability-05.txt>.
    [RFC1812]
    -
    +
    Baker, F., Ed., "Requirements for IP Version 4 Routers", RFC 1812, DOI 10.17487/RFC1812, , <https://www.rfc-editor.org/info/rfc1812>.
    [RFC2018]
    -
    +
    Mathis, M., Mahdavi, J., Floyd, S., and A. Romanow, "TCP Selective Acknowledgment Options", RFC 2018, DOI 10.17487/RFC2018, , <https://www.rfc-editor.org/info/rfc2018>.
    [RFC2104]
    -
    +
    Krawczyk, H., Bellare, M., and R. Canetti, "HMAC: Keyed-Hashing for Message Authentication", RFC 2104, DOI 10.17487/RFC2104, , <https://www.rfc-editor.org/info/rfc2104>.
    [RFC2360]
    -
    +
    Scott, G., "Guide for Internet Standards Writers", BCP 22, RFC 2360, DOI 10.17487/RFC2360, , <https://www.rfc-editor.org/info/rfc2360>.
    [RFC4303]
    -
    +
    Kent, S., "IP Encapsulating Security Payload (ESP)", RFC 4303, DOI 10.17487/RFC4303, , <https://www.rfc-editor.org/info/rfc4303>.
    [RFC4443]
    -
    +
    Conta, A., Deering, S., and M. Gupta, Ed., "Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification", STD 89, RFC 4443, DOI 10.17487/RFC4443, , <https://www.rfc-editor.org/info/rfc4443>.
    [RFC4787]
    -
    +
    Audet, F., Ed. and C. Jennings, "Network Address Translation (NAT) Behavioral Requirements for Unicast UDP", BCP 127, RFC 4787, DOI 10.17487/RFC4787, , <https://www.rfc-editor.org/info/rfc4787>.
    [RFC5681]
    -
    +
    Allman, M., Paxson, V., and E. Blanton, "TCP Congestion Control", RFC 5681, DOI 10.17487/RFC5681, , <https://www.rfc-editor.org/info/rfc5681>.
    [RFC5869]
    -
    +
    Krawczyk, H. and P. Eronen, "HMAC-based Extract-and-Expand Key Derivation Function (HKDF)", RFC 5869, DOI 10.17487/RFC5869, , <https://www.rfc-editor.org/info/rfc5869>.
    [RFC7301]
    -
    +
    Friedl, S., Popov, A., Langley, A., and E. Stephan, "Transport Layer Security (TLS) Application-Layer Protocol Negotiation Extension", RFC 7301, DOI 10.17487/RFC7301, , <https://www.rfc-editor.org/info/rfc7301>.
    [RFC8200]
    -
    +
    Deering, S. and R. Hinden, "Internet Protocol, Version 6 (IPv6) Specification", STD 86, RFC 8200, DOI 10.17487/RFC8200, , <https://www.rfc-editor.org/info/rfc8200>.
    [SLOWLORIS]
    -
    +
    RSnake Hansen, R., "Welcome to Slowloris...", , <https://web.archive.org/web/20150315054838/http://ha.ckers.org/slowloris/>.
    [STD]
    -
    +
    Bradner, S., "The Internet Standards Process -- Revision 3", BCP 9, RFC 2026, DOI 10.17487/RFC2026, , <https://www.rfc-editor.org/info/rfc2026>.
    @@ -8652,941 +8617,978 @@

    -
    +
    +

    +Appendix B. Sample ECN Validation Algorithm +

    +

    Each time an endpoint commences sending on a new network path, it determines +whether the path supports ECN; see Section 13.4. If the path supports ECN, the goal +is to use ECN. Endpoints might also periodically reassess a path that was +determined not support ECN.

    +

    This section describes one method for testing new paths. This algorithm is +intended to show how a path might be tested for ECN support. Endpoints can +implement different methods.

    +

    The path is assigned an ECN state that is one of "testing", "unknown", "failed", +or "capable". On paths with a "testing" or "capable" state the endpoint sends +packets with an ECT marking, by default ECT(0); otherwise, the endpoint sends +unmarked packets.

    +

    To start testing a path, the ECN state is set to "testing" and existing ECN +counts are remembered as a baseline.

    +

    The testing period runs for a number of packets or round-trip times, as +determined by the endpoint. The goal is not to limit the duration of the +testing period, but to ensure that enough marked packets are sent for received +ECN counts to provide a clear indication of how the path treats marked packets. +Section 13.4.2.2 suggests limiting this to 10 packets or 3 round-trip times.

    +

    After the testing period ends, the ECN state for the path becomes "unknown". +From the "unknown" state, successful validation of the ECN counts an ACK frame +(see Section 13.4.2.2) causes the ECN state for the path to become "capable", unless +no marked packet has been acknowledged.

    +

    If validation of ECN counts fails at any time, the ECN state for the affected +path becomes "failed". An endpoint can also mark the ECN state for a path as +"failed" if marked packets are all declared lost or if they are all CE marked.

    +

    Following this algorithm ensures that ECN is rarely disabled for paths that +properly support ECN. Any path that incorrectly modifies markings will cause +ECN to be disabled. For those rare cases where marked packets are discarded by +the path, the short duration of the testing period limits the number of losses +incurred.

    +
    +
    +
    +

    -Appendix B. Change Log +Appendix C. Change Log

      -
    • +
    • RFC Editor's Note: Please remove this section prior to publication of a -final version of this document. +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.

    -
    +

    -B.1. Since draft-ietf-quic-transport-23 +C.1. 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 (#3053, #3051) +
    • Client Initial size constraints apply to UDP datagram payload (#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
      • -
      • detection uses UDP datagrams, not packets +
      • detection uses UDP datagrams, not packets
      • -
      • tokens cannot be reused (#2785, #2968) +
      • tokens cannot be reused (#2785, #2968)
      • -
      +
    -
  • Clearer rules for sharing of UDP ports and use of connection IDs when doing so -(#2844, #2851) +
  • Clearer rules for sharing of UDP ports and use of connection IDs when doing so +(#2844, #2851)
  • -
  • A new connection ID is necessary when responding to migration (#2778, #2969) +
  • A new connection ID is necessary when responding to migration (#2778, #2969)
  • -
  • Stronger requirements for connection ID retirement (#3046, #3096) +
  • Stronger requirements for connection ID retirement (#3046, #3096)
  • -
  • NEW_TOKEN cannot be empty (#2978, #2977) +
  • NEW_TOKEN cannot be empty (#2978, #2977)
  • -
  • PING can be sent at any encryption level (#3034, #3035) +
  • PING can be sent at any encryption level (#3034, #3035)
  • -
  • 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-eliciting -packets (#3100, #3104) +
  • Non-ack-eliciting packets cannot be sent in response to non-ack-eliciting +packets (#3100, #3104)
  • -
  • Servers have to change connection IDs in Retry (#2837, #3147) +
  • Servers have to change connection IDs in Retry (#2837, #3147)
  • - +
    -
    +

    -B.2. Since draft-ietf-quic-transport-22 +C.2. Since draft-ietf-quic-transport-22

      -
    • Rules for preventing correlation by connection ID tightened (#2084, #2929) +
    • Rules for preventing correlation by connection ID tightened (#2084, #2929)
    • -
    • Clarified use of CONNECTION_CLOSE in Handshake packets (#2151, #2541, #2688) +
    • Clarified use of CONNECTION_CLOSE in Handshake packets (#2151, #2541, #2688)
    • -
    • Discourage regressions of largest acknowledged in ACK (#2205, #2752) +
    • Discourage regressions of largest acknowledged in ACK (#2205, #2752)
    • -
    • Improved robustness of validation process for ECN counts (#2534, #2752) +
    • Improved robustness of validation process for ECN counts (#2534, #2752)
    • -
    • Require endpoints to ignore spurious migration attempts (#2342, #2893) +
    • Require endpoints to ignore spurious migration attempts (#2342, #2893)
    • -
    • Transport parameter for disabling migration clarified to allow NAT rebinding -(#2389, #2893) +
    • Transport parameter for disabling migration clarified to allow NAT rebinding +(#2389, #2893)
    • -
    • Document principles for defining new error codes (#2388, #2880) +
    • Document principles for defining new error codes (#2388, #2880)
    • -
    • Reserve transport parameters for greasing (#2550, #2873) +
    • Reserve transport parameters for greasing (#2550, #2873)
    • -
    • A maximum ACK delay of 0 is used for handshake packet number spaces (#2646, -#2638) +
    • A maximum ACK delay of 0 is used for handshake packet number spaces (#2646, +#2638)
    • -
    • Improved rules for use of congestion control state on new paths (#2685, #2918) +
    • Improved rules for use of congestion control state on new paths (#2685, #2918)
    • -
    • Removed recommendation to coordinate spin for multiple connections that share -a path (#2763, #2882) +
    • Removed recommendation to coordinate spin for multiple connections that share +a path (#2763, #2882)
    • -
    • Allow smaller stateless resets and recommend a smaller minimum on packets -that might trigger a stateless reset (#2770, #2869, #2927, #3007). +
    • Allow smaller stateless resets and recommend a smaller minimum on packets +that might trigger a stateless reset (#2770, #2869, #2927, #3007).
    • -
    • Provide guidance around the interface to QUIC as used by application protocols -(#2805, #2857) +
    • Provide guidance around the interface to QUIC as used by application protocols +(#2805, #2857)
    • -
    • Frames other than STREAM can cause STREAM_LIMIT_ERROR (#2825, #2826) +
    • Frames other than STREAM can cause STREAM_LIMIT_ERROR (#2825, #2826)
    • -
    • Tighter rules about processing of rejected 0-RTT packets (#2829, #2840, #2841) +
    • Tighter rules about processing of rejected 0-RTT packets (#2829, #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 parameter encryption -(#2920, #2921) +
    • Cryptographic handshake needs to provide server transport parameter encryption +(#2920, #2921)
    • -
    • Moved ACK generation guidance from recovery draft to transport draft (#1860, -#2916). +
    • Moved ACK generation guidance from recovery draft to transport draft (#1860, +#2916).
    • -
    +
    -
    +

    -B.3. Since draft-ietf-quic-transport-21 +C.3. Since draft-ietf-quic-transport-21

      -
    • Connection ID lengths are now one octet, but limited in version 1 to 20 octets -of length (#2736, #2749) +
    • Connection ID lengths are now one octet, but limited in version 1 to 20 octets +of length (#2736, #2749)
    • -
    +
    -
    +

    -B.4. Since draft-ietf-quic-transport-20 +C.4. 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 (#2645, -#2769) +
    • NEW_CONNECTION_ID includes a request to retire old connection IDs (#2645, +#2769)
    • -
    • Tighter rules for generating and explicitly eliciting ACK frames (#2546, -#2794) +
    • Tighter rules for generating and explicitly eliciting ACK frames (#2546, +#2794)
    • -
    • Recommend having only one packet per encryption level in a datagram (#2308, -#2747) +
    • Recommend having only one packet per encryption level in a datagram (#2308, +#2747)
    • -
    • More normative language about use of stateless reset (#2471, #2574) +
    • More normative language about use of stateless reset (#2471, #2574)
    • -
    • Allow reuse of stateless reset tokens (#2732, #2733) +
    • Allow reuse of stateless reset tokens (#2732, #2733)
    • -
    • Allow, but not require, enforcing non-duplicate transport parameters (#2689, -#2691) +
    • Allow, but not require, enforcing non-duplicate transport parameters (#2689, +#2691)
    • -
    • Added an active_connection_id_limit transport parameter (#1994, #1998) +
    • Added an active_connection_id_limit transport parameter (#1994, #1998)
    • -
    • max_ack_delay transport parameter defaults to 0 (#2638, #2646) +
    • max_ack_delay transport parameter defaults to 0 (#2638, #2646)
    • -
    • When sending 0-RTT, only remembered transport parameters apply (#2458, #2360, -#2466, #2461) +
    • When sending 0-RTT, only remembered transport parameters apply (#2458, #2360, +#2466, #2461)
    • -
    • Define handshake completion and confirmation; define clearer rules when it -encryption keys should be discarded (#2214, #2267, #2673) +
    • Define handshake completion and confirmation; define clearer rules when it +encryption keys should be discarded (#2214, #2267, #2673)
    • -
    • Prohibit path migration prior to handshake confirmation (#2309, #2370) +
    • Prohibit path migration prior to handshake confirmation (#2309, #2370)
    • -
    • PATH_RESPONSE no longer needs to be received on the validated path (#2582, -#2580, #2579, #2637) +
    • PATH_RESPONSE no longer needs to be received on the validated path (#2582, +#2580, #2579, #2637)
    • -
    • PATH_RESPONSE frames are not stored and retransmitted (#2724, #2729) +
    • PATH_RESPONSE frames are not stored and retransmitted (#2724, #2729)
    • -
    • Document hack for enabling routing of ICMP when doing PMTU probing (#1243, -#2402) +
    • Document hack for enabling routing of ICMP when doing PMTU probing (#1243, +#2402)
    • -
    +
    -
    +

    -B.5. Since draft-ietf-quic-transport-19 +C.5. 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, #2467) +
    • Fewer transport parameters need to be remembered for 0-RTT (#2624, #2467)
    • -
    • Spin bit text incorporated (#2564) +
    • Spin bit text incorporated (#2564)
    • -
    • Close the connection when maximum stream ID in MAX_STREAMS exceeds 2^62 - 1 -(#2499, #2487) +
    • Close the connection when maximum stream ID in MAX_STREAMS exceeds 2^62 - 1 +(#2499, #2487)
    • -
    • New connection ID required for intentional migration (#2414, #2413) +
    • New connection ID required for intentional migration (#2414, #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 Handshake -packet is sent as well (#2522, #2523) +
    • Initial packets from clients need to be padded to 1200 unless a Handshake +packet is sent as well (#2522, #2523)
    • -
    • CRYPTO frames can be discarded if too much data is buffered (#1834, #2524) +
    • CRYPTO frames can be discarded if too much data is buffered (#1834, #2524)
    • -
    • Stateless reset uses a short header packet (#2599, #2600) +
    • Stateless reset uses a short header packet (#2599, #2600)
    • -
    +
    -
    +

    -B.6. Since draft-ietf-quic-transport-18 +C.6. Since draft-ietf-quic-transport-18

      -
    • Removed version negotiation; version negotiation, including authentication of -the result, will be addressed in the next version of QUIC (#1773, #2313) +
    • Removed version negotiation; version negotiation, including authentication of +the result, will be addressed in the next 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 connection ID -(#2101, #2420) +
    • A connection ID can't be retired in a packet that uses that connection ID +(#2101, #2420)
    • -
    • Idle timeout transport parameter is in milliseconds (from seconds) (#2453, -#2454) +
    • Idle timeout transport parameter is in milliseconds (from seconds) (#2453, +#2454)
    • -
    • Endpoints are required to use new connection IDs when they use new network -paths (#2413, #2414) +
    • Endpoints are required to use new connection IDs when they use new 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)
    • -
    +
    -
    +

    -B.7. Since draft-ietf-quic-transport-17 +C.7. 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 available (#1951, -#2045) +
    • Endpoints discard initial keys as soon as handshake keys are available (#1951, +#2045)
    • -
    • Expanded conditions for ignoring ICMP packet too big messages (#2108, #2161) +
    • Expanded conditions for ignoring ICMP packet too big messages (#2108, #2161)
    • -
    • Remove rate control from PATH_CHALLENGE/PATH_RESPONSE (#2129, #2241) +
    • Remove rate control from PATH_CHALLENGE/PATH_RESPONSE (#2129, #2241)
    • -
    • Endpoints are permitted to discard malformed initial packets (#2141) +
    • Endpoints are permitted to discard malformed initial packets (#2141)
    • -
    • Clarified ECN implementation and usage requirements (#2156, #2201) +
    • Clarified ECN implementation and usage requirements (#2156, #2201)
    • -
    • Disable ECN count verification for packets that arrive out of order (#2198, -#2215) +
    • Disable ECN count verification for packets that arrive out of order (#2198, +#2215)
    • -
    • Use Probe Timeout (PTO) instead of RTO (#2206, #2238) +
    • Use Probe Timeout (PTO) instead of RTO (#2206, #2238)
    • -
    • Loosen constraints on retransmission of ACK ranges (#2199, #2245) +
    • Loosen constraints on retransmission of ACK ranges (#2199, #2245)
    • -
    • Limit Retry and Version Negotiation to once per datagram (#2259, #2303) +
    • Limit Retry and Version Negotiation to once per datagram (#2259, #2303)
    • -
    • Set a maximum value for max_ack_delay transport parameter (#2282, #2301) +
    • Set a maximum value for max_ack_delay transport parameter (#2282, #2301)
    • -
    • Allow server preferred address for both IPv4 and IPv6 (#2122, #2296) +
    • Allow server preferred address for both IPv4 and IPv6 (#2122, #2296)
    • -
    • Corrected requirements for migration to a preferred address (#2146, #2349) +
    • Corrected requirements for migration to a preferred address (#2146, #2349)
    • -
    • ACK of non-existent packet is illegal (#2298, #2302) +
    • ACK of non-existent packet is illegal (#2298, #2302)
    • -
    +
    -
    +

    -B.8. Since draft-ietf-quic-transport-16 +C.8. 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 (#1804, #1922) +
    • Remove reservation of application error code 0 for STOPPING (#1804, #1922)
    • -
    • Renumbered frames (#1945) +
    • Renumbered frames (#1945)
    • -
    • Renumbered transport parameters (#1946) +
    • Renumbered transport parameters (#1946)
    • -
    • Numeric transport parameters are expressed as varints (#1608, #1947, #1955) +
    • Numeric transport parameters are expressed as varints (#1608, #1947, #1955)
    • -
    • Reorder the NEW_CONNECTION_ID frame (#1952, #1963) +
    • Reorder the NEW_CONNECTION_ID frame (#1952, #1963)
    • -
    • -

      Rework the first byte (#2006)

      +
    • +

      Rework the first byte (#2006)

        -
      • Fix the 0x40 bit +
      • Fix the 0x40 bit
      • -
      • Change type values for long header +
      • Change type values for long header
      • -
      • Add spin bit to short header (#631, #1988) +
      • Add spin bit to short header (#631, #1988)
      • -
      • Encrypt the remainder of the first byte (#1322) +
      • Encrypt the remainder of the first byte (#1322)
      • -
      • Move packet number length to first byte +
      • Move packet number length to first byte
      • -
      • Move ODCIL to first byte of retry packets +
      • Move ODCIL to first byte of retry packets
      • -
      • Simplify packet number protection (#1575) +
      • Simplify packet number protection (#1575)
      • -
      +
    -
  • Allow STOP_SENDING to open a remote bidirectional stream (#1797, #2013) +
  • Allow STOP_SENDING to open a remote bidirectional stream (#1797, #2013)
  • -
  • Added mitigation for off-path migration attacks (#1278, #1749, #2033) +
  • Added mitigation for off-path migration attacks (#1278, #1749, #2033)
  • -
  • Don't let the PMTU to drop below 1280 (#2063, #2069) +
  • Don't let the PMTU to drop below 1280 (#2063, #2069)
  • -
  • Require peers to replace retired connection IDs (#2085) +
  • Require peers to replace retired connection IDs (#2085)
  • -
  • Servers are required to ignore Version Negotiation packets (#2088) +
  • Servers are required to ignore Version Negotiation packets (#2088)
  • -
  • 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, #2045) +
  • Initial keys are discarded once Handshake are available (#1951, #2045)
  • -
  • ICMP PTB validation clarifications (#2161, #2109, #2108) +
  • ICMP PTB validation clarifications (#2161, #2109, #2108)
  • - +
    -
    +

    -B.9. Since draft-ietf-quic-transport-15 +C.9. Since draft-ietf-quic-transport-15

    -

    Substantial editorial reorganization; no technical changes.

    +

    Substantial editorial reorganization; no technical changes.

    -
    +

    -B.10. Since draft-ietf-quic-transport-14 +C.10. 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, #1793) +
    • Validate original connection ID after Retry packets (#1710, #1486, #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 (#1464, #1468, -#1483, #1484, #1486, #1495, #1729, #1742, #1799, #1821) +
    • Update connection ID handling; add RETIRE_CONNECTION_ID type (#1464, #1468, +#1483, #1484, #1486, #1495, #1729, #1742, #1799, #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)
    • -
    +
    -
    +

    -B.11. Since draft-ietf-quic-transport-13 +C.11. Since draft-ietf-quic-transport-13

      -
    • Streams open when higher-numbered streams of the same type open (#1342, #1549) +
    • Streams open when higher-numbered streams of the same type open (#1342, #1549)
    • -
    • Split initial stream flow control limit into 3 transport parameters (#1016, -#1542) +
    • Split initial stream flow control limit into 3 transport 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)
    • -
    • Permit stateless reset in response to any packet (#1348, #1553) +
    • Permit stateless reset in response to any packet (#1348, #1553)
    • -
    • Recommended defense against stateless reset spoofing (#1386, #1554) +
    • Recommended defense against stateless reset spoofing (#1386, #1554)
    • -
    • Prevent infinite stateless reset exchanges (#1443, #1627) +
    • Prevent infinite stateless reset exchanges (#1443, #1627)
    • -
    • Forbid processing of the same packet number twice (#1405, #1624) +
    • Forbid processing of the same packet number twice (#1405, #1624)
    • -
    • Added a packet number decoding example (#1493) +
    • Added a packet number decoding example (#1493)
    • -
    • More precisely define idle timeout (#1429, #1614, #1652) +
    • More precisely define idle timeout (#1429, #1614, #1652)
    • -
    • Corrected format of Retry packet and prevented looping (#1492, #1451, #1448, -#1498) +
    • Corrected format of Retry packet and prevented looping (#1492, #1451, #1448, +#1498)
    • -
    • Permit 0-RTT after receiving Version Negotiation or Retry (#1507, #1514, -#1621) +
    • Permit 0-RTT after receiving Version Negotiation or Retry (#1507, #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 (#1555, #1481, -#1565) +
    • Looser verification of ECN counters to account for ACK loss (#1555, #1481, +#1565)
    • -
    • Remove frame type field from APPLICATION_CLOSE (#1508, #1528) +
    • Remove frame type field from APPLICATION_CLOSE (#1508, #1528)
    • -
    +
    -
    +

    -B.12. Since draft-ietf-quic-transport-12 +C.12. Since draft-ietf-quic-transport-12

      -
    • -

      Changes to integration of the TLS handshake (#829, #1018, #1094, #1165, #1190, -#1233, #1242, #1252, #1450, #1458)

      +
    • +

      Changes to integration of the TLS handshake (#829, #1018, #1094, #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 protection +
      • QUIC packet protection is used in place of TLS record protection
      • -
      • Separate QUIC packet number spaces are used for the handshake +
      • Separate QUIC packet number spaces are used for the handshake
      • -
      • Changed Retry to be independent of the cryptographic handshake +
      • Changed Retry to be independent of the cryptographic handshake
      • -
      • Added NEW_TOKEN frame and Token fields to Initial packet +
      • Added NEW_TOKEN frame and Token fields to Initial packet
      • -
      • Limit the use of HelloRetryRequest to address TLS needs (like key shares) +
      • Limit the use of HelloRetryRequest to address TLS needs (like key shares)
      • -
      +
    -
  • Enable server to transition connections to a preferred address (#560, #1251, -#1373) +
  • Enable server to transition connections to a preferred address (#560, #1251, +#1373)
  • -
  • Added ECN feedback mechanisms and handling; new ACK_ECN frame (#804, #805, -#1372) +
  • Added ECN feedback mechanisms and handling; new ACK_ECN frame (#804, #805, +#1372)
  • -
  • Changed rules and recommendations for use of new connection IDs (#1258, #1264, -#1276, #1280, #1419, #1452, #1453, #1465) +
  • Changed rules and recommendations for use of new connection IDs (#1258, #1264, +#1276, #1280, #1419, #1452, #1453, #1465)
  • -
  • Added a transport parameter to disable intentional connection migration -(#1271, #1447) +
  • Added a transport parameter to disable intentional connection migration +(#1271, #1447)
  • -
  • Packets from different connection ID can't be coalesced (#1287, #1423) +
  • Packets from different connection ID can't be coalesced (#1287, #1423)
  • -
  • Fixed sampling method for packet number encryption; the length field in long +
  • Fixed sampling method for packet number encryption; the length field in long headers includes the packet number field in addition to the packet payload -(#1387, #1389) +(#1387, #1389)
  • -
  • Stateless Reset is now symmetric and subject to size constraints (#466, #1346) +
  • Stateless Reset is now symmetric and subject to size constraints (#466, #1346)
  • -
  • Added frame type extension mechanism (#58, #1473) +
  • Added frame type extension mechanism (#58, #1473)
  • - +
    -
    +

    -B.13. Since draft-ietf-quic-transport-11 +C.13. Since draft-ietf-quic-transport-11

      -
    • Enable server to transition connections to a preferred address (#560, #1251) +
    • Enable server to transition connections to a preferred address (#560, #1251)
    • -
    • Packet numbers are encrypted (#1174, #1043, #1048, #1034, #850, #990, #734, -#1317, #1267, #1079) +
    • Packet numbers are encrypted (#1174, #1043, #1048, #1034, #850, #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)
    • -
    +
    -
    +

    -B.14. Since draft-ietf-quic-transport-10 +C.14. Since draft-ietf-quic-transport-10

      -
    • Swap payload length and packed number fields in long header (#1294) +
    • Swap payload length and packed number fields in long header (#1294)
    • -
    • Clarified that CONNECTION_CLOSE is allowed in Handshake packet (#1274) +
    • Clarified that CONNECTION_CLOSE is allowed in Handshake packet (#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)
    • -
    • A more complete connection migration (#1249) +
    • A more complete connection migration (#1249)
    • -
    • Refine opportunistic ACK defense text (#305, #1030, #1185) +
    • Refine opportunistic ACK defense text (#305, #1030, #1185)
    • -
    • A Stateless Reset Token isn't mandatory (#818, #1191) +
    • A Stateless Reset Token isn't mandatory (#818, #1191)
    • -
    • Removed implicit stream opening (#896, #1193) +
    • Removed implicit stream opening (#896, #1193)
    • -
    • An empty STREAM frame can be used to open a stream without sending data (#901, -#1194) +
    • An empty STREAM frame can be used to open a stream without sending data (#901, +#1194)
    • -
    • Define stream counts in transport parameters rather than a maximum stream ID -(#1023, #1065) +
    • Define stream counts in transport parameters rather than a maximum stream ID +(#1023, #1065)
    • -
    • 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, #882) +
    • Recommend including ACK in Retry packets and allow PADDING (#1067, #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 of the wrong -version is received (#1197) +
    • Remove implication that Version Negotiation is sent when a packet of the wrong +version is received (#1197)
    • -
    +
    -
    +

    -B.15. Since draft-ietf-quic-transport-09 +C.15. Since draft-ietf-quic-transport-09

      -
    • Added PATH_CHALLENGE and PATH_RESPONSE frames to replace PING with Data and -PONG frame. Changed ACK frame type from 0x0e to 0x0d. (#1091, #725, #1086) +
    • Added PATH_CHALLENGE and PATH_RESPONSE frames to replace PING with Data and +PONG frame. Changed ACK frame type from 0x0e to 0x0d. (#1091, #725, #1086)
    • -
    • A server can now only send 3 packets without validating the client address -(#38, #1090) +
    • A server can now only send 3 packets without validating the client address +(#38, #1090)
    • -
    • Delivery order of stream data is no longer strongly specified (#252, #1070) +
    • Delivery order of stream data is no longer strongly specified (#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 completes (#1074, -#725, #825, #1082) +
    • Stream 0 is now exempt from flow control until the handshake completes (#1074, +#725, #825, #1082)
    • -
    • Improved retransmission rules for all frame types: information is -retransmitted, not packets or frames (#463, #765, #1095, #1053) +
    • Improved retransmission rules for all frame types: information is +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. Connection IDs are +
    • Endpoints now set the connection ID that their peer uses. Connection IDs are variable length. Removed the omit_connection_id transport parameter and the corresponding short header flag. (#1089, #1052, #1146, #821, #745, #821, -#1166, #1151) +#1166, #1151)
    • -
    +
    -
    +

    -B.16. Since draft-ietf-quic-transport-08 +C.16. 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, #928) +
    • BLOCKED frame now includes reason for blocking (#452, #924, #927, #928)
    • -
    • GAP limitation in ACK Frame (#613) +
    • GAP limitation in ACK Frame (#613)
    • -
    • Improved PMTUD description (#614, #1036) +
    • Improved PMTUD description (#614, #1036)
    • -
    • Clarified stream state machine (#634, #662, #743, #894) +
    • Clarified stream state machine (#634, #662, #743, #894)
    • -
    • Reserved versions don't need to be generated deterministically (#831, #931) +
    • Reserved versions don't need to be generated deterministically (#831, #931)
    • -
    • You don't always need the draining period (#871) +
    • You don't always need the draining period (#871)
    • -
    • 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, #971) +
    • initial_max_stream_id_x transport parameters are optional (#970, #971)
    • -
    • Ack Delay assumes a default value during the handshake (#1007, #1009) +
    • Ack Delay assumes a default value during the handshake (#1007, #1009)
    • -
    • Removed transport parameters from NewSessionTicket (#1015) +
    • Removed transport parameters from NewSessionTicket (#1015)
    • -
    +
    -
    +

    -B.17. Since draft-ietf-quic-transport-07 +C.17. 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 Flag is -inverted (#426, #956) +
    • Packet types are assigned new codepoints and the Connection ID Flag is +inverted (#426, #956)
    • -
    • Removed type for Version Negotiation and use Version 0 (#963, #968) +
    • Removed type for Version Negotiation and use Version 0 (#963, #968)
    • -
    • -

      Streams are split into unidirectional and bidirectional (#643, #656, #720, -#872, #175, #885)

      +
    • +

      Streams are split into unidirectional and bidirectional (#643, #656, #720, +#872, #175, #885)

        -
      • Stream limits now have separate uni- and bi-directional transport parameters -(#909, #958) +
      • Stream limits now have separate uni- and bi-directional transport parameters +(#909, #958)
      • -
      • Stream limit transport parameters are now optional and default to 0 (#970, -#971) +
      • Stream limit transport parameters are now optional and default to 0 (#970, +#971)
      • -
      +
    -
  • The stream state machine has been split into read and write (#634, #894) +
  • The stream state machine has been split into read and write (#634, #894)
  • -
  • Employ variable-length integer encodings throughout (#595) +
  • Employ variable-length integer encodings throughout (#595)
  • -
  • -

    Improvements to connection close

    +
  • +

    Improvements to connection close

      -
    • Added distinct closing and draining states (#899, #871) +
    • Added distinct closing and draining states (#899, #871)
    • -
    • Draining period can terminate early (#869, #870) +
    • Draining period can terminate early (#869, #870)
    • -
    • Clarifications about stateless reset (#889, #890) +
    • Clarifications about stateless reset (#889, #890)
    • -
    +
  • -
  • 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, #959) +
  • negotiated_version is sent in server transport parameters (#710, #959)
  • -
  • Increased the range over which packet numbers are randomized (#864, #850, -#964) +
  • Increased the range over which packet numbers are randomized (#864, #850, +#964)
  • - +
    -
    +

    -B.18. Since draft-ietf-quic-transport-06 +C.18. 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)
    • -
    +
    -
    +

    -B.19. Since draft-ietf-quic-transport-05 +C.19. 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, #177) +
    • Refactor section on connection termination (#733, #748, #328, #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)
    • -
    +
    -
    +

    -B.20. Since draft-ietf-quic-transport-04 +C.20. Since draft-ietf-quic-transport-04

      -
    • Introduce STOP_SENDING frame, RESET_STREAM only resets in one direction (#165) +
    • Introduce STOP_SENDING frame, RESET_STREAM only resets in one direction (#165)
    • -
    • Removed GOAWAY; application protocols are responsible for graceful shutdown -(#696) +
    • Removed GOAWAY; application protocols are responsible for graceful 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)
    • -
    • Removed versions from the transport parameters in a NewSessionTicket message -(#547) +
    • Removed versions from the transport parameters in a 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 (#215) +
    • Public reset is now stateless reset and not visible to the path (#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 ACK frames -to 64 bits (#629) +
    • Increased the maximum length of the Largest Acknowledged field in 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, #328) +
    • CONNECTION_CLOSE terminates the connection like TCP RST (#330, #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)
    • -
    +
    -
    +

    -B.21. Since draft-ietf-quic-transport-03 +C.21. 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
    • -
    +
    -
    +

    -B.22. Since draft-ietf-quic-transport-02 +C.22. Since draft-ietf-quic-transport-02

      -
    • The size of the initial packet payload has a fixed minimum (#267, #472) +
    • The size of the initial packet payload has a fixed minimum (#267, #472)
    • -
    • Define when Version Negotiation packets are ignored (#284, #294, #241, #143, -#474) +
    • Define when Version Negotiation packets are ignored (#284, #294, #241, #143, +#474)
    • -
    • The 64-bit FNV-1a algorithm is used for integrity protection of unprotected -packets (#167, #480, #481, #517) +
    • The 64-bit FNV-1a algorithm is used for integrity protection of unprotected +packets (#167, #480, #481, #517)
    • -
    • Rework initial packet types to change how the connection ID is chosen (#482, -#442, #493) +
    • Rework initial packet types to change how the connection ID is chosen (#482, +#442, #493)
    • -
    • No timestamps are forbidden in unprotected packets (#542, #429) +
    • No timestamps are forbidden in unprotected packets (#542, #429)
    • -
    • Cryptographic handshake is now on stream 0 (#456) +
    • Cryptographic handshake is now on stream 0 (#456)
    • -
    • Remove congestion control exemption for cryptographic handshake (#248, #476) +
    • Remove congestion control exemption for cryptographic handshake (#248, #476)
    • -
    • Version 1 of QUIC uses TLS; a new version is needed to use a different -handshake protocol (#516) +
    • Version 1 of QUIC uses TLS; a new version is needed to use a 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 frames -(#443)

      +
    • +

      Split some frames into separate connection- and stream- level 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 linkability -(#232, #491, #496) +
  • A NEW_CONNECTION_ID frame supports connection migration without linkability +(#232, #491, #496)
  • -
  • -

    Transport parameters for 0-RTT are retained from a previous connection (#405, -#513, #512)

    +
  • +

    Transport parameters for 0-RTT are retained from a previous connection (#405, +#513, #512)

      -
    • A client in 0-RTT no longer required to reset excess streams (#425, #479) +
    • A client in 0-RTT no longer required to reset excess streams (#425, #479)
    • -
    +
  • -
  • Expanded security considerations (#440, #444, #445, #448) +
  • Expanded security considerations (#440, #444, #445, #448)
  • - +
    -
    +

    -B.23. Since draft-ietf-quic-transport-01 +C.23. 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, #278) +
    • Define reserved version values for "greasing" negotiation (#112, #278)
    • -
    • The initial packet number is randomized (#35, #283) +
    • The initial packet number is randomized (#35, #283)
    • -
    • Narrow the packet number encoding range requirement (#67, #286, #299, #323, -#356) +
    • Narrow the packet number encoding range requirement (#67, #286, #299, #323, +#356)
    • -
    • Defined client address validation (#52, #118, #120, #275) +
    • Defined client address validation (#52, #118, #120, #275)
    • -
    • Define transport parameters as a TLS extension (#49, #122) +
    • Define transport parameters as a TLS extension (#49, #122)
    • -
    • SCUP and COPT parameters are no longer valid (#116, #117) +
    • SCUP and COPT parameters are no longer valid (#116, #117)
    • -
    • Transport parameters for 0-RTT are either remembered from before, or assume -default values (#126) +
    • Transport parameters for 0-RTT are either remembered from before, or assume +default values (#126)
    • -
    • The server chooses connection IDs in its final flight (#119, #349, #361) +
    • The server chooses connection IDs in its final flight (#119, #349, #361)
    • -
    • The server echoes the Connection ID and packet number fields when sending a -Version Negotiation packet (#133, #295, #244) +
    • The server echoes the Connection ID and packet number fields when sending a +Version Negotiation packet (#133, #295, #244)
    • -
    • Defined a minimum packet size for the initial handshake packet from the client -(#69, #136, #139, #164) +
    • Defined a minimum packet size for the initial handshake packet from the client +(#69, #136, #139, #164)
    • -
    • Path MTU Discovery (#64, #106) +
    • Path MTU Discovery (#64, #106)
    • -
    • The initial handshake packet from the client needs to fit in a single packet -(#338) +
    • The initial handshake packet from the client needs to fit in a single packet +(#338)
    • -
    • Forbid acknowledgment of packets containing only ACK and PADDING (#291) +
    • Forbid acknowledgment of packets containing only ACK and PADDING (#291)
    • -
    • Require that frames are processed when packets are acknowledged (#381, #341) +
    • Require that frames are processed when packets are acknowledged (#381, #341)
    • -
    • Removed the STOP_WAITING frame (#66) +
    • Removed the STOP_WAITING frame (#66)
    • -
    • Don't require retransmission of old timestamps for lost ACK frames (#308) +
    • Don't require retransmission of old timestamps for lost ACK frames (#308)
    • -
    • Clarified that frames are not retransmitted, but the information in them can -be (#157, #298) +
    • Clarified that frames are not retransmitted, but the information in them can +be (#157, #298)
    • -
    • Error handling definitions (#335) +
    • Error handling definitions (#335)
    • -
    • Split error codes into four sections (#74) +
    • Split error codes into four sections (#74)
    • -
    • Forbid the use of Public Reset where CONNECTION_CLOSE is possible (#289) +
    • Forbid the use of Public Reset where CONNECTION_CLOSE is possible (#289)
    • -
    • Define packet protection rules (#336) +
    • Define packet protection rules (#336)
    • -
    • Require that stream be entirely delivered or reset, including acknowledgment -of all STREAM frames or the RESET_STREAM, before it closes (#381) +
    • Require that stream be entirely delivered or reset, including acknowledgment +of all STREAM frames or the RESET_STREAM, before it closes (#381)
    • -
    • Remove stream reservation from state machine (#174, #280) +
    • Remove stream reservation from state machine (#174, #280)
    • -
    • Only stream 1 does not contribute to connection-level flow control (#204) +
    • Only stream 1 does not contribute to connection-level flow control (#204)
    • -
    • Stream 1 counts towards the maximum concurrent stream limit (#201, #282) +
    • Stream 1 counts towards the maximum concurrent stream limit (#201, #282)
    • -
    • Remove connection-level flow control exclusion for some streams (except 1) -(#246) +
    • Remove connection-level flow control exclusion for some streams (except 1) +(#246)
    • -
    • RESET_STREAM affects connection-level flow control (#162, #163) +
    • RESET_STREAM affects connection-level flow control (#162, #163)
    • -
    • Flow control accounting uses the maximum data offset on each stream, rather -than bytes received (#378) +
    • Flow control accounting uses the maximum data offset on each stream, rather +than bytes received (#378)
    • -
    • Moved length-determining fields to the start of STREAM and ACK (#168, #277) +
    • Moved length-determining fields to the start of STREAM and ACK (#168, #277)
    • -
    • Added the ability to pad between frames (#158, #276) +
    • Added the ability to pad between frames (#158, #276)
    • -
    • 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 consistent -offset (#249) +
    • Error codes for RESET_STREAM and CONNECTION_CLOSE are now at a consistent +offset (#249)
    • -
    • Defined priority as the responsibility of the application protocol (#104, -#303) +
    • Defined priority as the responsibility of the application protocol (#104, +#303)
    • -
    +
    -
    +

    -B.24. Since draft-ietf-quic-transport-00 +C.24. 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
    • -
    +
    -
    +

    -B.25. Since draft-hamilton-quic-transport-protocol-01 +C.25. 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
    • -
    +
    -
    +

    Acknowledgments

    -

    Special thanks are due to the following for helping shape pre-IETF QUIC and its +

    Special thanks are due to the following for helping shape pre-IETF QUIC and its deployment: Chris Bentzel, Misha Efimov, Roberto Peon, Alistair Riddoch, -Siddharth Vijayakrishnan, and Assar Westerlund.

    -

    This document has benefited immensely from various private discussions and +Siddharth Vijayakrishnan, and Assar Westerlund.

    +

    This document has benefited immensely from various private discussions and public ones on the quic@ietf.org and proto-quic@chromium.org mailing lists. Our -thanks to all.

    +thanks to all.

    -
    +

    Contributors

    -

    The original authors of this specification were Ryan Hamilton, Jana Iyengar, Ian -Swett, and Alyssa Wilk.

    -

    The original design and rationale behind this protocol draw significantly from +

    The original authors of this specification were Ryan Hamilton, Jana Iyengar, Ian +Swett, and Alyssa Wilk.

    +

    The original design and rationale behind this protocol draw significantly from work by Jim Roskind [EARLY-DESIGN]. In alphabetical order, the contributors to the pre-IETF QUIC project at Google are: Britt Cyr, Jeremy Dorfman, Ryan Hamilton, Jana Iyengar, Fedor Kouranov, Charles Krasic, Jo Kulik, Adam Langley, Jim Roskind, Robbie Shade, Satyam Shekhar, Cherie Shi, Ian Swett, Raman Tenneti, Victor Vasiliev, Antonio Vicente, Patrik Westin, Alyssa Wilk, Dale Worley, Fan -Yang, Dan Zhang, Daniel Ziegler.

    +Yang, Dan Zhang, Daniel Ziegler.

    -
    +

    Authors' Addresses

    diff --git a/ecn-alg/draft-ietf-quic-transport.txt b/ecn-alg/draft-ietf-quic-transport.txt index b9b86eff35..c42e48e026 100644 --- a/ecn-alg/draft-ietf-quic-transport.txt +++ b/ecn-alg/draft-ietf-quic-transport.txt @@ -5,8 +5,8 @@ QUIC J. Iyengar, Ed. Internet-Draft Fastly Intended status: Standards Track M. Thomson, Ed. -Expires: 10 July 2020 Mozilla - 7 January 2020 +Expires: 11 July 2020 Mozilla + 8 January 2020 QUIC: A UDP-Based Multiplexed and Secure Transport @@ -43,7 +43,7 @@ Status of This Memo time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress." - This Internet-Draft will expire on 10 July 2020. + This Internet-Draft will expire on 11 July 2020. Copyright Notice @@ -53,7 +53,7 @@ Copyright Notice -Iyengar & Thomson Expires 10 July 2020 [Page 1] +Iyengar & Thomson Expires 11 July 2020 [Page 1] Internet-Draft QUIC Transport Protocol January 2020 @@ -109,7 +109,7 @@ Table of Contents -Iyengar & Thomson Expires 10 July 2020 [Page 2] +Iyengar & Thomson Expires 11 July 2020 [Page 2] Internet-Draft QUIC Transport Protocol January 2020 @@ -165,7 +165,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 3] +Iyengar & Thomson Expires 11 July 2020 [Page 3] Internet-Draft QUIC Transport Protocol January 2020 @@ -182,26 +182,26 @@ Internet-Draft QUIC Transport Protocol January 2020 13.4. Explicit Congestion Notification . . . . . . . . . . . . 81 13.4.1. ECN Counts . . . . . . . . . . . . . . . . . . . . . 82 13.4.2. ECN Validation . . . . . . . . . . . . . . . . . . . 82 - 14. Packet Size . . . . . . . . . . . . . . . . . . . . . . . . . 85 - 14.1. Path Maximum Transmission Unit (PMTU) . . . . . . . . . 86 - 14.2. ICMP Packet Too Big Messages . . . . . . . . . . . . . . 87 - 14.3. Datagram Packetization Layer PMTU Discovery . . . . . . 88 - 14.3.1. PMTU Probes Containing Source Connection ID . . . . 88 - 15. Versions . . . . . . . . . . . . . . . . . . . . . . . . . . 88 - 16. Variable-Length Integer Encoding . . . . . . . . . . . . . . 89 - 17. Packet Formats . . . . . . . . . . . . . . . . . . . . . . . 90 - 17.1. Packet Number Encoding and Decoding . . . . . . . . . . 90 - 17.2. Long Header Packets . . . . . . . . . . . . . . . . . . 91 - 17.2.1. Version Negotiation Packet . . . . . . . . . . . . . 94 + 14. Packet Size . . . . . . . . . . . . . . . . . . . . . . . . . 84 + 14.1. Path Maximum Transmission Unit (PMTU) . . . . . . . . . 85 + 14.2. ICMP Packet Too Big Messages . . . . . . . . . . . . . . 86 + 14.3. Datagram Packetization Layer PMTU Discovery . . . . . . 87 + 14.3.1. PMTU Probes Containing Source Connection ID . . . . 87 + 15. Versions . . . . . . . . . . . . . . . . . . . . . . . . . . 87 + 16. Variable-Length Integer Encoding . . . . . . . . . . . . . . 88 + 17. Packet Formats . . . . . . . . . . . . . . . . . . . . . . . 89 + 17.1. Packet Number Encoding and Decoding . . . . . . . . . . 89 + 17.2. Long Header Packets . . . . . . . . . . . . . . . . . . 90 + 17.2.1. Version Negotiation Packet . . . . . . . . . . . . . 93 17.2.2. Initial Packet . . . . . . . . . . . . . . . . . . . 95 - 17.2.3. 0-RTT . . . . . . . . . . . . . . . . . . . . . . . 98 + 17.2.3. 0-RTT . . . . . . . . . . . . . . . . . . . . . . . 97 17.2.4. Handshake Packet . . . . . . . . . . . . . . . . . . 99 17.2.5. Retry Packet . . . . . . . . . . . . . . . . . . . . 100 - 17.3. Short Header Packets . . . . . . . . . . . . . . . . . . 103 - 17.3.1. Latency Spin Bit . . . . . . . . . . . . . . . . . . 105 - 18. Transport Parameter Encoding . . . . . . . . . . . . . . . . 106 - 18.1. Reserved Transport Parameters . . . . . . . . . . . . . 107 - 18.2. Transport Parameter Definitions . . . . . . . . . . . . 107 + 17.3. Short Header Packets . . . . . . . . . . . . . . . . . . 102 + 17.3.1. Latency Spin Bit . . . . . . . . . . . . . . . . . . 104 + 18. Transport Parameter Encoding . . . . . . . . . . . . . . . . 105 + 18.1. Reserved Transport Parameters . . . . . . . . . . . . . 106 + 18.2. Transport Parameter Definitions . . . . . . . . . . . . 106 19. Frame Types and Formats . . . . . . . . . . . . . . . . . . . 111 19.1. PADDING Frame . . . . . . . . . . . . . . . . . . . . . 111 19.2. PING Frame . . . . . . . . . . . . . . . . . . . . . . . 111 @@ -221,7 +221,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 4] +Iyengar & Thomson Expires 11 July 2020 [Page 4] Internet-Draft QUIC Transport Protocol January 2020 @@ -260,43 +260,44 @@ Internet-Draft QUIC Transport Protocol January 2020 23.1. Normative References . . . . . . . . . . . . . . . . . . 143 23.2. Informative References . . . . . . . . . . . . . . . . . 144 Appendix A. Sample Packet Number Decoding Algorithm . . . . . . 146 - Appendix B. Change Log . . . . . . . . . . . . . . . . . . . . . 147 - B.1. Since draft-ietf-quic-transport-23 . . . . . . . . . . . 147 - B.2. Since draft-ietf-quic-transport-22 . . . . . . . . . . . 148 - B.3. Since draft-ietf-quic-transport-21 . . . . . . . . . . . 149 - B.4. Since draft-ietf-quic-transport-20 . . . . . . . . . . . 149 - B.5. Since draft-ietf-quic-transport-19 . . . . . . . . . . . 150 - B.6. Since draft-ietf-quic-transport-18 . . . . . . . . . . . 151 - B.7. Since draft-ietf-quic-transport-17 . . . . . . . . . . . 151 - B.8. Since draft-ietf-quic-transport-16 . . . . . . . . . . . 152 - B.9. Since draft-ietf-quic-transport-15 . . . . . . . . . . . 153 - B.10. Since draft-ietf-quic-transport-14 . . . . . . . . . . . 153 - B.11. Since draft-ietf-quic-transport-13 . . . . . . . . . . . 154 - B.12. Since draft-ietf-quic-transport-12 . . . . . . . . . . . 154 - B.13. Since draft-ietf-quic-transport-11 . . . . . . . . . . . 155 - - - -Iyengar & Thomson Expires 10 July 2020 [Page 5] - -Internet-Draft QUIC Transport Protocol January 2020 - - - B.14. Since draft-ietf-quic-transport-10 . . . . . . . . . . . 155 - B.15. Since draft-ietf-quic-transport-09 . . . . . . . . . . . 156 - B.16. Since draft-ietf-quic-transport-08 . . . . . . . . . . . 157 - B.17. Since draft-ietf-quic-transport-07 . . . . . . . . . . . 157 - B.18. Since draft-ietf-quic-transport-06 . . . . . . . . . . . 158 - B.19. Since draft-ietf-quic-transport-05 . . . . . . . . . . . 159 - B.20. Since draft-ietf-quic-transport-04 . . . . . . . . . . . 159 - B.21. Since draft-ietf-quic-transport-03 . . . . . . . . . . . 160 - B.22. Since draft-ietf-quic-transport-02 . . . . . . . . . . . 160 - B.23. Since draft-ietf-quic-transport-01 . . . . . . . . . . . 161 - B.24. Since draft-ietf-quic-transport-00 . . . . . . . . . . . 163 - B.25. Since draft-hamilton-quic-transport-protocol-01 . . . . . 163 - Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 163 - Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 163 - Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 164 + Appendix B. Sample ECN Validation Algorithm . . . . . . . . . . 147 + Appendix C. Change Log . . . . . . . . . . . . . . . . . . . . . 148 + C.1. Since draft-ietf-quic-transport-23 . . . . . . . . . . . 148 + C.2. Since draft-ietf-quic-transport-22 . . . . . . . . . . . 149 + C.3. Since draft-ietf-quic-transport-21 . . . . . . . . . . . 150 + C.4. Since draft-ietf-quic-transport-20 . . . . . . . . . . . 150 + C.5. Since draft-ietf-quic-transport-19 . . . . . . . . . . . 151 + C.6. Since draft-ietf-quic-transport-18 . . . . . . . . . . . 152 + C.7. Since draft-ietf-quic-transport-17 . . . . . . . . . . . 152 + C.8. Since draft-ietf-quic-transport-16 . . . . . . . . . . . 153 + C.9. Since draft-ietf-quic-transport-15 . . . . . . . . . . . 154 + C.10. Since draft-ietf-quic-transport-14 . . . . . . . . . . . 154 + C.11. Since draft-ietf-quic-transport-13 . . . . . . . . . . . 154 + C.12. Since draft-ietf-quic-transport-12 . . . . . . . . . . . 155 + + + +Iyengar & Thomson Expires 11 July 2020 [Page 5] + +Internet-Draft QUIC Transport Protocol January 2020 + + + C.13. Since draft-ietf-quic-transport-11 . . . . . . . . . . . 156 + C.14. Since draft-ietf-quic-transport-10 . . . . . . . . . . . 156 + C.15. Since draft-ietf-quic-transport-09 . . . . . . . . . . . 157 + C.16. Since draft-ietf-quic-transport-08 . . . . . . . . . . . 158 + C.17. Since draft-ietf-quic-transport-07 . . . . . . . . . . . 158 + C.18. Since draft-ietf-quic-transport-06 . . . . . . . . . . . 159 + C.19. Since draft-ietf-quic-transport-05 . . . . . . . . . . . 159 + C.20. Since draft-ietf-quic-transport-04 . . . . . . . . . . . 160 + C.21. Since draft-ietf-quic-transport-03 . . . . . . . . . . . 161 + C.22. Since draft-ietf-quic-transport-02 . . . . . . . . . . . 161 + C.23. Since draft-ietf-quic-transport-01 . . . . . . . . . . . 162 + C.24. Since draft-ietf-quic-transport-00 . . . . . . . . . . . 164 + C.25. Since draft-hamilton-quic-transport-protocol-01 . . . . . 164 + Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . 164 + Contributors . . . . . . . . . . . . . . . . . . . . . . . . . . 164 + Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 165 1. Introduction @@ -329,15 +330,16 @@ Internet-Draft QUIC Transport Protocol January 2020 - Section 3 provides a reference model for stream states, and - - Section 4 outlines the operation of flow control. -Iyengar & Thomson Expires 10 July 2020 [Page 6] +Iyengar & Thomson Expires 11 July 2020 [Page 6] Internet-Draft QUIC Transport Protocol January 2020 + - Section 4 outlines the operation of flow control. + * Connections are the context in which QUIC endpoints communicate. - Section 5 describes core concepts related to connections, @@ -387,9 +389,7 @@ Internet-Draft QUIC Transport Protocol January 2020 - - -Iyengar & Thomson Expires 10 July 2020 [Page 7] +Iyengar & Thomson Expires 11 July 2020 [Page 7] Internet-Draft QUIC Transport Protocol January 2020 @@ -445,7 +445,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 8] +Iyengar & Thomson Expires 11 July 2020 [Page 8] Internet-Draft QUIC Transport Protocol January 2020 @@ -501,7 +501,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 9] +Iyengar & Thomson Expires 11 July 2020 [Page 9] Internet-Draft QUIC Transport Protocol January 2020 @@ -557,7 +557,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 10] +Iyengar & Thomson Expires 11 July 2020 [Page 10] Internet-Draft QUIC Transport Protocol January 2020 @@ -613,7 +613,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 11] +Iyengar & Thomson Expires 11 July 2020 [Page 11] Internet-Draft QUIC Transport Protocol January 2020 @@ -669,7 +669,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 12] +Iyengar & Thomson Expires 11 July 2020 [Page 12] Internet-Draft QUIC Transport Protocol January 2020 @@ -725,7 +725,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 13] +Iyengar & Thomson Expires 11 July 2020 [Page 13] Internet-Draft QUIC Transport Protocol January 2020 @@ -781,7 +781,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 14] +Iyengar & Thomson Expires 11 July 2020 [Page 14] Internet-Draft QUIC Transport Protocol January 2020 @@ -837,7 +837,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 15] +Iyengar & Thomson Expires 11 July 2020 [Page 15] Internet-Draft QUIC Transport Protocol January 2020 @@ -893,7 +893,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 16] +Iyengar & Thomson Expires 11 July 2020 [Page 16] Internet-Draft QUIC Transport Protocol January 2020 @@ -949,7 +949,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 17] +Iyengar & Thomson Expires 11 July 2020 [Page 17] Internet-Draft QUIC Transport Protocol January 2020 @@ -1005,7 +1005,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 18] +Iyengar & Thomson Expires 11 July 2020 [Page 18] Internet-Draft QUIC Transport Protocol January 2020 @@ -1061,7 +1061,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 19] +Iyengar & Thomson Expires 11 July 2020 [Page 19] Internet-Draft QUIC Transport Protocol January 2020 @@ -1117,7 +1117,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 20] +Iyengar & Thomson Expires 11 July 2020 [Page 20] Internet-Draft QUIC Transport Protocol January 2020 @@ -1173,7 +1173,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 21] +Iyengar & Thomson Expires 11 July 2020 [Page 21] Internet-Draft QUIC Transport Protocol January 2020 @@ -1229,7 +1229,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 22] +Iyengar & Thomson Expires 11 July 2020 [Page 22] Internet-Draft QUIC Transport Protocol January 2020 @@ -1285,7 +1285,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 23] +Iyengar & Thomson Expires 11 July 2020 [Page 23] Internet-Draft QUIC Transport Protocol January 2020 @@ -1341,7 +1341,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 24] +Iyengar & Thomson Expires 11 July 2020 [Page 24] Internet-Draft QUIC Transport Protocol January 2020 @@ -1397,7 +1397,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 25] +Iyengar & Thomson Expires 11 July 2020 [Page 25] Internet-Draft QUIC Transport Protocol January 2020 @@ -1453,7 +1453,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 26] +Iyengar & Thomson Expires 11 July 2020 [Page 26] Internet-Draft QUIC Transport Protocol January 2020 @@ -1509,7 +1509,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 27] +Iyengar & Thomson Expires 11 July 2020 [Page 27] Internet-Draft QUIC Transport Protocol January 2020 @@ -1565,7 +1565,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 28] +Iyengar & Thomson Expires 11 July 2020 [Page 28] Internet-Draft QUIC Transport Protocol January 2020 @@ -1621,7 +1621,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 29] +Iyengar & Thomson Expires 11 July 2020 [Page 29] Internet-Draft QUIC Transport Protocol January 2020 @@ -1677,7 +1677,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 30] +Iyengar & Thomson Expires 11 July 2020 [Page 30] Internet-Draft QUIC Transport Protocol January 2020 @@ -1733,7 +1733,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 31] +Iyengar & Thomson Expires 11 July 2020 [Page 31] Internet-Draft QUIC Transport Protocol January 2020 @@ -1789,7 +1789,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 32] +Iyengar & Thomson Expires 11 July 2020 [Page 32] Internet-Draft QUIC Transport Protocol January 2020 @@ -1845,7 +1845,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 33] +Iyengar & Thomson Expires 11 July 2020 [Page 33] Internet-Draft QUIC Transport Protocol January 2020 @@ -1901,7 +1901,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 34] +Iyengar & Thomson Expires 11 July 2020 [Page 34] Internet-Draft QUIC Transport Protocol January 2020 @@ -1957,7 +1957,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 35] +Iyengar & Thomson Expires 11 July 2020 [Page 35] Internet-Draft QUIC Transport Protocol January 2020 @@ -2013,7 +2013,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 36] +Iyengar & Thomson Expires 11 July 2020 [Page 36] Internet-Draft QUIC Transport Protocol January 2020 @@ -2069,7 +2069,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 37] +Iyengar & Thomson Expires 11 July 2020 [Page 37] Internet-Draft QUIC Transport Protocol January 2020 @@ -2125,7 +2125,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 38] +Iyengar & Thomson Expires 11 July 2020 [Page 38] Internet-Draft QUIC Transport Protocol January 2020 @@ -2181,7 +2181,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 39] +Iyengar & Thomson Expires 11 July 2020 [Page 39] Internet-Draft QUIC Transport Protocol January 2020 @@ -2237,7 +2237,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 40] +Iyengar & Thomson Expires 11 July 2020 [Page 40] Internet-Draft QUIC Transport Protocol January 2020 @@ -2293,7 +2293,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 41] +Iyengar & Thomson Expires 11 July 2020 [Page 41] Internet-Draft QUIC Transport Protocol January 2020 @@ -2349,7 +2349,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 42] +Iyengar & Thomson Expires 11 July 2020 [Page 42] Internet-Draft QUIC Transport Protocol January 2020 @@ -2405,7 +2405,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 43] +Iyengar & Thomson Expires 11 July 2020 [Page 43] Internet-Draft QUIC Transport Protocol January 2020 @@ -2461,7 +2461,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 44] +Iyengar & Thomson Expires 11 July 2020 [Page 44] Internet-Draft QUIC Transport Protocol January 2020 @@ -2517,7 +2517,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 45] +Iyengar & Thomson Expires 11 July 2020 [Page 45] Internet-Draft QUIC Transport Protocol January 2020 @@ -2573,7 +2573,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 46] +Iyengar & Thomson Expires 11 July 2020 [Page 46] Internet-Draft QUIC Transport Protocol January 2020 @@ -2629,7 +2629,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 47] +Iyengar & Thomson Expires 11 July 2020 [Page 47] Internet-Draft QUIC Transport Protocol January 2020 @@ -2685,7 +2685,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 48] +Iyengar & Thomson Expires 11 July 2020 [Page 48] Internet-Draft QUIC Transport Protocol January 2020 @@ -2741,7 +2741,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 49] +Iyengar & Thomson Expires 11 July 2020 [Page 49] Internet-Draft QUIC Transport Protocol January 2020 @@ -2797,7 +2797,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 50] +Iyengar & Thomson Expires 11 July 2020 [Page 50] Internet-Draft QUIC Transport Protocol January 2020 @@ -2853,7 +2853,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 51] +Iyengar & Thomson Expires 11 July 2020 [Page 51] Internet-Draft QUIC Transport Protocol January 2020 @@ -2909,7 +2909,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 52] +Iyengar & Thomson Expires 11 July 2020 [Page 52] Internet-Draft QUIC Transport Protocol January 2020 @@ -2965,7 +2965,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 53] +Iyengar & Thomson Expires 11 July 2020 [Page 53] Internet-Draft QUIC Transport Protocol January 2020 @@ -3021,7 +3021,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 54] +Iyengar & Thomson Expires 11 July 2020 [Page 54] Internet-Draft QUIC Transport Protocol January 2020 @@ -3077,7 +3077,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 55] +Iyengar & Thomson Expires 11 July 2020 [Page 55] Internet-Draft QUIC Transport Protocol January 2020 @@ -3133,7 +3133,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 56] +Iyengar & Thomson Expires 11 July 2020 [Page 56] Internet-Draft QUIC Transport Protocol January 2020 @@ -3189,7 +3189,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 57] +Iyengar & Thomson Expires 11 July 2020 [Page 57] Internet-Draft QUIC Transport Protocol January 2020 @@ -3245,7 +3245,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 58] +Iyengar & Thomson Expires 11 July 2020 [Page 58] Internet-Draft QUIC Transport Protocol January 2020 @@ -3301,7 +3301,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 59] +Iyengar & Thomson Expires 11 July 2020 [Page 59] Internet-Draft QUIC Transport Protocol January 2020 @@ -3357,7 +3357,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 60] +Iyengar & Thomson Expires 11 July 2020 [Page 60] Internet-Draft QUIC Transport Protocol January 2020 @@ -3413,7 +3413,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 61] +Iyengar & Thomson Expires 11 July 2020 [Page 61] Internet-Draft QUIC Transport Protocol January 2020 @@ -3469,7 +3469,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 62] +Iyengar & Thomson Expires 11 July 2020 [Page 62] Internet-Draft QUIC Transport Protocol January 2020 @@ -3525,7 +3525,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 63] +Iyengar & Thomson Expires 11 July 2020 [Page 63] Internet-Draft QUIC Transport Protocol January 2020 @@ -3581,7 +3581,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 64] +Iyengar & Thomson Expires 11 July 2020 [Page 64] Internet-Draft QUIC Transport Protocol January 2020 @@ -3637,7 +3637,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 65] +Iyengar & Thomson Expires 11 July 2020 [Page 65] Internet-Draft QUIC Transport Protocol January 2020 @@ -3693,7 +3693,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 66] +Iyengar & Thomson Expires 11 July 2020 [Page 66] Internet-Draft QUIC Transport Protocol January 2020 @@ -3749,7 +3749,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 67] +Iyengar & Thomson Expires 11 July 2020 [Page 67] Internet-Draft QUIC Transport Protocol January 2020 @@ -3805,7 +3805,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 68] +Iyengar & Thomson Expires 11 July 2020 [Page 68] Internet-Draft QUIC Transport Protocol January 2020 @@ -3861,7 +3861,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 69] +Iyengar & Thomson Expires 11 July 2020 [Page 69] Internet-Draft QUIC Transport Protocol January 2020 @@ -3917,7 +3917,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 70] +Iyengar & Thomson Expires 11 July 2020 [Page 70] Internet-Draft QUIC Transport Protocol January 2020 @@ -3973,7 +3973,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 71] +Iyengar & Thomson Expires 11 July 2020 [Page 71] Internet-Draft QUIC Transport Protocol January 2020 @@ -4029,7 +4029,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 72] +Iyengar & Thomson Expires 11 July 2020 [Page 72] Internet-Draft QUIC Transport Protocol January 2020 @@ -4085,7 +4085,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 73] +Iyengar & Thomson Expires 11 July 2020 [Page 73] Internet-Draft QUIC Transport Protocol January 2020 @@ -4141,7 +4141,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 74] +Iyengar & Thomson Expires 11 July 2020 [Page 74] Internet-Draft QUIC Transport Protocol January 2020 @@ -4197,7 +4197,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 75] +Iyengar & Thomson Expires 11 July 2020 [Page 75] Internet-Draft QUIC Transport Protocol January 2020 @@ -4253,7 +4253,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 76] +Iyengar & Thomson Expires 11 July 2020 [Page 76] Internet-Draft QUIC Transport Protocol January 2020 @@ -4309,7 +4309,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 77] +Iyengar & Thomson Expires 11 July 2020 [Page 77] Internet-Draft QUIC Transport Protocol January 2020 @@ -4365,7 +4365,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 78] +Iyengar & Thomson Expires 11 July 2020 [Page 78] Internet-Draft QUIC Transport Protocol January 2020 @@ -4421,7 +4421,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 79] +Iyengar & Thomson Expires 11 July 2020 [Page 79] Internet-Draft QUIC Transport Protocol January 2020 @@ -4477,7 +4477,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 80] +Iyengar & Thomson Expires 11 July 2020 [Page 80] Internet-Draft QUIC Transport Protocol January 2020 @@ -4533,7 +4533,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 81] +Iyengar & Thomson Expires 11 July 2020 [Page 81] Internet-Draft QUIC Transport Protocol January 2020 @@ -4589,13 +4589,14 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 82] +Iyengar & Thomson Expires 11 July 2020 [Page 82] Internet-Draft QUIC Transport Protocol January 2020 establishment, when switching to a new server preferred address, and - on active connection migration to a new path. + on active connection migration to a new path. Appendix B describes + one possible algorithm for testing paths for ECN support. Even if an endpoint does not use ECN markings on packets it transmits, the endpoint MUST provide feedback about ECN markings @@ -4640,16 +4641,18 @@ Internet-Draft QUIC Transport Protocol January 2020 * For validation to succeed, the total increase in ECT(0), ECT(1), and CE counts MUST be no smaller than the total number of QUIC packets sent with an ECT codepoint that are newly acknowledged in - this ACK frame. This step detects any network remarking from - ECT(0), ECT(1), or CE codepoints to Not-ECT. -Iyengar & Thomson Expires 10 July 2020 [Page 83] + +Iyengar & Thomson Expires 11 July 2020 [Page 83] Internet-Draft QUIC Transport Protocol January 2020 + this ACK frame. This step detects any network remarking from + ECT(0), ECT(1), or CE codepoints to Not-ECT. + * Any increase in either ECT(0) or ECT(1) counts, plus any increase in the CE count, MUST be no smaller than the number of packets sent with the corresponding ECT codepoint that are newly @@ -4683,59 +4686,6 @@ Internet-Draft QUIC Transport Protocol January 2020 Even if validation fails, an endpoint MAY revalidate ECN on the same path at any later time in the connection. -13.4.2.4. Exemplary ECN Validation Algorithm - - Each time that an endpoint commences sending on a new network path, - it determines whether the path supports ECN. If the path supports - ECN, the goal is to use ECN. Endpoints might also periodically - reassess a path that was determined not support ECN. - - This section describes one method for testing new paths. This - algorithm is intended to show how a path might be tested for ECN - support. Endpoints can implement different methods. - - The path has an ECN state that is one of "testing", "unknown", - "failed", or "capable". In the "testing" and "capable" states the - endpoint sends packets with an ECT(0) marking; otherwise, the - endpoint sends unmarked packets. - - - -Iyengar & Thomson Expires 10 July 2020 [Page 84] - -Internet-Draft QUIC Transport Protocol January 2020 - - - To start testing a path, the ECN state is set to "testing" and - existing ECN counts are remembered as a baseline. It should not be - necessary to disregard the effect of packets sent prior to starting - testing, though it is necessary for a sender to remember what - markings were used for every packet that is acknowledged; see - Section 13.4.2.2. - - The testing period runs for a number of packets or round trip times - as determined by the endpoint. During this time, packets sent are - marked with ECT(0). The goal is to limit the duration of the testing - period, but to ensure that enough marked packets are sent that it is - likely that ECN counts will provide a clear indication of how the - path treats marked packets. - - After the testing period ends, the ECN state for the path becomes - "unknown". From the "unknown" state, successful validation of the - ECN counts an ACK frame (see Section 13.4.2.2) causes the ECN state - for the path to become "capable", unless no marked packet has been - acknowledged. - - At any point, if validation of ECN counts fails, the ECN state - becomes "failed". An endpoint can also mark the ECN state for a path - as "failed" if all marked packets are declared lost. - - Following this algorithm ensures that ECN is rarely disabled for - paths that properly support ECN. Any path that incorrectly modifies - markings will cause ECN to be disabled. For those rare cases where - marked packets are discarded by the path, the short duration of the - testing period limits the number of losses incurred. - 14. Packet Size The QUIC packet size includes the QUIC header and protected payload, @@ -4747,21 +4697,22 @@ Internet-Draft QUIC Transport Protocol January 2020 Section 12.2). Sending a UDP datagram of this size ensures that the network path from the client to the server supports a reasonable Maximum Transmission Unit (MTU). Padding datagrams also helps reduce - the amplitude of amplification attacks caused by server responses - toward an unverified client address; see Section 8. - - Datagrams containing Initial packets MAY exceed 1200 bytes if the - client believes that the Path Maximum Transmission Unit (PMTU) - supports the size that it chooses. -Iyengar & Thomson Expires 10 July 2020 [Page 85] +Iyengar & Thomson Expires 11 July 2020 [Page 84] Internet-Draft QUIC Transport Protocol January 2020 + the amplitude of amplification attacks caused by server responses + toward an unverified client address; see Section 8. + + Datagrams containing Initial packets MAY exceed 1200 bytes if the + client believes that the Path Maximum Transmission Unit (PMTU) + supports the size that it chooses. + A server MAY send a CONNECTION_CLOSE frame with error code PROTOCOL_VIOLATION in response to an Initial packet it receives from a client if the UDP datagram is smaller than 1200 bytes. It MUST NOT @@ -4803,21 +4754,21 @@ Internet-Draft QUIC Transport Protocol January 2020 therefore SHOULD maintain a maximum packet size for each combination of local and remote IP addresses. - If a QUIC endpoint determines that the PMTU between any pair of local - and remote IP addresses has fallen below the size needed to support - the smallest allowed maximum packet size, it MUST immediately cease - sending QUIC packets, except for PMTU probe packets, on the affected - path. An endpoint MAY terminate the connection if an alternative - path cannot be found. - -Iyengar & Thomson Expires 10 July 2020 [Page 86] +Iyengar & Thomson Expires 11 July 2020 [Page 85] Internet-Draft QUIC Transport Protocol January 2020 + If a QUIC endpoint determines that the PMTU between any pair of local + and remote IP addresses has fallen below the size needed to support + the smallest allowed maximum packet size, it MUST immediately cease + sending QUIC packets, except for PMTU probe packets, on the affected + path. An endpoint MAY terminate the connection if an alternative + path cannot be found. + 14.2. ICMP Packet Too Big Messages PMTU discovery [RFC1191] [RFC8201] relies on reception of ICMP @@ -4859,21 +4810,21 @@ Internet-Draft QUIC Transport Protocol January 2020 headers to use for validation (for example, the IP ID or UDP checksum). - The endpoint SHOULD ignore all ICMP messages that fail validation. - - An endpoint MUST NOT increase PMTU based on ICMP messages. Any - reduction in the QUIC maximum packet size MAY be provisional until - QUIC's loss detection algorithm determines that the quoted packet has - actually been lost. - -Iyengar & Thomson Expires 10 July 2020 [Page 87] +Iyengar & Thomson Expires 11 July 2020 [Page 86] Internet-Draft QUIC Transport Protocol January 2020 + The endpoint SHOULD ignore all ICMP messages that fail validation. + + An endpoint MUST NOT increase PMTU based on ICMP messages. Any + reduction in the QUIC maximum packet size MAY be provisional until + QUIC's loss detection algorithm determines that the quoted packet has + actually been lost. + 14.3. Datagram Packetization Layer PMTU Discovery Section 6.4 of [DPLPMTUD] provides considerations for implementing @@ -4914,6 +4865,15 @@ Internet-Draft QUIC Transport Protocol January 2020 QUIC versions are identified using a 32-bit unsigned number. + + + + +Iyengar & Thomson Expires 11 July 2020 [Page 87] + +Internet-Draft QUIC Transport Protocol January 2020 + + The version 0x00000000 is reserved to represent version negotiation. This version of the specification is identified by the number 0x00000001. @@ -4923,13 +4883,6 @@ Internet-Draft QUIC Transport Protocol January 2020 across all versions of the protocol are described in [QUIC-INVARIANTS]. - - -Iyengar & Thomson Expires 10 July 2020 [Page 88] - -Internet-Draft QUIC Transport Protocol January 2020 - - Version 0x00000001 of QUIC uses TLS as a cryptographic handshake protocol, as described in [QUIC-TLS]. @@ -4969,6 +4922,14 @@ Internet-Draft QUIC Transport Protocol January 2020 non-negative integer values. This encoding ensures that smaller integer values need fewer bytes to encode. + + + +Iyengar & Thomson Expires 11 July 2020 [Page 88] + +Internet-Draft QUIC Transport Protocol January 2020 + + The QUIC variable-length integer encoding reserves the two most significant bits of the first byte to encode the base 2 logarithm of the integer encoding length in bytes. The integer value is encoded @@ -4978,14 +4939,6 @@ Internet-Draft QUIC Transport Protocol January 2020 encode 6, 14, 30, or 62 bit values respectively. Table 4 summarizes the encoding properties. - - - -Iyengar & Thomson Expires 10 July 2020 [Page 89] - -Internet-Draft QUIC Transport Protocol January 2020 - - +------+--------+-------------+-----------------------+ | 2Bit | Length | Usable Bits | Range | +======+========+=============+=======================+ @@ -5026,6 +4979,13 @@ Internet-Draft QUIC Transport Protocol January 2020 The encoded packet number is protected as described in Section 5.4 of [QUIC-TLS]. + + +Iyengar & Thomson Expires 11 July 2020 [Page 89] + +Internet-Draft QUIC Transport Protocol January 2020 + + The sender MUST use a packet number size able to represent more than twice as large a range than the difference between the largest acknowledged packet and packet number being sent. A peer receiving @@ -5033,15 +4993,6 @@ Internet-Draft QUIC Transport Protocol January 2020 packet is delayed in transit such that it arrives after many higher- numbered packets have been received. An endpoint SHOULD use a large enough packet number encoding to allow the packet number to be - - - - -Iyengar & Thomson Expires 10 July 2020 [Page 90] - -Internet-Draft QUIC Transport Protocol January 2020 - - recovered even if the packet arrives after packets that are sent afterwards. @@ -5073,6 +5024,24 @@ Internet-Draft QUIC Transport Protocol January 2020 17.2. Long Header Packets + + + + + + + + + + + + + +Iyengar & Thomson Expires 11 July 2020 [Page 90] + +Internet-Draft QUIC Transport Protocol January 2020 + + 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 +-+-+-+-+-+-+-+-+ @@ -5091,13 +5060,6 @@ Internet-Draft QUIC Transport Protocol January 2020 Figure 9: Long Header Packet Format - - -Iyengar & Thomson Expires 10 July 2020 [Page 91] - -Internet-Draft QUIC Transport Protocol January 2020 - - Long headers are used for packets that are sent prior to the establishment of 1-RTT keys. Once both conditions are met, a sender switches to sending packets using the short header (Section 17.3). @@ -5128,6 +5090,14 @@ Internet-Draft QUIC Transport Protocol January 2020 bytes of the Destination Connection ID field that follows it. This length is encoded as an 8-bit unsigned integer. In QUIC version 1, this value MUST NOT exceed 20. Endpoints that receive + + + +Iyengar & Thomson Expires 11 July 2020 [Page 91] + +Internet-Draft QUIC Transport Protocol January 2020 + + a version 1 long header with a value larger than 20 MUST drop the packet. Servers SHOULD be able to read longer connection IDs from other QUIC versions in order to properly form a version @@ -5146,14 +5116,6 @@ Internet-Draft QUIC Transport Protocol January 2020 IDs from other QUIC versions in order to properly form a version negotiation packet. - - - -Iyengar & Thomson Expires 10 July 2020 [Page 92] - -Internet-Draft QUIC Transport Protocol January 2020 - - Source Connection ID: The Source Connection ID field follows the SCID Len and is between 0 and 20 bytes in length. Section 7.2 describes the use of this field in more detail. @@ -5183,6 +5145,15 @@ Internet-Draft QUIC Transport Protocol January 2020 The interpretation of the fields and the payload are specific to a version and packet type. While type-specific semantics for this + + + + +Iyengar & Thomson Expires 11 July 2020 [Page 92] + +Internet-Draft QUIC Transport Protocol January 2020 + + version are described in the following sections, several long-header packets in this version of QUIC contain these additional fields: @@ -5202,14 +5173,6 @@ Internet-Draft QUIC Transport Protocol January 2020 as an unsigned, two-bit integer that is one less than the length of the packet number field in bytes. That is, the length of the packet number field is the value of this field, plus one. These - - - -Iyengar & Thomson Expires 10 July 2020 [Page 93] - -Internet-Draft QUIC Transport Protocol January 2020 - - bits are protected using header protection (see Section 5.4 of [QUIC-TLS]). @@ -5235,6 +5198,18 @@ Internet-Draft QUIC Transport Protocol January 2020 The layout of a Version Negotiation packet is: + + + + + + + +Iyengar & Thomson Expires 11 July 2020 [Page 93] + +Internet-Draft QUIC Transport Protocol January 2020 + + 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 +-+-+-+-+-+-+-+-+ @@ -5259,13 +5234,6 @@ Internet-Draft QUIC Transport Protocol January 2020 | [Supported Version N (32)] ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - -Iyengar & Thomson Expires 10 July 2020 [Page 94] - -Internet-Draft QUIC Transport Protocol January 2020 - - Figure 10: Version Negotiation Packet The value in the Unused field is selected randomly by the server. @@ -5289,6 +5257,15 @@ Internet-Draft QUIC Transport Protocol January 2020 version 1 limit, Version Negotiation packets could carry Connection IDs that are longer than 20 bytes. + + + + +Iyengar & Thomson Expires 11 July 2020 [Page 94] + +Internet-Draft QUIC Transport Protocol January 2020 + + The remainder of the Version Negotiation packet is a list of 32-bit versions which the server supports. @@ -5312,16 +5289,6 @@ Internet-Draft QUIC Transport Protocol January 2020 carries the first CRYPTO frames sent by the client and server to perform key exchange, and carries ACKs in either direction. - - - - - -Iyengar & Thomson Expires 10 July 2020 [Page 95] - -Internet-Draft QUIC Transport Protocol January 2020 - - +-+-+-+-+-+-+-+-+ |1|1| 0 |R R|P P| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ @@ -5348,6 +5315,13 @@ Internet-Draft QUIC Transport Protocol January 2020 Figure 11: Initial Packet + + +Iyengar & Thomson Expires 11 July 2020 [Page 95] + +Internet-Draft QUIC Transport Protocol January 2020 + + The Initial packet contains a long header as well as the Length and Packet Number fields. The first byte contains the Reserved and Packet Number Length bits. Between the SCID and Length fields, there @@ -5371,13 +5345,6 @@ Internet-Draft QUIC Transport Protocol January 2020 provide confidentiality or integrity against on-path attackers, but provides some level of protection against off-path attackers. - - -Iyengar & Thomson Expires 10 July 2020 [Page 96] - -Internet-Draft QUIC Transport Protocol January 2020 - - The client and server use the Initial packet type for any packet that contains an initial cryptographic handshake message. This includes all cases where a new packet containing the initial cryptographic @@ -5403,6 +5370,14 @@ Internet-Draft QUIC Transport Protocol January 2020 Note that if the server sends a HelloRetryRequest, the client will send another series of Initial packets. These Initial packets will + + + +Iyengar & Thomson Expires 11 July 2020 [Page 96] + +Internet-Draft QUIC Transport Protocol January 2020 + + continue the cryptographic handshake and will contain CRYPTO frames starting at an offset matching the size of the CRYPTO frames sent in the first flight of Initial packets. @@ -5421,40 +5396,53 @@ Internet-Draft QUIC Transport Protocol January 2020 Any data in CRYPTO frames is discarded - and no longer retransmitted - when Initial keys are discarded. +17.2.3. 0-RTT + A 0-RTT packet uses long headers with a type value of 0x1, followed + by the Length and Packet Number fields. The first byte contains the + Reserved and Packet Number Length bits. It is used to carry "early" + data from the client to the server as part of the first flight, prior + to handshake completion. As part of the TLS handshake, the server + can accept or reject this early data. + See Section 2.3 of [TLS13] for a discussion of 0-RTT data and its + limitations. -Iyengar & Thomson Expires 10 July 2020 [Page 97] - -Internet-Draft QUIC Transport Protocol January 2020 -17.2.3. 0-RTT - A 0-RTT packet uses long headers with a type value of 0x1, followed - by the Length and Packet Number fields. The first byte contains the - Reserved and Packet Number Length bits. It is used to carry "early" - data from the client to the server as part of the first flight, prior - to handshake completion. As part of the TLS handshake, the server - can accept or reject this early data. - See Section 2.3 of [TLS13] for a discussion of 0-RTT data and its - limitations. - +-+-+-+-+-+-+-+-+ - |1|1| 1 |R R|P P| - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Version (32) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | DCID Len (8) | - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - | Destination Connection ID (0..160) ... - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + + + + + + + + + + + +Iyengar & Thomson Expires 11 July 2020 [Page 97] + +Internet-Draft QUIC Transport Protocol January 2020 + + + +-+-+-+-+-+-+-+-+ + |1|1| 1 |R R|P P| + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Version (32) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | DCID Len (8) | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + | Destination Connection ID (0..160) ... + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SCID Len (8) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Connection ID (0..160) ... @@ -5482,14 +5470,6 @@ Internet-Draft QUIC Transport Protocol January 2020 protection for all 0-RTT packets because the same key and nonce could be used to protect different content. - - - -Iyengar & Thomson Expires 10 July 2020 [Page 98] - -Internet-Draft QUIC Transport Protocol January 2020 - - A client only receives acknowledgments for its 0-RTT packets once the handshake is complete. Consequently, a server might expect 0-RTT packets to start with a packet number of 0. Therefore, in @@ -5502,6 +5482,14 @@ Internet-Draft QUIC Transport Protocol January 2020 A client MUST NOT send 0-RTT packets once it starts processing 1-RTT packets from the server. This means that 0-RTT packets cannot contain any response to frames from 1-RTT packets. For instance, a + + + +Iyengar & Thomson Expires 11 July 2020 [Page 98] + +Internet-Draft QUIC Transport Protocol January 2020 + + client cannot send an ACK frame in a 0-RTT packet, because that can only acknowledge a 1-RTT packet. An acknowledgment for a 1-RTT packet MUST be carried in a 1-RTT packet. @@ -5538,14 +5526,6 @@ Internet-Draft QUIC Transport Protocol January 2020 | Payload (*) ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - - -Iyengar & Thomson Expires 10 July 2020 [Page 99] - -Internet-Draft QUIC Transport Protocol January 2020 - - Figure 13: Handshake Protected Packet Once a client has received a Handshake packet from a server, it uses @@ -5557,6 +5537,15 @@ Internet-Draft QUIC Transport Protocol January 2020 Source Connection ID includes the connection ID that the sender of the packet wishes to use (see Section 7.2). + + + + +Iyengar & Thomson Expires 11 July 2020 [Page 99] + +Internet-Draft QUIC Transport Protocol January 2020 + + Handshake packets are their own packet number space, and thus the first Handshake packet sent by a server contains a packet number of 0. @@ -5576,32 +5565,6 @@ Internet-Draft QUIC Transport Protocol January 2020 It carries an address validation token created by the server. It is used by a server that wishes to perform a retry (see Section 8.1). - - - - - - - - - - - - - - - - - - - - - -Iyengar & Thomson Expires 10 July 2020 [Page 100] - -Internet-Draft QUIC Transport Protocol January 2020 - - 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 +-+-+-+-+-+-+-+-+ @@ -5631,6 +5594,14 @@ Internet-Draft QUIC Transport Protocol January 2020 server. In addition to the long header, it contains these additional fields: + + + +Iyengar & Thomson Expires 11 July 2020 [Page 100] + +Internet-Draft QUIC Transport Protocol January 2020 + + ODCID Len: The ODCID Len contains the length in bytes of the Original Destination Connection ID field that follows it. This length is encoded as a 8-bit unsigned integer. In QUIC version 1, @@ -5650,14 +5621,6 @@ Internet-Draft QUIC Transport Protocol January 2020 connection ID that the client included in the Source Connection ID of the Initial packet. - - - -Iyengar & Thomson Expires 10 July 2020 [Page 101] - -Internet-Draft QUIC Transport Protocol January 2020 - - The server includes a connection ID of its choice in the Source Connection ID field. This value MUST not be equal to the Destination Connection ID field of the packet sent by the client. A client MUST @@ -5688,6 +5651,13 @@ Internet-Draft QUIC Transport Protocol January 2020 includes the provided Retry Token to continue connection establishment. + + +Iyengar & Thomson Expires 11 July 2020 [Page 101] + +Internet-Draft QUIC Transport Protocol January 2020 + + A client sets the Destination Connection ID field of this Initial packet to the value from the Source Connection ID in the Retry packet. Changing Destination Connection ID also results in a change @@ -5705,15 +5675,6 @@ Internet-Draft QUIC Transport Protocol January 2020 MAY treat a packet that contains a different cryptographic handshake message as a connection error or discard it. - - - - -Iyengar & Thomson Expires 10 July 2020 [Page 102] - -Internet-Draft QUIC Transport Protocol January 2020 - - A client MAY attempt 0-RTT after receiving a Retry packet by sending 0-RTT packets to the connection ID provided by the server. A client MUST NOT change the cryptographic handshake message it sends in @@ -5744,6 +5705,15 @@ Internet-Draft QUIC Transport Protocol January 2020 This version of QUIC defines a single packet type which uses the short packet header. + + + + +Iyengar & Thomson Expires 11 July 2020 [Page 102] + +Internet-Draft QUIC Transport Protocol January 2020 + + 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 +-+-+-+-+-+-+-+-+ @@ -5762,14 +5732,6 @@ Internet-Draft QUIC Transport Protocol January 2020 negotiated. Packets that use the short header contain the following fields: - - - -Iyengar & Thomson Expires 10 July 2020 [Page 103] - -Internet-Draft QUIC Transport Protocol January 2020 - - Header Form: The most significant bit (0x80) of byte 0 is set to 0 for the short header. @@ -5800,6 +5762,14 @@ Internet-Draft QUIC Transport Protocol January 2020 a mask of 0x03) of byte 0 contain the length of the packet number, encoded as an unsigned, two-bit integer that is one less than the length of the packet number field in bytes. That is, the length + + + +Iyengar & Thomson Expires 11 July 2020 [Page 103] + +Internet-Draft QUIC Transport Protocol January 2020 + + of the packet number field is the value of this field, plus one. These bits are protected using header protection (see Section 5.4 of [QUIC-TLS]). @@ -5817,15 +5787,6 @@ Internet-Draft QUIC Transport Protocol January 2020 Protected Payload: Packets with a short header always include a 1-RTT protected payload. - - - - -Iyengar & Thomson Expires 10 July 2020 [Page 104] - -Internet-Draft QUIC Transport Protocol January 2020 - - The header form bit and the connection ID field of a short header packet are version-independent. The remaining fields are specific to the selected QUIC version. See [QUIC-INVARIANTS] for details on how @@ -5857,6 +5818,14 @@ Internet-Draft QUIC Transport Protocol January 2020 process performed at the beginning of the connection SHOULD be applied for all paths used by the connection. + + + +Iyengar & Thomson Expires 11 July 2020 [Page 104] + +Internet-Draft QUIC Transport Protocol January 2020 + + When the spin bit is disabled, endpoints MAY set the spin bit to any value, and MUST ignore any incoming value. It is RECOMMENDED that endpoints set the spin bit to a random value either chosen @@ -5874,14 +5843,6 @@ Internet-Draft QUIC Transport Protocol January 2020 highest packet number seen by the server from the client, it sets the spin value to be equal to the spin bit in the received packet. - - - -Iyengar & Thomson Expires 10 July 2020 [Page 105] - -Internet-Draft QUIC Transport Protocol January 2020 - - When a client receives a short header packet that increments the highest packet number seen by the client from the server, it sets the spin value to the inverse of the spin bit in the received packet. @@ -5903,6 +5864,24 @@ Internet-Draft QUIC Transport Protocol January 2020 are encoded as a length-prefixed sequence of transport parameters, as shown in Figure 16: + + + + + + + + + + + + + +Iyengar & Thomson Expires 11 July 2020 [Page 105] + +Internet-Draft QUIC Transport Protocol January 2020 + + 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 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ @@ -5931,13 +5910,6 @@ Internet-Draft QUIC Transport Protocol January 2020 | Transport Parameter Value (*) ... +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - - -Iyengar & Thomson Expires 10 July 2020 [Page 106] - -Internet-Draft QUIC Transport Protocol January 2020 - - Figure 17: Transport Parameter Encoding The Transport Param Length field contains the length of the Transport @@ -5958,6 +5930,14 @@ Internet-Draft QUIC Transport Protocol January 2020 This section details the transport parameters defined in this document. + + + +Iyengar & Thomson Expires 11 July 2020 [Page 106] + +Internet-Draft QUIC Transport Protocol January 2020 + + Many transport parameters listed here have integer values. Those transport parameters that are identified as integers use a variable- length integer encoding (see Section 16) and have a default value of @@ -5985,15 +5965,6 @@ Internet-Draft QUIC Transport Protocol January 2020 (Section 10.4) for the connection ID negotiated during the handshake. - - - - -Iyengar & Thomson Expires 10 July 2020 [Page 107] - -Internet-Draft QUIC Transport Protocol January 2020 - - max_packet_size (0x0003): The maximum packet size parameter is an integer value that limits the size of packets that the endpoint is willing to receive. This indicates that packets larger than this @@ -6015,6 +5986,14 @@ Internet-Draft QUIC Transport Protocol January 2020 sends the transport parameter. In client transport parameters, this applies to streams with an identifier with the least significant two bits set to 0x0; in server transport parameters, + + + +Iyengar & Thomson Expires 11 July 2020 [Page 107] + +Internet-Draft QUIC Transport Protocol January 2020 + + this applies to streams with the least significant two bits set to 0x1. @@ -6041,15 +6020,6 @@ Internet-Draft QUIC Transport Protocol January 2020 maximum number of bidirectional streams the peer may initiate. If this parameter is absent or zero, the peer cannot open bidirectional streams until a MAX_STREAMS frame is sent. Setting - - - - -Iyengar & Thomson Expires 10 July 2020 [Page 108] - -Internet-Draft QUIC Transport Protocol January 2020 - - this parameter is equivalent to sending a MAX_STREAMS (Section 19.11) of the corresponding type with the same value. @@ -6072,6 +6042,14 @@ Internet-Draft QUIC Transport Protocol January 2020 endpoint will delay sending acknowledgments. This value SHOULD include the receiver's expected delays in alarms firing. For example, if a receiver sets a timer for 5ms and alarms commonly + + + +Iyengar & Thomson Expires 11 July 2020 [Page 108] + +Internet-Draft QUIC Transport Protocol January 2020 + + 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. Values of 2^14 or greater are invalid. @@ -6101,7 +6079,29 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 109] + + + + + + + + + + + + + + + + + + + + + + +Iyengar & Thomson Expires 11 July 2020 [Page 109] Internet-Draft QUIC Transport Protocol January 2020 @@ -6157,7 +6157,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 110] +Iyengar & Thomson Expires 11 July 2020 [Page 110] Internet-Draft QUIC Transport Protocol January 2020 @@ -6213,7 +6213,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 111] +Iyengar & Thomson Expires 11 July 2020 [Page 111] Internet-Draft QUIC Transport Protocol January 2020 @@ -6269,7 +6269,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 112] +Iyengar & Thomson Expires 11 July 2020 [Page 112] Internet-Draft QUIC Transport Protocol January 2020 @@ -6325,7 +6325,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 113] +Iyengar & Thomson Expires 11 July 2020 [Page 113] Internet-Draft QUIC Transport Protocol January 2020 @@ -6381,7 +6381,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 114] +Iyengar & Thomson Expires 11 July 2020 [Page 114] Internet-Draft QUIC Transport Protocol January 2020 @@ -6437,7 +6437,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 115] +Iyengar & Thomson Expires 11 July 2020 [Page 115] Internet-Draft QUIC Transport Protocol January 2020 @@ -6493,7 +6493,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 116] +Iyengar & Thomson Expires 11 July 2020 [Page 116] Internet-Draft QUIC Transport Protocol January 2020 @@ -6549,7 +6549,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 117] +Iyengar & Thomson Expires 11 July 2020 [Page 117] Internet-Draft QUIC Transport Protocol January 2020 @@ -6605,7 +6605,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 118] +Iyengar & Thomson Expires 11 July 2020 [Page 118] Internet-Draft QUIC Transport Protocol January 2020 @@ -6661,7 +6661,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 119] +Iyengar & Thomson Expires 11 July 2020 [Page 119] Internet-Draft QUIC Transport Protocol January 2020 @@ -6717,7 +6717,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 120] +Iyengar & Thomson Expires 11 July 2020 [Page 120] Internet-Draft QUIC Transport Protocol January 2020 @@ -6773,7 +6773,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 121] +Iyengar & Thomson Expires 11 July 2020 [Page 121] Internet-Draft QUIC Transport Protocol January 2020 @@ -6829,7 +6829,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 122] +Iyengar & Thomson Expires 11 July 2020 [Page 122] Internet-Draft QUIC Transport Protocol January 2020 @@ -6885,7 +6885,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 123] +Iyengar & Thomson Expires 11 July 2020 [Page 123] Internet-Draft QUIC Transport Protocol January 2020 @@ -6941,7 +6941,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 124] +Iyengar & Thomson Expires 11 July 2020 [Page 124] Internet-Draft QUIC Transport Protocol January 2020 @@ -6997,7 +6997,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 125] +Iyengar & Thomson Expires 11 July 2020 [Page 125] Internet-Draft QUIC Transport Protocol January 2020 @@ -7053,7 +7053,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 126] +Iyengar & Thomson Expires 11 July 2020 [Page 126] Internet-Draft QUIC Transport Protocol January 2020 @@ -7109,7 +7109,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 127] +Iyengar & Thomson Expires 11 July 2020 [Page 127] Internet-Draft QUIC Transport Protocol January 2020 @@ -7165,7 +7165,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 128] +Iyengar & Thomson Expires 11 July 2020 [Page 128] Internet-Draft QUIC Transport Protocol January 2020 @@ -7221,7 +7221,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 129] +Iyengar & Thomson Expires 11 July 2020 [Page 129] Internet-Draft QUIC Transport Protocol January 2020 @@ -7277,7 +7277,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 130] +Iyengar & Thomson Expires 11 July 2020 [Page 130] Internet-Draft QUIC Transport Protocol January 2020 @@ -7333,7 +7333,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 131] +Iyengar & Thomson Expires 11 July 2020 [Page 131] Internet-Draft QUIC Transport Protocol January 2020 @@ -7389,7 +7389,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 132] +Iyengar & Thomson Expires 11 July 2020 [Page 132] Internet-Draft QUIC Transport Protocol January 2020 @@ -7445,7 +7445,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 133] +Iyengar & Thomson Expires 11 July 2020 [Page 133] Internet-Draft QUIC Transport Protocol January 2020 @@ -7501,7 +7501,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 134] +Iyengar & Thomson Expires 11 July 2020 [Page 134] Internet-Draft QUIC Transport Protocol January 2020 @@ -7557,7 +7557,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 135] +Iyengar & Thomson Expires 11 July 2020 [Page 135] Internet-Draft QUIC Transport Protocol January 2020 @@ -7613,7 +7613,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 136] +Iyengar & Thomson Expires 11 July 2020 [Page 136] Internet-Draft QUIC Transport Protocol January 2020 @@ -7669,7 +7669,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 137] +Iyengar & Thomson Expires 11 July 2020 [Page 137] Internet-Draft QUIC Transport Protocol January 2020 @@ -7725,7 +7725,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 138] +Iyengar & Thomson Expires 11 July 2020 [Page 138] Internet-Draft QUIC Transport Protocol January 2020 @@ -7781,7 +7781,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 139] +Iyengar & Thomson Expires 11 July 2020 [Page 139] Internet-Draft QUIC Transport Protocol January 2020 @@ -7837,7 +7837,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 140] +Iyengar & Thomson Expires 11 July 2020 [Page 140] Internet-Draft QUIC Transport Protocol January 2020 @@ -7893,7 +7893,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 141] +Iyengar & Thomson Expires 11 July 2020 [Page 141] Internet-Draft QUIC Transport Protocol January 2020 @@ -7949,7 +7949,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 142] +Iyengar & Thomson Expires 11 July 2020 [Page 142] Internet-Draft QUIC Transport Protocol January 2020 @@ -7968,13 +7968,13 @@ Internet-Draft QUIC Transport Protocol January 2020 [QUIC-RECOVERY] Iyengar, J., Ed. and I. Swett, Ed., "QUIC Loss Detection and Congestion Control", Work in Progress, Internet-Draft, - draft-ietf-quic-recovery-latest, 7 January 2020, + draft-ietf-quic-recovery-latest, 8 January 2020, . [QUIC-TLS] Thomson, M., Ed. and S. Turner, Ed., "Using Transport Layer Security (TLS) to Secure QUIC", Work in Progress, - Internet-Draft, draft-ietf-quic-tls-latest, 7 January + Internet-Draft, draft-ietf-quic-tls-latest, 8 January 2020, . @@ -8005,7 +8005,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 143] +Iyengar & Thomson Expires 11 July 2020 [Page 143] Internet-Draft QUIC Transport Protocol January 2020 @@ -8061,7 +8061,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 144] +Iyengar & Thomson Expires 11 July 2020 [Page 144] Internet-Draft QUIC Transport Protocol January 2020 @@ -8069,7 +8069,7 @@ Internet-Draft QUIC Transport Protocol January 2020 [QUIC-INVARIANTS] Thomson, M., "Version-Independent Properties of QUIC", Work in Progress, Internet-Draft, draft-ietf-quic- - invariants-latest, 7 January 2020, + invariants-latest, 8 January 2020, . @@ -8117,7 +8117,7 @@ Internet-Draft QUIC Transport Protocol January 2020 -Iyengar & Thomson Expires 10 July 2020 [Page 145] +Iyengar & Thomson Expires 11 July 2020 [Page 145] Internet-Draft QUIC Transport Protocol January 2020 @@ -8173,7 +8173,7 @@ Appendix A. Sample Packet Number Decoding Algorithm -Iyengar & Thomson Expires 10 July 2020 [Page 146] +Iyengar & Thomson Expires 11 July 2020 [Page 146] Internet-Draft QUIC Transport Protocol January 2020 @@ -8203,14 +8203,65 @@ Internet-Draft QUIC Transport Protocol January 2020 return candidate_pn - pn_win return candidate_pn -Appendix B. Change Log +Appendix B. Sample ECN Validation Algorithm + + Each time an endpoint commences sending on a new network path, it + determines whether the path supports ECN; see Section 13.4. If the + path supports ECN, the goal is to use ECN. Endpoints might also + periodically reassess a path that was determined not support ECN. + + This section describes one method for testing new paths. This + algorithm is intended to show how a path might be tested for ECN + support. Endpoints can implement different methods. + + The path is assigned an ECN state that is one of "testing", + "unknown", "failed", or "capable". On paths with a "testing" or + "capable" state the endpoint sends packets with an ECT marking, by + default ECT(0); otherwise, the endpoint sends unmarked packets. + + To start testing a path, the ECN state is set to "testing" and + existing ECN counts are remembered as a baseline. + + The testing period runs for a number of packets or round-trip times, + as determined by the endpoint. The goal is not to limit the duration + of the testing period, but to ensure that enough marked packets are + sent for received ECN counts to provide a clear indication of how the + + + +Iyengar & Thomson Expires 11 July 2020 [Page 147] + +Internet-Draft QUIC Transport Protocol January 2020 + + + path treats marked packets. Section 13.4.2.2 suggests limiting this + to 10 packets or 3 round-trip times. + + After the testing period ends, the ECN state for the path becomes + "unknown". From the "unknown" state, successful validation of the + ECN counts an ACK frame (see Section 13.4.2.2) causes the ECN state + for the path to become "capable", unless no marked packet has been + acknowledged. + + If validation of ECN counts fails at any time, the ECN state for the + affected path becomes "failed". An endpoint can also mark the ECN + state for a path as "failed" if marked packets are all declared lost + or if they are all CE marked. + + Following this algorithm ensures that ECN is rarely disabled for + paths that properly support ECN. Any path that incorrectly modifies + markings will cause ECN to be disabled. For those rare cases where + marked packets are discarded by the path, the short duration of the + testing period limits the number of losses incurred. + +Appendix C. Change Log *RFC Editor's Note:* Please remove this section prior to publication of a final version of this document. Issue and pull request numbers are listed with a leading octothorp. -B.1. Since draft-ietf-quic-transport-23 +C.1. Since draft-ietf-quic-transport-23 * Allow ClientHello to span multiple packets (#2928, #3045) @@ -8225,21 +8276,20 @@ B.1. Since draft-ietf-quic-transport-23 - tokens cannot be reused (#2785, #2968) + * Clearer rules for sharing of UDP ports and use of connection IDs + when doing so (#2844, #2851) + * A new connection ID is necessary when responding to migration + (#2778, #2969) -Iyengar & Thomson Expires 10 July 2020 [Page 147] + +Iyengar & Thomson Expires 11 July 2020 [Page 148] Internet-Draft QUIC Transport Protocol January 2020 - * Clearer rules for sharing of UDP ports and use of connection IDs - when doing so (#2844, #2851) - - * A new connection ID is necessary when responding to migration - (#2778, #2969) - * Stronger requirements for connection ID retirement (#3046, #3096) * NEW_TOKEN cannot be empty (#2978, #2977) @@ -8255,7 +8305,7 @@ Internet-Draft QUIC Transport Protocol January 2020 * Servers have to change connection IDs in Retry (#2837, #3147) -B.2. Since draft-ietf-quic-transport-22 +C.2. Since draft-ietf-quic-transport-22 * Rules for preventing correlation by connection ID tightened (#2084, #2929) @@ -8282,19 +8332,19 @@ B.2. Since draft-ietf-quic-transport-22 * A maximum ACK delay of 0 is used for handshake packet number spaces (#2646, #2638) + * Improved rules for use of congestion control state on new paths + (#2685, #2918) + * Removed recommendation to coordinate spin for multiple connections + that share a path (#2763, #2882) -Iyengar & Thomson Expires 10 July 2020 [Page 148] - -Internet-Draft QUIC Transport Protocol January 2020 - * Improved rules for use of congestion control state on new paths - (#2685, #2918) +Iyengar & Thomson Expires 11 July 2020 [Page 149] + +Internet-Draft QUIC Transport Protocol January 2020 - * Removed recommendation to coordinate spin for multiple connections - that share a path (#2763, #2882) * Allow smaller stateless resets and recommend a smaller minimum on packets that might trigger a stateless reset (#2770, #2869, #2927, @@ -8317,12 +8367,12 @@ Internet-Draft QUIC Transport Protocol January 2020 * Moved ACK generation guidance from recovery draft to transport draft (#1860, #2916). -B.3. Since draft-ietf-quic-transport-21 +C.3. Since draft-ietf-quic-transport-21 * Connection ID lengths are now one octet, but limited in version 1 to 20 octets of length (#2736, #2749) -B.4. Since draft-ietf-quic-transport-20 +C.4. Since draft-ietf-quic-transport-20 * Error codes are encoded as variable-length integers (#2672, #2680) @@ -8338,18 +8388,19 @@ B.4. Since draft-ietf-quic-transport-20 * More normative language about use of stateless reset (#2471, #2574) + * Allow reuse of stateless reset tokens (#2732, #2733) + * Allow, but not require, enforcing non-duplicate transport + parameters (#2689, #2691) -Iyengar & Thomson Expires 10 July 2020 [Page 149] - -Internet-Draft QUIC Transport Protocol January 2020 - * Allow reuse of stateless reset tokens (#2732, #2733) - * Allow, but not require, enforcing non-duplicate transport - parameters (#2689, #2691) +Iyengar & Thomson Expires 11 July 2020 [Page 150] + +Internet-Draft QUIC Transport Protocol January 2020 + * Added an active_connection_id_limit transport parameter (#1994, #1998) @@ -8374,7 +8425,7 @@ Internet-Draft QUIC Transport Protocol January 2020 * Document hack for enabling routing of ICMP when doing PMTU probing (#1243, #2402) -B.5. Since draft-ietf-quic-transport-19 +C.5. Since draft-ietf-quic-transport-19 * Refine discussion of 0-RTT transport parameters (#2467, #2464) @@ -8393,24 +8444,23 @@ B.5. Since draft-ietf-quic-transport-19 * The "QUIC bit" is ignored in Version Negotiation (#2400, #2561) + * Initial packets from clients need to be padded to 1200 unless a + Handshake packet is sent as well (#2522, #2523) + + * CRYPTO frames can be discarded if too much data is buffered + (#1834, #2524) -Iyengar & Thomson Expires 10 July 2020 [Page 150] +Iyengar & Thomson Expires 11 July 2020 [Page 151] Internet-Draft QUIC Transport Protocol January 2020 - * Initial packets from clients need to be padded to 1200 unless a - Handshake packet is sent as well (#2522, #2523) - - * CRYPTO frames can be discarded if too much data is buffered - (#1834, #2524) - * Stateless reset uses a short header packet (#2599, #2600) -B.6. Since draft-ietf-quic-transport-18 +C.6. Since draft-ietf-quic-transport-18 * Removed version negotiation; version negotiation, including authentication of the result, will be addressed in the next @@ -8429,7 +8479,7 @@ B.6. Since draft-ietf-quic-transport-18 * Increased the set of permissible frames in 0-RTT (#2344, #2355) -B.7. Since draft-ietf-quic-transport-17 +C.7. Since draft-ietf-quic-transport-17 * Stream-related errors now use STREAM_STATE_ERROR (#2305) @@ -8450,14 +8500,6 @@ B.7. Since draft-ietf-quic-transport-17 * Disable ECN count verification for packets that arrive out of order (#2198, #2215) - - - -Iyengar & Thomson Expires 10 July 2020 [Page 151] - -Internet-Draft QUIC Transport Protocol January 2020 - - * Use Probe Timeout (PTO) instead of RTO (#2206, #2238) * Loosen constraints on retransmission of ACK ranges (#2199, #2245) @@ -8465,6 +8507,13 @@ Internet-Draft QUIC Transport Protocol January 2020 * Limit Retry and Version Negotiation to once per datagram (#2259, #2303) + + +Iyengar & Thomson Expires 11 July 2020 [Page 152] + +Internet-Draft QUIC Transport Protocol January 2020 + + * Set a maximum value for max_ack_delay transport parameter (#2282, #2301) @@ -8476,7 +8525,7 @@ Internet-Draft QUIC Transport Protocol January 2020 * ACK of non-existent packet is illegal (#2298, #2302) -B.8. Since draft-ietf-quic-transport-16 +C.8. Since draft-ietf-quic-transport-16 * Stream limits are defined as counts, not maximums (#1850, #1906) @@ -8506,20 +8555,20 @@ B.8. Since draft-ietf-quic-transport-16 - Move packet number length to first byte + - Move ODCIL to first byte of retry packets + - Simplify packet number protection (#1575) + * Allow STOP_SENDING to open a remote bidirectional stream (#1797, + #2013) -Iyengar & Thomson Expires 10 July 2020 [Page 152] - -Internet-Draft QUIC Transport Protocol January 2020 - - Move ODCIL to first byte of retry packets - - Simplify packet number protection (#1575) +Iyengar & Thomson Expires 11 July 2020 [Page 153] + +Internet-Draft QUIC Transport Protocol January 2020 - * Allow STOP_SENDING to open a remote bidirectional stream (#1797, - #2013) * Added mitigation for off-path migration attacks (#1278, #1749, #2033) @@ -8539,11 +8588,11 @@ Internet-Draft QUIC Transport Protocol January 2020 * ICMP PTB validation clarifications (#2161, #2109, #2108) -B.9. Since draft-ietf-quic-transport-15 +C.9. Since draft-ietf-quic-transport-15 Substantial editorial reorganization; no technical changes. -B.10. Since draft-ietf-quic-transport-14 +C.10. Since draft-ietf-quic-transport-14 * Merge ACK and ACK_ECN (#1778, #1801) @@ -8562,15 +8611,7 @@ B.10. Since draft-ietf-quic-transport-14 * Prevent handshake deadlock (#1764, #1824) - - - -Iyengar & Thomson Expires 10 July 2020 [Page 153] - -Internet-Draft QUIC Transport Protocol January 2020 - - -B.11. Since draft-ietf-quic-transport-13 +C.11. Since draft-ietf-quic-transport-13 * Streams open when higher-numbered streams of the same type open (#1342, #1549) @@ -8578,6 +8619,13 @@ B.11. Since draft-ietf-quic-transport-13 * Split initial stream flow control limit into 3 transport parameters (#1016, #1542) + + +Iyengar & Thomson Expires 11 July 2020 [Page 154] + +Internet-Draft QUIC Transport Protocol January 2020 + + * All flow control transport parameters are optional (#1610) * Removed UNSOLICITED_PATH_RESPONSE error code (#1265, #1539) @@ -8608,7 +8656,7 @@ B.11. Since draft-ietf-quic-transport-13 * Remove frame type field from APPLICATION_CLOSE (#1508, #1528) -B.12. Since draft-ietf-quic-transport-12 +C.12. Since draft-ietf-quic-transport-12 * Changes to integration of the TLS handshake (#829, #1018, #1094, #1165, #1190, #1233, #1242, #1252, #1450, #1458) @@ -8618,14 +8666,6 @@ B.12. Since draft-ietf-quic-transport-12 - QUIC packet protection is used in place of TLS record protection - - - -Iyengar & Thomson Expires 10 July 2020 [Page 154] - -Internet-Draft QUIC Transport Protocol January 2020 - - - Separate QUIC packet number spaces are used for the handshake - Changed Retry to be independent of the cryptographic handshake @@ -8635,6 +8675,13 @@ Internet-Draft QUIC Transport Protocol January 2020 - Limit the use of HelloRetryRequest to address TLS needs (like key shares) + + +Iyengar & Thomson Expires 11 July 2020 [Page 155] + +Internet-Draft QUIC Transport Protocol January 2020 + + * Enable server to transition connections to a preferred address (#560, #1251, #1373) @@ -8659,7 +8706,7 @@ Internet-Draft QUIC Transport Protocol January 2020 * Added frame type extension mechanism (#58, #1473) -B.13. Since draft-ietf-quic-transport-11 +C.13. Since draft-ietf-quic-transport-11 * Enable server to transition connections to a preferred address (#560, #1251) @@ -8671,16 +8718,7 @@ B.13. Since draft-ietf-quic-transport-11 * STREAM frames can now be empty (#1350) -B.14. Since draft-ietf-quic-transport-10 - - - - - -Iyengar & Thomson Expires 10 July 2020 [Page 155] - -Internet-Draft QUIC Transport Protocol January 2020 - +C.14. Since draft-ietf-quic-transport-10 * Swap payload length and packed number fields in long header (#1294) @@ -8692,6 +8730,14 @@ Internet-Draft QUIC Transport Protocol January 2020 * Coalescing multiple QUIC packets in a UDP datagram (#1262, #1285) + + + +Iyengar & Thomson Expires 11 July 2020 [Page 156] + +Internet-Draft QUIC Transport Protocol January 2020 + + * A more complete connection migration (#1249) * Refine opportunistic ACK defense text (#305, #1030, #1185) @@ -8716,7 +8762,7 @@ Internet-Draft QUIC Transport Protocol January 2020 * Remove implication that Version Negotiation is sent when a packet of the wrong version is received (#1197) -B.15. Since draft-ietf-quic-transport-09 +C.15. Since draft-ietf-quic-transport-09 * Added PATH_CHALLENGE and PATH_RESPONSE frames to replace PING with Data and PONG frame. Changed ACK frame type from 0x0e to 0x0d. @@ -8730,14 +8776,6 @@ B.15. Since draft-ietf-quic-transport-09 * Rework of packet handling and version negotiation (#1038) - - - -Iyengar & Thomson Expires 10 July 2020 [Page 156] - -Internet-Draft QUIC Transport Protocol January 2020 - - * Stream 0 is now exempt from flow control until the handshake completes (#1074, #725, #825, #1082) @@ -8748,10 +8786,18 @@ Internet-Draft QUIC Transport Protocol January 2020 * Endpoints now set the connection ID that their peer uses. Connection IDs are variable length. Removed the + + + +Iyengar & Thomson Expires 11 July 2020 [Page 157] + +Internet-Draft QUIC Transport Protocol January 2020 + + omit_connection_id transport parameter and the corresponding short header flag. (#1089, #1052, #1146, #821, #745, #821, #1166, #1151) -B.16. Since draft-ietf-quic-transport-08 +C.16. Since draft-ietf-quic-transport-08 * Clarified requirements for BLOCKED usage (#65, #924) @@ -8779,21 +8825,12 @@ B.16. Since draft-ietf-quic-transport-08 * Removed transport parameters from NewSessionTicket (#1015) -B.17. Since draft-ietf-quic-transport-07 +C.17. Since draft-ietf-quic-transport-07 * The long header now has version before packet number (#926, #939) * Rename and consolidate packet types (#846, #822, #847) - - - - -Iyengar & Thomson Expires 10 July 2020 [Page 157] - -Internet-Draft QUIC Transport Protocol January 2020 - - * Packet types are assigned new codepoints and the Connection ID Flag is inverted (#426, #956) @@ -8806,6 +8843,13 @@ Internet-Draft QUIC Transport Protocol January 2020 - Stream limits now have separate uni- and bi-directional transport parameters (#909, #958) + + +Iyengar & Thomson Expires 11 July 2020 [Page 158] + +Internet-Draft QUIC Transport Protocol January 2020 + + - Stream limit transport parameters are now optional and default to 0 (#970, #971) @@ -8832,7 +8876,7 @@ Internet-Draft QUIC Transport Protocol January 2020 * Increased the range over which packet numbers are randomized (#864, #850, #964) -B.18. Since draft-ietf-quic-transport-06 +C.18. Since draft-ietf-quic-transport-06 * Replaced FNV-1a with AES-GCM for all "Cleartext" packets (#554) @@ -8842,14 +8886,6 @@ B.18. Since draft-ietf-quic-transport-06 * 1-RTT-protected long header types removed (#848) - - - -Iyengar & Thomson Expires 10 July 2020 [Page 158] - -Internet-Draft QUIC Transport Protocol January 2020 - - * No acknowledgments during draining period (#852) * Remove "application close" as a separate close type (#854) @@ -8858,10 +8894,18 @@ Internet-Draft QUIC Transport Protocol January 2020 * Require transport parameters to only appear once (#792) -B.19. Since draft-ietf-quic-transport-05 +C.19. Since draft-ietf-quic-transport-05 * Stateless token is server-only (#726) + + + +Iyengar & Thomson Expires 11 July 2020 [Page 159] + +Internet-Draft QUIC Transport Protocol January 2020 + + * Refactor section on connection termination (#733, #748, #328, #177) @@ -8873,7 +8917,7 @@ B.19. Since draft-ietf-quic-transport-05 * Clarify Keep-alive requirements (#729) -B.20. Since draft-ietf-quic-transport-04 +C.20. Since draft-ietf-quic-transport-04 * Introduce STOP_SENDING frame, RESET_STREAM only resets in one direction (#165) @@ -8897,15 +8941,6 @@ B.20. Since draft-ietf-quic-transport-04 * Clarifications to the stream state machine (#572, #571) - - - - -Iyengar & Thomson Expires 10 July 2020 [Page 159] - -Internet-Draft QUIC Transport Protocol January 2020 - - * Increased the maximum length of the Largest Acknowledged field in ACK frames to 64 bits (#629) @@ -8916,13 +8951,24 @@ Internet-Draft QUIC Transport Protocol January 2020 * Update labels used in HKDF-Expand-Label to match TLS 1.3 (#642) -B.21. Since draft-ietf-quic-transport-03 + + + + + + +Iyengar & Thomson Expires 11 July 2020 [Page 160] + +Internet-Draft QUIC Transport Protocol January 2020 + + +C.21. Since draft-ietf-quic-transport-03 * Change STREAM and RESET_STREAM layout * Add MAX_STREAM_ID settings -B.22. Since draft-ietf-quic-transport-02 +C.22. Since draft-ietf-quic-transport-02 * The size of the initial packet payload has a fixed minimum (#267, #472) @@ -8955,13 +9001,6 @@ B.22. Since draft-ietf-quic-transport-02 - BLOCKED split to match WINDOW_UPDATE split (#454) - - -Iyengar & Thomson Expires 10 July 2020 [Page 160] - -Internet-Draft QUIC Transport Protocol January 2020 - - - Define STREAM_ID_NEEDED frame (#455) * A NEW_CONNECTION_ID frame supports connection migration without @@ -8970,12 +9009,21 @@ Internet-Draft QUIC Transport Protocol January 2020 * Transport parameters for 0-RTT are retained from a previous connection (#405, #513, #512) + + + + +Iyengar & Thomson Expires 11 July 2020 [Page 161] + +Internet-Draft QUIC Transport Protocol January 2020 + + - A client in 0-RTT no longer required to reset excess streams (#425, #479) * Expanded security considerations (#440, #444, #445, #448) -B.23. Since draft-ietf-quic-transport-01 +C.23. Since draft-ietf-quic-transport-01 * Defined short and long packet headers (#40, #148, #361) @@ -9009,15 +9057,6 @@ B.23. Since draft-ietf-quic-transport-01 * Path MTU Discovery (#64, #106) - - - - -Iyengar & Thomson Expires 10 July 2020 [Page 161] - -Internet-Draft QUIC Transport Protocol January 2020 - - * The initial handshake packet from the client needs to fit in a single packet (#338) @@ -9027,6 +9066,14 @@ Internet-Draft QUIC Transport Protocol January 2020 * Require that frames are processed when packets are acknowledged (#381, #341) + + + +Iyengar & Thomson Expires 11 July 2020 [Page 162] + +Internet-Draft QUIC Transport Protocol January 2020 + + * Removed the STOP_WAITING frame (#66) * Don't require retransmission of old timestamps for lost ACK frames @@ -9067,13 +9114,6 @@ Internet-Draft QUIC Transport Protocol January 2020 * Moved length-determining fields to the start of STREAM and ACK (#168, #277) - - -Iyengar & Thomson Expires 10 July 2020 [Page 162] - -Internet-Draft QUIC Transport Protocol January 2020 - - * Added the ability to pad between frames (#158, #276) * Remove error code and reason phrase from GOAWAY (#352, #355) @@ -9083,10 +9123,17 @@ Internet-Draft QUIC Transport Protocol January 2020 * Error codes for RESET_STREAM and CONNECTION_CLOSE are now at a consistent offset (#249) + + +Iyengar & Thomson Expires 11 July 2020 [Page 163] + +Internet-Draft QUIC Transport Protocol January 2020 + + * Defined priority as the responsibility of the application protocol (#104, #303) -B.24. Since draft-ietf-quic-transport-00 +C.24. Since draft-ietf-quic-transport-00 * Replaced DIVERSIFICATION_NONCE flag with KEY_PHASE flag @@ -9098,7 +9145,7 @@ B.24. Since draft-ietf-quic-transport-00 * Use big endian for all numeric values -B.25. Since draft-hamilton-quic-transport-protocol-01 +C.25. Since draft-hamilton-quic-transport-protocol-01 * Adopted as base for draft-ietf-quic-tls @@ -9123,13 +9170,6 @@ Contributors The original authors of this specification were Ryan Hamilton, Jana Iyengar, Ian Swett, and Alyssa Wilk. - - -Iyengar & Thomson Expires 10 July 2020 [Page 163] - -Internet-Draft QUIC Transport Protocol January 2020 - - The original design and rationale behind this protocol draw significantly from work by Jim Roskind [EARLY-DESIGN]. In alphabetical order, the contributors to the pre-IETF QUIC project at @@ -9139,6 +9179,13 @@ Internet-Draft QUIC Transport Protocol January 2020 Victor Vasiliev, Antonio Vicente, Patrik Westin, Alyssa Wilk, Dale Worley, Fan Yang, Dan Zhang, Daniel Ziegler. + + +Iyengar & Thomson Expires 11 July 2020 [Page 164] + +Internet-Draft QUIC Transport Protocol January 2020 + + Authors' Addresses Jana Iyengar (editor) @@ -9181,4 +9228,13 @@ Authors' Addresses -Iyengar & Thomson Expires 10 July 2020 [Page 164] + + + + + + + + + +Iyengar & Thomson Expires 11 July 2020 [Page 165] diff --git a/index.html b/index.html index 34c106889a..0b1eab48d2 100644 --- a/index.html +++ b/index.html @@ -73,696 +73,696 @@

    Editor's drafts for master branch of hs-done-where

    - +

    Preview for branch fix-refs

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch ianswett-6928-editorial

    - +

    Preview for branch qpack-editorial-0519

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch ianswett-pto-datagrams

    - +

    Preview for branch dedupe-token

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch spin-per-path

    - +

    Preview for branch define-terms

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch dedupe-token

    - +

    Preview for branch contributors

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch ecn-alg

    - +

    Preview for branch local-address-assumption

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch ianswett-merge-pto

    - +

    Preview for branch ianswett-pto-ack-eliciting

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch fix-refs

    - +

    Preview for branch ianswett-initial-secrets-constant

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch move-alt-confirmation

    - +

    Preview for branch client-goaway

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch ianswett-big-ack

    - +

    Preview for branch ianswett-pto-datagrams

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch close-in-handshake

    - +

    Preview for branch remove-duped-close-text

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    @@ -829,772 +829,706 @@

    Preview for branch close-small-initial

    -

    Preview for branch ianswett-consistent-recovery

    - +

    Preview for branch ianswett-spurious-loss

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - - -
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master - diff with last submission
    -

    Preview for branch http

    - - - - - - - +
    *htmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch http/alpn_specificity

    - +

    Preview for branch close2205

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch client-goaway

    - +

    Preview for branch move-alt-confirmation

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch ianswett-send-after-ack

    - +

    Preview for branch ecn-alg

    +
    - - - - + - - - - + - - - - + + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master - diff with last submissiondiff with master + diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch ianswett-merge-cto-pto

    - +

    Preview for branch ianswett-big-ack

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch ianswett-second-initial

    - +

    Preview for branch what-to-validate

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch janaiyengar-patch-1

    - +

    Preview for branch ianswett-no-crypto-data

    +
    - - - - + - - - - + - - - - + - - - - - - - - - - - - - - - - - - - -
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master - diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master - diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master - diff with last submission
    -

    Preview for branch ianswett-initial-secrets-constant

    - - - - - - - - - - - - - - - - - - - - - + - - - - - + + + + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master - diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master - diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + draft-ietf-quic-spin-exphtmlplain textdiff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch close2205

    - +

    Preview for branch ianswett-set-to-null

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch remove-duped-close-text

    - +

    Preview for branch ianswett-in

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch ianswett-in

    - +

    Preview for branch ianswett-merge-pto

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch ianswett-set-to-null

    - +

    Preview for branch janaiyengar-patch-1

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    @@ -1661,66 +1595,79 @@

    Preview for branch ianswett-fix-no-rtt

    -

    Preview for branch define-terms

    - +

    Preview for branch http

    +
    + + + + + + + +
    *htmlplain textdiff with master + diff with last submission
    +

    Preview for branch http/alpn_specificity

    + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    @@ -1787,66 +1734,129 @@

    Preview for branch ianswett-symmetric-t diff with last submission -

    Preview for branch what-to-validate

    - +

    Preview for branch spin-per-path

    +
    - - - - + - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with last submission
    +

    Preview for branch ianswett-consistent-recovery

    + + + + + + + + + + + + + + + + + + - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    @@ -1913,583 +1923,520 @@

    Preview for branch ianswett-min-rtt

    diff with last submission -

    Preview for branch captions

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    draft-ietf-quic-httphtmlplain textdiff with master - diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master - diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master - diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master - diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master - diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master - diff with last submission
    -

    Preview for branch ianswett-skip-packet-number

    - +

    Preview for branch ianswett-ack-pn-space

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch ianswett-spurious-loss

    - +

    Preview for branch close-in-handshake

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - - -
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master - diff with last submission
    -

    Preview for branch jri

    - - - - - - - +
    *htmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch jri/edit

    - +

    Preview for branch ianswett-skip-packet-number

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch jri/cc

    - +

    Preview for branch ianswett-6928-editorial

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch jri/iw-normative

    - +

    Preview for branch hs-done-where

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch jri/time-threshold

    - +

    Preview for branch ianswett-send-after-ack

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch jri/not-seed

    - +

    Preview for branch ianswett-merge-cto-pto

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch jri/flow-control

    - +

    Preview for branch jri

    +
    + + + + + + + +
    *htmlplain textdiff with master + diff with last submission
    +

    Preview for branch jri/token

    + - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    @@ -2556,517 +2503,570 @@

    Preview for branch jri/contributors

    diff with last submission -

    Preview for branch jri/token

    - +

    Preview for branch jri/ack-ranges

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch jri/ack-ranges

    - +

    Preview for branch jri/edit

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch local-address-assumption

    - +

    Preview for branch jri/flow-control

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch contributors

    - +

    Preview for branch jri/iw-normative

    +
    - - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with last submission
    +

    Preview for branch jri/cc

    + + + + + + + + + + + - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch ianswett-pto-ack-eliciting

    - +

    Preview for branch jri/not-seed

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch ianswett-ack-pn-space

    - +

    Preview for branch jri/time-threshold

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch qpack-editorial-0519

    - +

    Preview for branch ianswett-second-initial

    +
    - - - - + - - - - + - - - - + - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission
    -

    Preview for branch ianswett-no-crypto-data

    - +

    Preview for branch captions

    +
    - - - - + - - - - + - - - - + - - - - - - - - - - - + - - - - + - - - - +
    draft-ietf-quic-httphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-invariantshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-qpackhtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-recoveryhtmlplain textdiff with master - diff with last submission
    draft-ietf-quic-spin-exphtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-tlshtmlplain textdiff with master + diff with master diff with last submission
    draft-ietf-quic-transporthtmlplain textdiff with master + diff with master diff with last submission