Re: ALPN and QUIC versions

David Schinazi <dschinazi.ietf@gmail.com> Wed, 12 January 2022 21:31 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 69A843A1E4F for <quic@ietfa.amsl.com>; Wed, 12 Jan 2022 13:31:35 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.097
X-Spam-Level:
X-Spam-Status: No, score=-2.097 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=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 hPXYUCpMfIpR for <quic@ietfa.amsl.com>; Wed, 12 Jan 2022 13:31:33 -0800 (PST)
Received: from mail-pl1-x62f.google.com (mail-pl1-x62f.google.com [IPv6:2607:f8b0:4864:20::62f]) (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 388E23A1E4D for <quic@ietf.org>; Wed, 12 Jan 2022 13:31:33 -0800 (PST)
Received: by mail-pl1-x62f.google.com with SMTP id l15so6251240pls.7 for <quic@ietf.org>; Wed, 12 Jan 2022 13:31:33 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=A+YbE11yUZqNF7bNqb3HLVdXi7+euVAC5K5xxNkGcTI=; b=b/rFYbE4CythH7XD5DcpS5SFnqM2jML1wyBUs6KzXuBumMSE9HriVQ0xAlFFRwJvTr Ma965hEaTa2K3znmwyHsgrzPFZ/kS5LwvyyAaUPMzC3R0mRIp2gckWJNR/pKn1UXz+vV 3s6XyDLOWCzxYF+m3+k4KhV6Ok+XY+mSRyNrlUs2PQ6mMUWHO3iaz5oFVIR0wQCtXHky wXt72Dsb4lh+F6p7Q1Ik7ID9X/FAFaRz1JQcMuKvqHCsOQLaGi2iGk3XLQxV+rjGGY7t 6h2Ct3UlcqlF+PlcGa5qo1V1jzwMlg8GOchD9IOkhRueObBO+2U7RgszUBRRlS6xFlGO 3kWQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=A+YbE11yUZqNF7bNqb3HLVdXi7+euVAC5K5xxNkGcTI=; b=69f2gqiJCUz+5XbJpjAqtBVFeQp1cqT0y2nL1d0GvsfGmCgr30PCXcazo/Nf8pZrzP i7V040ngPsCTzUbtGdnpm6V5FsWCegDPIKgg/uaIXtUGMIk6gfP/yAHd8HPMM68oHduw xjXWnBB0QF9WjfO8zSCERVW/Np1Vd/eBgRMhFCWmi0Xosw86F1GD1q1uwxoPioJFi7Q3 T7f0CfU2wF8gAwbMcSGMsp5lJUugWE9GRfSrE5kHBPpRB11u9NHaZGx6Srq9X2bcktNu 7Mok0jPpcu6cLxZsAZjpDAIluVzqO5KryWJ9dpnf15h+EIjT746R6ilaP84jGy9eheO+ Y31Q==
X-Gm-Message-State: AOAM530cEVUeieh7n2KPJi64rmn72pkf2+ZB7k4lJuNqC0KsLWnyO7t5 40QP/bwEfp/RTmCXPMSAv9tN/ppWDAFOJ506GgipvXWP7kQ=
X-Google-Smtp-Source: ABdhPJwdAZZeP8ho7V4241/mkFHZbLQb6cTMQBGH0c+3azlUPfbCJrYgkCvvjbKfvIeDgVsvHPWLnkPadmuGgCmpYas=
X-Received: by 2002:a63:9d86:: with SMTP id i128mr1369359pgd.526.1642023091420; Wed, 12 Jan 2022 13:31:31 -0800 (PST)
MIME-Version: 1.0
References: <CAM4esxSLAMNZQ73sEk-8LnVRiv00b-PDVPmUqY3iMxCSYui0fw@mail.gmail.com> <CALGR9oYhPLC0cUAxt-9a7OqCL5-VLJ-2K+UihFmJ=-8w=QR=Fg@mail.gmail.com> <CAKcm_gNQEqB4cymek2CoqkKEvdS14eSbS0f3wYXed7m3VFRhMA@mail.gmail.com>
In-Reply-To: <CAKcm_gNQEqB4cymek2CoqkKEvdS14eSbS0f3wYXed7m3VFRhMA@mail.gmail.com>
From: David Schinazi <dschinazi.ietf@gmail.com>
Date: Wed, 12 Jan 2022 13:31:20 -0800
Message-ID: <CAPDSy+4fYhL24YT-UNC8dpWOmWfnCwRUWhiqC+KPTqYX=wDD1Q@mail.gmail.com>
Subject: Re: ALPN and QUIC versions
To: IETF QUIC WG <quic@ietf.org>
Content-Type: multipart/alternative; boundary="00000000000013c2e605d5694b84"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/tNPXkcJ08qhyj28gWrrWoLsjvUo>
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, 12 Jan 2022 21:31:35 -0000

Hi ALPN enthusiasts,

Since we've made some good progress on QUICv2, I think it's
time to reopen this thread - so I've opened a GitHub issue for it:
https://github.com/quicwg/quic-v2/issues/30
In a nutshell, if we don't do anything there won't be a way to
deploy QUICv2 without QUICv1 support, and I think we should
make that decision consciously. Please send thoughts on the issue.

Thanks,
David

On Fri, Jun 4, 2021 at 11:49 AM Ian Swett <ianswett=
40google.com@dmarc.ietf.org> wrote:

> 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
>>
>