Re: [quicwg/base-drafts] Refine Discussion of 0-RTT Transport Parameters (#2467)

Martin Thomson <notifications@github.com> Thu, 14 February 2019 23:59 UTC

Return-Path: <noreply@github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 70CBE12F1A6 for <quic-issues@ietfa.amsl.com>; Thu, 14 Feb 2019 15:59:53 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.001
X-Spam-Level:
X-Spam-Status: No, score=-8.001 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=github.com
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 2hQgyRNtcFLU for <quic-issues@ietfa.amsl.com>; Thu, 14 Feb 2019 15:59:51 -0800 (PST)
Received: from out-4.smtp.github.com (out-4.smtp.github.com [192.30.252.195]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 0B3EE128B36 for <quic-issues@ietf.org>; Thu, 14 Feb 2019 15:59:51 -0800 (PST)
Date: Thu, 14 Feb 2019 15:59:49 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1550188789; bh=o+Sy0dHro8vLX8wX1lyT+UeFI8+UG9YcOfJYQNeC0/s=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=SBkR8CaQfswWi6APo9RYIItaCn9MbsESqx/2H8SyHTJIJ/6gn0joTF6oydUrFThdg 4zWiRu7zMHrtJNZttLveHo/xc7OUk3W3aBnLRiHeREwI8ssQ0sRQObjKsDzL+tLCY0 bwf9l4eSwQKaLp70fPjK2qS5E4Uy/jGGJ9DuyW4k=
From: Martin Thomson <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab5a78dd45f008ad3e58ba614cb8c64d02d871a3a692cf00000001187dc2f592a169ce187830aa@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/2467/review/204030041@github.com>
In-Reply-To: <quicwg/base-drafts/pull/2467@github.com>
References: <quicwg/base-drafts/pull/2467@github.com>
Subject: Re: [quicwg/base-drafts] Refine Discussion of 0-RTT Transport Parameters (#2467)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5c6600f5cd4ea_4f923f9c7aed45bc123894"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: martinthomson
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/ktcWPJMP3FCplEuWjVQxGs6Ei0w>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Thu, 14 Feb 2019 23:59:53 -0000

martinthomson commented on this pull request.

I've come to realize that this is the right answer, but we need to be more principled about this.  Can we categorize things better, maybe add a column to the table we use to list transport parameters even.

If we do use the table, I would move it from the IANA considerations to this section.

>  ### Values of Transport Parameters for 0-RTT {#zerortt-parameters}
 
-A client that attempts to send 0-RTT data MUST remember the transport parameters
-used by the server.  The transport parameters that the server advertises during
-connection establishment apply to all connections that are resumed using the
-keying material established during that handshake.  Remembered transport
+The transport parameters that the server advertises during connection
+establishment generally apply to all connections that are resumed using

"generally" is a little to squishy a word to use here.  I'd prefer to be crisp:

> The value of transport parameters from a connection are remembered and apply to any 0-RTT packets that are sent in subsequent connections that are resumed from that connection, except for those transport parameters that are explicitly excluded.  Remembered transport parameters apply to the new connection until the handshake completes and the client starts sending 1-RTT packets.  Once the handshake completes, the client uses the transport parameters established in the handshake.
>
> Any transport parameter that does not or cannot apply to 0-RTT packets does not need to be remembered.  This includes max_ack_delay, <list>.  Any transport parameter that applies to the connection as a whole does not need to be remembered.  This includes disable_migration, <list>.  Endpoints are not obligated to remember and use unknown transport parameters.

Then I think we can tabulate transport parameters and add a "0-RTT" column, indicating whether it applies to 0-RTT or not.

> -when accepting 0-RTT data.  A server uses the transport parameters in
-determining whether to accept 0-RTT data.
-
-A server MAY accept 0-RTT and subsequently provide different values for
-transport parameters for use in the new connection.  If 0-RTT data is accepted
-by the server, the server MUST NOT reduce any limits or alter any values that
-might be violated by the client with its 0-RTT data.  In particular, a server
-that accepts 0-RTT data MUST NOT set values for the following parameters
-({{transport-parameter-definitions}}) that are smaller
-than the remembered value of those parameters.
+The value of the server's previous original_connection_id, preferred_address,
+stateless_reset_token, and ack_delay_exponent MUST NOT be used when
+establishing a new connection; rather, the client should wait to observe the
+server's new values in the handshake.
+
+The client MAY store the server's original max_ack_delay and max_packet_size

max_packet_size is important.  That is the one in addition to the flow control stuff that needs to be respected.

> -when accepting 0-RTT data.  A server uses the transport parameters in
-determining whether to accept 0-RTT data.
-
-A server MAY accept 0-RTT and subsequently provide different values for
-transport parameters for use in the new connection.  If 0-RTT data is accepted
-by the server, the server MUST NOT reduce any limits or alter any values that
-might be violated by the client with its 0-RTT data.  In particular, a server
-that accepts 0-RTT data MUST NOT set values for the following parameters
-({{transport-parameter-definitions}}) that are smaller
-than the remembered value of those parameters.
+The value of the server's previous original_connection_id, preferred_address,
+stateless_reset_token, and ack_delay_exponent MUST NOT be used when
+establishing a new connection; rather, the client should wait to observe the
+server's new values in the handshake.
+
+The client MAY store the server's original max_ack_delay and max_packet_size

max_ack_delay is not needed for 0-RTT, though it can help in loss recovery, it's a value that can change.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/pull/2467#pullrequestreview-204030041