Re: QUIC Version Negotiation Extension

David Schinazi <dschinazi.ietf@gmail.com> Wed, 06 November 2019 19:17 UTC

Return-Path: <dschinazi.ietf@gmail.com>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id CD8C8120104 for <quic@ietfa.amsl.com>; Wed, 6 Nov 2019 11:17:47 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.998
X-Spam-Level:
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: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=gmail.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 ZjkxMt1_x5Mw for <quic@ietfa.amsl.com>; Wed, 6 Nov 2019 11:17:45 -0800 (PST)
Received: from mail-lj1-x230.google.com (mail-lj1-x230.google.com [IPv6:2a00:1450:4864:20::230]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id F2731120044 for <quic@ietf.org>; Wed, 6 Nov 2019 11:17:44 -0800 (PST)
Received: by mail-lj1-x230.google.com with SMTP id n5so16424096ljc.9 for <quic@ietf.org>; Wed, 06 Nov 2019 11:17:44 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; 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; d=1e100.net; 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: <CAPDSy+4wrhqejh9k8=G7W267EgcT5Z2sDK7ZBGKtNn5kkbXGfg@mail.gmail.com> <BN6PR2201MB1700BB1DAD2872A2FA50059FDA790@BN6PR2201MB1700.namprd22.prod.outlook.com>
In-Reply-To: <BN6PR2201MB1700BB1DAD2872A2FA50059FDA790@BN6PR2201MB1700.namprd22.prod.outlook.com>
From: David Schinazi <dschinazi.ietf@gmail.com>
Date: Wed, 06 Nov 2019 11:17:32 -0800
Message-ID: <CAPDSy+5GgGHMCtVM5DAjNnfdr4KjAtC2EezVeJYjRkGwUrRCRg@mail.gmail.com>
Subject: Re: QUIC Version Negotiation Extension
To: Mike Bishop <mbishop@evequefou.be>, Martin Thomson <mt@lowentropy.net>
Cc: QUIC <quic@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000030b6c10596b26785"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/pLt7cED4KSN3jLPyUYeGsFgfef8>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=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:
https://github.com/ekr/draft-schinazi-quic-version-negotiation/issues/4
https://github.com/ekr/draft-schinazi-quic-version-negotiation/issues/5

David

On Wed, Nov 6, 2019 at 10:29 AM Mike Bishop <mbishop@evequefou.be> 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 <quic-bounces@ietf.org> *On Behalf Of * David Schinazi
> *Sent:* Monday, November 4, 2019 3:30 PM
> *To:* QUIC <quic@ietf.org>
> *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:
>
> https://tools.ietf.org/html/draft-schinazi-quic-version-negotiation-02
>
>
>
> Comments welcome here or on the GitHub (link in draft).
>
>
>
> Thanks,
>
> David
>