Re: [quicwg/base-drafts] Simplify version negotiation (#2133)

Kazuho Oku <notifications@github.com> Mon, 24 December 2018 00:32 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 4F2B6128AFB for <quic-issues@ietfa.amsl.com>; Sun, 23 Dec 2018 16:32:16 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.065
X-Spam-Level:
X-Spam-Status: No, score=-8.065 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.065, 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 kMh9jKfO9Aw0 for <quic-issues@ietfa.amsl.com>; Sun, 23 Dec 2018 16:32:14 -0800 (PST)
Received: from out-7.smtp.github.com (out-7.smtp.github.com [192.30.252.198]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 15E9D126CC7 for <quic-issues@ietf.org>; Sun, 23 Dec 2018 16:32:13 -0800 (PST)
Date: Sun, 23 Dec 2018 16:32:12 -0800
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1545611532; bh=bGN1a9d6zrm77BB9shTVdU0oPUybaTpjnoCHqZMZrSA=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=B9Z9d4R1O3Mu1cr/sUHVmbYEzmLjJy4Tqt8ycANCUWQdGK9/fLc67Xx2i0WT8+3fB t0oGR5Ezr3dgB/kN9drNgHDGUClwVHLpm1P1C2CYH4ukDABas5nvvLKGSGHD3v56Cb SwbqBfOpsh8NkBoCog2Dz99IzwhvXbiXPreHwzgU=
From: Kazuho Oku <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab12c63f2904dad2bc84b351321bc8d986a49f1ce492cf000000011837eb0c92a169ce17450cf5@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/pull/2133/c449672264@github.com>
In-Reply-To: <quicwg/base-drafts/pull/2133@github.com>
References: <quicwg/base-drafts/pull/2133@github.com>
Subject: Re: [quicwg/base-drafts] Simplify version negotiation (#2133)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5c20290ca3a85_419f3fb5f44d45c487411c"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: kazuho
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/MTas73ZouGgJbs2Oz295z4WD-78>
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, 24 Dec 2018 00:32:16 -0000

@ekr @DavidSchinazi Thank you for the clarifications.

I'm glad to know that we would have VN-packet-based rejection in the new proposal. I'd assume that we would continue to allow (or encourage) clients to grease the servers.

So now it seems to me that the core of the proposal is to omit servers from sending `supported_versions` and clients checking the value. I can understand that the approach works, because checking `supported_versions` is meaningless for a client that only supports one version, and because future versions of the client can interpret the omission of the field as the server supporting only version 1.

Generally speaking, I agree that compatible version upgrade is preferable, not only because it reduces one round-trip, but because it is easier to deploy than VN-packet-based negotiation (see https://github.com/quicwg/ops-drafts/pull/52).

If we can anticipate that having only compatible version upgrade would be fine, I think I have no reason to complain against dropping `supported_versions` from the QUIC v1.

And that's takes me back to wonder about the inflexibility of the v1 Initial packet design.

As I've stated, [current design is inflexible in sense that it does not have a way to have extensions outside the ClientHello message](https://github.com/quicwg/base-drafts/pull/2133#issuecomment-447194700). The only way for future versions of QUIC to introduce extensions outside of ClientHello, while retaining compatibility with v1, would be to abuse the Token field. They would define extension slots (like the one we have in TLS handshake messages) using the Token field so that additional data and the token can be transmitted.

Would we be fine with that? If we think that's too ugly, maybe we should add a `extensions` field to the client-sent Initial packets, so that future versions of QUIC can use that to contain extensions. QUIC v1 client would set the field to zero-length, and v1 servers would ignore the value of the field.

-- 
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/2133#issuecomment-449672264