Re: [quicwg/base-drafts] Send complete SETTINGS (#2972)

Martin Thomson <notifications@github.com> Mon, 19 August 2019 01:14 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 5513512013B for <quic-issues@ietfa.amsl.com>; Sun, 18 Aug 2019 18:14:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8
X-Spam-Level:
X-Spam-Status: No, score=-8 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_HELO_NONE=0.001, 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 X-0HM94eRQFP for <quic-issues@ietfa.amsl.com>; Sun, 18 Aug 2019 18:14:38 -0700 (PDT)
Received: from out-19.smtp.github.com (out-19.smtp.github.com [192.30.252.202]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 70EA4120052 for <quic-issues@ietf.org>; Sun, 18 Aug 2019 18:14:38 -0700 (PDT)
Date: Sun, 18 Aug 2019 18:14:37 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1566177277; bh=noXJwEO7CPw5vanHcSmUG291vIhOAXVBt+OZlso+7d0=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=Az60RGLJxfmN6Th1/Xl9xHI7/PpIX/MmEE0pt3hLiMHUwkYz9ekQXmY5s0JvRLB12 d7wZSAvE4TtbEs2ZPIY7VvaZysS7wvfmNVvFk4Zbe/B+VwhyzIvXXASHcmFoTcIDOt dFF+OYob2uWOqhXrBXf4aKsU3JTJ089L0TsVnjV0=
From: Martin Thomson <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+AFTOJKZ5HPYWXF4R5SESZFN3M4VH3EVBNHHBZNSWTM@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/2972/review/276307666@github.com>
In-Reply-To: <quicwg/base-drafts/pull/2972@github.com>
References: <quicwg/base-drafts/pull/2972@github.com>
Subject: Re: [quicwg/base-drafts] Send complete SETTINGS (#2972)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5d59f7fd8a866_5b373ff5c4ccd964334554"; 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/ExZDMs4LbssIa3ounMR4Fp9MTCM>
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: Mon, 19 Aug 2019 01:14:40 -0000

martinthomson commented on this pull request.



> @@ -1396,22 +1396,25 @@ servers, the initial value of each client setting is the default value.
 For clients using a 1-RTT QUIC connection, the initial value of each server
 setting is the default value. When a 0-RTT QUIC connection is being used, the
 initial value of each server setting is the value used in the previous session.
-Clients MUST store the settings the server provided in the session being resumed
-and MUST comply with stored settings until the current server settings are
-received.  A client can use these initial values to send requests before the
+Clients SHOULD store the settings the server provided in the session being
+resumed and MUST comply with stored settings until the current server settings

Yeah, this complicates the text somewhat.  If the intent is to have clients comply with either defaults or whatever they remember, then maybe:

Clients SHOULD store the settings the server provided in the connection where resumption information was provided.  A client MUST comply with either stored settings - or default values if no values are stored - when attempting 0-RTT.  Once a server has provided new settings, clients MUST comply with those values.

> @@ -1396,22 +1396,25 @@ servers, the initial value of each client setting is the default value.
 For clients using a 1-RTT QUIC connection, the initial value of each server
 setting is the default value. When a 0-RTT QUIC connection is being used, the
 initial value of each server setting is the value used in the previous session.
-Clients MUST store the settings the server provided in the session being resumed
-and MUST comply with stored settings until the current server settings are
-received.  A client can use these initial values to send requests before the
+Clients SHOULD store the settings the server provided in the session being
+resumed and MUST comply with stored settings until the current server settings
+are received.  If the client did not store, or did not receive, server settings
+from the previous session, the initial value of each setting is the default
+value.  A client can use these initial values to send requests before the

This business about defaults can be split into a new paragraph, ideally one preceding this more complicated part.

> Settings assume default values prior to receiving a SETTINGS frame, or if the SETTINGS frame does not include a value for the setting.  Endpoints can use these default values to send requests before receiving the a SETTINGS frame.

>  server's SETTINGS frame has arrived.  This removes the need for a client to wait
 for the SETTINGS frame before sending requests.
 
 A server can remember the settings that it advertised, or store an
 integrity-protected copy of the values in the ticket and recover the information
 when accepting 0-RTT data. A server uses the HTTP/3 settings values in
-determining whether to accept 0-RTT data.
+determining whether to accept 0-RTT data.  If the server cannot recover the
+settings from a session being resumed, it MUST NOT accept 0-RTT data.

I don't think that we're mandating the use of session tickets, even if that is the most common method of implementing these.

I think that "recover" is probably still right, though it might be clearer here if we say "If a server cannot determine that the settings remembered by a client are compatible with its current settings, it MUST reject 0-RTT."

Then we need to define what "compatible" means.

>  
 A server MAY accept 0-RTT and subsequently provide different settings in its
 SETTINGS frame. If 0-RTT data is accepted by the server, its SETTINGS frame MUST
 NOT reduce any limits or alter any values that might be violated by the client
-with its 0-RTT data.  The server MAY omit settings from its SETTINGS frame which
-are unchanged from the initial value.
+with its 0-RTT data.  The server MUST include all settings which differ from
+their default values, even if the value is unchanged from the previous session.

I might drop the bit from the comma onwards.  The only case we have two values is in 0-RTT (not resumption, as this implies) and that text is now very clear that the remembered values only apply until SETTINGS arrives.

-- 
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/2972#pullrequestreview-276307666