Re: QUIC Version Negotiation Extension

David Schinazi <> Wed, 06 November 2019 19:17 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id CD8C8120104 for <>; Wed, 6 Nov 2019 11:17:47 -0800 (PST)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.998
X-Spam-Status: No, score=-1.998 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id ZjkxMt1_x5Mw for <>; Wed, 6 Nov 2019 11:17:45 -0800 (PST)
Received: from ( [IPv6:2a00:1450:4864:20::230]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id F2731120044 for <>; Wed, 6 Nov 2019 11:17:44 -0800 (PST)
Received: by with SMTP id n5so16424096ljc.9 for <>; Wed, 06 Nov 2019 11:17:44 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=f7bNM/4LhVY97m2NbS8gHZVYud9KK9INDKygjMtWsPw=; b=cka7knVkPcHz6MDyUwXWT6jALpSKIy0BIa3+C3vh7XOJ41XMXpdyO3TWKiyBmepvOG 2EWIbL5nZloaZd6V8y0B9hXIykWSjmlo/fO6U6ZhvfVrdqp86uIUUBPDz30XBSnYAkaj n/JP8moQf/eMRkJuovt7T5urriQf8pu1CfziKEnfvlgO8pqybtDQOVzn+dB3usRHDpwA yZRMcN8BqLw28ZS9nC/0mo4LISn/vcEw4GdT6ys3F7Dq03r6XPxqptgk7xGPocfV8LRb M1o1FG+ZNaSPAe/TUbklGhmoRjFudzhuzyUGanqXTgyJtpDTvz7W5WZz9ykSof5s5406 3J0Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=f7bNM/4LhVY97m2NbS8gHZVYud9KK9INDKygjMtWsPw=; b=CPVgaoUzzgF6sZbErjZc+qIJlJz19Ph7c8IqaL7OYTxoqZhEgJQSduIHFKEIryN5TY lQzydsfL1suIJ8X0VrMzuslJ/zZWEanB6lbTYkk96EhPS1ZN/zw7nr9gm/C1GWVBQArB cI2847cUZAc+LO70OHlgZTR1t4G900hWK51BRGT+l4uOwGVI2xXnf2nIOzllGAtxpfnR 2QjCI61RfMo8a39ipendeFmM/dWsR2I4P31WGL4UdZyuJDjKQxJB4DwxYVgUR4vnIbEs WAgrNWqz8LkJ8rMYEM0+RJ2JGSS3YD5+f/jM2LPpRKr1IeMKEQQ8K/hDKzzfFvgcW6Vu uPIg==
X-Gm-Message-State: APjAAAUAZZnzuTczxBodBsUHO/6PWoqQChHf7YMLolyIigEK6euq3ptc tDKQFFT5XsQ92d/uvXKdg0t0AaHU4qOKHRjdWNU=
X-Google-Smtp-Source: APXvYqy9jOKWGVx4O/EpYHPAn6UWhUhL91Yrw5xALg3BqME+RubNUo4X5Abt5kyZ5PxMxUCNKSidmt7+8HmUgF8ptL0=
X-Received: by 2002:a2e:b5a2:: with SMTP id f2mr3068733ljn.108.1573067863142; Wed, 06 Nov 2019 11:17:43 -0800 (PST)
MIME-Version: 1.0
References: <> <>
In-Reply-To: <>
From: David Schinazi <>
Date: Wed, 6 Nov 2019 11:17:32 -0800
Message-ID: <>
Subject: Re: QUIC Version Negotiation Extension
To: Mike Bishop <>, Martin Thomson <>
Cc: QUIC <>
Content-Type: multipart/alternative; boundary="00000000000030b6c10596b26785"
Archived-At: <>
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Wed, 06 Nov 2019 19:17:48 -0000

Thanks Mike and Martin.

I agree with your comments. The current draft evolved from the previous
revision that only supported compatible versions, and I agree that more of
the text needs to be refactored or rewritten. I've filed GitHub issues to
make sure we don't lose track of your specific comments:


On Wed, Nov 6, 2019 at 10:29 AM Mike Bishop <> wrote:

> Some notes:
>    - *Section 3:  *“Version negotiation takes place after the retry cycle
>    is over.”  This is only possible for compatible versions; if the server
>    does not support the version the client attempted, it obviously cannot send
>    a Retry packet in that version, because Retry packets are version-specific.
>    - *Section 3:  *“Servers must retain the ability to process the
>    Initial packet from older versions….”  No, it means that *if the
>    server wants to avoid a VN packet*, it needs to be able to process the
>    Initial packet from the version the client tried.
>    - *Section 4:  *Rather than putting a count-prefixed list of versions,
>    perhaps consider just embedding the VN packet payload?  It’s equivalent,
>    but easier to explain.
>    - *Section 7:  *Clearly it is possible to possible to add new frame
>    types to Initial packets in a future version, I think what you mean to say
>    is that this is a change that would break compatibility between versions.
> As a general statement on the document, you assume throughout that all
> versions have packet types, contain packet types called Initial and Retry,
> and that Initial packets contain frames.  The odds of those things being
> true across QUIC versions is likely high, but they’re not invariants, so
> you can’t assume them here.  You need to state general principles, and then
> use concepts from QUICv1 as examples of the principle.
> For example, rather than discussing version compatibility in terms of
> Initial packets, you might want to say that versions A and B are
> “compatible” if the first flight of packets sent by the client in version A
> carries enough information for the server to generate the corresponding
> flight in version B, the server speaks version B, and is able to parse at
> least the first flight of version A.
> Also not discussed is the case where the server speaks version(s) which
> are compatible with what the client offered, but doesn’t speak the version
> the client offered, even enough to generate the response.  With the right
> definition of “compatible,” this just falls into the “incompatible” path
> and works for the server, but you need to call out the fact that the client
> shouldn’t consider it an error if the server uses the incompatible path
> between versions that the client thinks are compatible.
> *From:* QUIC <> *On Behalf Of * David Schinazi
> *Sent:* Monday, November 4, 2019 3:30 PM
> *To:* QUIC <>
> *Subject:* QUIC Version Negotiation Extension
> Hi everyone,
> From the recent discussion on multiple PRs, it appears that there might be
> a need for downgrade-safe QUIC version negotiation, earlier than we
> expected.
> EKR and I updated our extension to hopefully suit these needs:
> Comments welcome here or on the GitHub (link in draft).
> Thanks,
> David