Re: ALPN and QUIC versions

Ian Swett <ianswett@google.com> Fri, 04 June 2021 18:48 UTC

Return-Path: <ianswett@google.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 337E73A1CC5 for <quic@ietfa.amsl.com>; Fri, 4 Jun 2021 11:48:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.6
X-Spam-Level:
X-Spam-Status: No, score=-17.6 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, USER_IN_DEF_DKIM_WL=-7.5, USER_IN_DEF_SPF_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.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 mX59viBsW7Vu for <quic@ietfa.amsl.com>; Fri, 4 Jun 2021 11:48:49 -0700 (PDT)
Received: from mail-wm1-x334.google.com (mail-wm1-x334.google.com [IPv6:2a00:1450:4864:20::334]) (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 675E53A1CC0 for <quic@ietf.org>; Fri, 4 Jun 2021 11:48:49 -0700 (PDT)
Received: by mail-wm1-x334.google.com with SMTP id o127so5927021wmo.4 for <quic@ietf.org>; Fri, 04 Jun 2021 11:48:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=1R5yGzGZa9NXhx/0EsuTMLEZASEWtnmtfzQHtK+sJik=; b=tUOHku6Qa7wHyw4UNu9JV1AUEBYTcSwaokLMRaIuk4570kePqj2lnCIRNnPE1Q/yMe KTDkAAxxddLnbMVr0e08ur2vhBtahgC6XEE8DfhoaTbH7ikCOLT/D5ChE7lAlzQJh/NV AHP5h6LXbgjaMOvfyGN0xZPtRrRFNU6MwqgIFRjN3U4e61NgmUIb6IJYBGWEkCDDbkOv 6UMyl96a8LXkrY2R68EAU7GUbr31RaBS6MzDumKEQBFLrCFQXBeCiY7fa1oJtHgMnxEQ v8KCK4pp/9rspepi6cbg3ORhaYmYeGYdYHXJ04rzVbLg/ZIFjSHfN1UUySEcnTykrL96 WgJw==
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=1R5yGzGZa9NXhx/0EsuTMLEZASEWtnmtfzQHtK+sJik=; b=RKuhSncydxbzbebv39iJD/0nZcFH5ltdBuDQ0/lwhbEMARSupQWDFGp5Il4WzrpXPB QfbrPbGUVNPgg1B+3+WjMjmJ3x78wxMsTd5IyJTNavtfj5Ovmgk45WgJw7/KCEjbqUW8 HdTNNH1qCABirsW26dxHrdYhG8THnPxDG5qOBnaAvds5WuvG46YbEOgqNhEXB6jvKR7C HXWS117U8maxv0/Pz4DBMn8lvbbJG2e9auv+r9veMHt/fszsijAOIgPb9eWUNZV7uLQB I/zGi2ZGjHIfEHI+MSqHUwN6QPCz2BJb0OukFi85c9VCYsu8pQcRl75a9K+ZsHGNq29B H9JA==
X-Gm-Message-State: AOAM5318BE/TE242rXSTjg+VcjCD33TwapdgitYVHkZunUMGFS5uJZU5 7RGnKofwYOVntRHyxKV844cJtXXJ36lOboLz9oEslA==
X-Google-Smtp-Source: ABdhPJx97XmJfU1pJr0DlvAmNgPIMMFO/B8PpAp2vzgM69YMMoBzgaH//0tUGp8d/UgMalmM/2RSGB4/dlTLBXpTuOU=
X-Received: by 2002:a1c:4e03:: with SMTP id g3mr4885068wmh.127.1622832526931; Fri, 04 Jun 2021 11:48:46 -0700 (PDT)
MIME-Version: 1.0
References: <CAM4esxSLAMNZQ73sEk-8LnVRiv00b-PDVPmUqY3iMxCSYui0fw@mail.gmail.com> <CALGR9oYhPLC0cUAxt-9a7OqCL5-VLJ-2K+UihFmJ=-8w=QR=Fg@mail.gmail.com>
In-Reply-To: <CALGR9oYhPLC0cUAxt-9a7OqCL5-VLJ-2K+UihFmJ=-8w=QR=Fg@mail.gmail.com>
From: Ian Swett <ianswett@google.com>
Date: Fri, 04 Jun 2021 14:48:35 -0400
Message-ID: <CAKcm_gNQEqB4cymek2CoqkKEvdS14eSbS0f3wYXed7m3VFRhMA@mail.gmail.com>
Subject: Re: ALPN and QUIC versions
To: Lucas Pardue <lucaspardue.24.7@gmail.com>
Cc: Martin Duke <martin.h.duke@gmail.com>, IETF QUIC WG <quic@ietf.org>
Content-Type: multipart/alternative; boundary="0000000000004c9ec905c3f52447"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/9ODo2CbdfvUxLCEoGgt_eOKAon8>
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: Fri, 04 Jun 2021 18:48:54 -0000

I do think this is worth discussing(again) now that we're about to ship the
first application on top of QUICv1 as well as the applicability drafts.  We
don't have a ton of time to make adjustments, but maybe enough time.

I think Lucas' thinking is heading in a good direction.  My mental model is
that new versions could declare if they offer the featureset of another
version.  So I can mint a bespoke version of QUIC and as long as it
supports the v1 featureset, it'll use the same ALPN.  Could a version of
QUIC specify that it supports the features of multiple versions(ie: a
version of QUIC like v1 and one that only supports datagrams)?

Having every application or extension specify which features it's dependent
upon sounds a bit problematic in practice to me, but maybe it's not so bad.

There are lots of workable ways to do this, but minting a new alpn for
every transport version does seem a bit excessive unless we're not going to
have many transport versions.

Ian

On Wed, May 19, 2021 at 8:09 PM Lucas Pardue <lucaspardue.24.7@gmail.com>
wrote:

> Hi Martin
>
> Speaking as an individual. There's a lot to consider here, I don't have a
> complete response.
>
> For a start, I think there are ways to rephrase the applicability draft
> text to get over some thorniness - seems I'm on the hook to do that,
> reviews will will welcome.
>
> To respond to one of your suggestions
>
>
> On Wed, 19 May 2021, 16:27 Martin Duke, <martin.h.duke@gmail.com> wrote:
>
>>
>> 4) There is no formal trail of linkages. New version RFCs should say what
>> apps they support (possibly as generic as "all v1 applications work with
>> the new version") and applications should say if (a) the list of usable
>> versions is other than the full known set and (b) what properties it needs
>> from a QUIC version to operate. This is the path I took in a v2 PR
>> <https://github.com/martinduke/draft-duke-quic-v2/pull/6> [3], which has
>> no official standing whatsoever. This makes the forensics to obtain the
>> full list of usable versions quite a bit harder, but won't explode the ALPN
>> registry or the front page of HTTP/3.
>>
>
> I might grade incompatible breaking versions on at least two criteria.
> First, is the wire image the same? Second, are the protocol feature changes
> that break the contract with upper layers, which would cover removing
> features, changing features in ways that break dependent behaviour, adding
> features that break dependent behaviour.
>
> Such a grading exercise would appear to be a useful function of the QUIC
> WG in the long run. What I mean by this is that (hypothetically) we should
> encourage versions to state if their compatibility with other versions is
> breaking or non-breaking. The QUIC version IANA table could, for example,
> codify some of this.
> The group has the expertise to assess such claims and the desire to avoid
> version relationship explosion in breadth or depth (I.e. we would heavily
> normalize).
>
> QUIC extensions could state the known (at the time of writing) version(s)
> that they extend. To keep it simple, they'd just need to state the earliest
> registered version on each breaking version. We assume that non-breaking
> versions published by the IETF all work. A single QUIC extension document
> can define how it extends several breaking QUIC versions. We have a similar
> situation right now when defining logically equivalent behavioral
> extensions that need to work over H1, H2 and H3.
>
> Application protocols could also state known (at the time of writing)
> version(s) that they run over. Same as above.
>
> When future breaking QUIC versions are published, extension and
> application protocols can respond. Update documents could be effectively
> no-op, require major/minor surgery, or state explicitly that a version is
> not supported if they help the strong need to.
> To make this activity easier, both extensions and application protocols
> (and their extensions!) would benefit from stating the QUIC protocol
> features that they depend on. Reviewing those statements is likely a
> service the QUIC WG should provide to other groups.
>
> I think this possibly leads to a hybrid option 4, where the ALPN registry
> has a column that lists only breaking QUIC versions. And we don't mandate
> any rules on the number of versions that a token can relate to.
>
> Cheers
> Lucas
>