Re: draft-30 non-implementable, please

Jana Iyengar <jri.ietf@gmail.com> Wed, 12 August 2020 03:04 UTC

Return-Path: <jri.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 EE4593A0EB3 for <quic@ietfa.amsl.com>; Tue, 11 Aug 2020 20:04:43 -0700 (PDT)
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 SNdv4Err3cFo for <quic@ietfa.amsl.com>; Tue, 11 Aug 2020 20:04:41 -0700 (PDT)
Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com [IPv6:2a00:1450:4864:20::22e]) (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 2D11C3A0EAF for <quic@ietf.org>; Tue, 11 Aug 2020 20:04:41 -0700 (PDT)
Received: by mail-lj1-x22e.google.com with SMTP id z14so609940ljm.1 for <quic@ietf.org>; Tue, 11 Aug 2020 20:04:41 -0700 (PDT)
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=zKFWOLwKTFGQ/66Ok03XtZebWWiR1y9y5iwlUTpy/6Y=; b=Tcfs9srP5+Bi+2nSDofscUWZWQppsjGvX0HNVhL5MKOwRYM+4tldXxfQvNQ0sI4Jgu B1Vb/6LLLNT8gJ0EA4w8HDXrzkeuoRmqtN+I73VHTUSTrhBTPUHtI/o2soP5sxccm1B5 at9AWyQ0xMA2tJrZiOGxdyaiyKDUVdPlOnou+fF6PvAeZPaI5ly+nUHTTfe0FVi+SZMd rvJSG76rq/jc8ENW6W8OuIaGWaGM5HWXuRuxKwA3hjH5jEmJy0zsARdgqemYH3QTYiEZ bReGTcwDochCPfUlV36sC0oUOm/sCHKY6f84IQqQrWNbx/cS50a8K9Sz+rhHeASovH43 FP7A==
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=zKFWOLwKTFGQ/66Ok03XtZebWWiR1y9y5iwlUTpy/6Y=; b=QLKY89+S0IT8HAICHyABzsc17JmWSi/eLXZdYfOonnYEuoIzHfz3aH93fznuLz5thT idv3krs4yWm0Fgxg69qEiMFnKC41S+9l5JdbLVtl4S/KN3V5hw1UUl6TgfzpAh0CwasC DAkVrAkuXjcHlbTBOWQktN6PwOh7FB42fvk2oM2Z66pcNskdhj08xGsN/iiHTTteKXOd 1B0Ulj92JYqI6zh6fhnjpeD5zhiVAZwOJvRTfsWoBV33rFEOfnNb1oU7oR6Mc09ILv6t s/GmPY+T8Ee6jQ/GPOcibcSuvDIZ0gLLfZ8Fl8vIqKb/61nR3pskJ0d0LC60/C7B6TmW Nlbg==
X-Gm-Message-State: AOAM530l/hsj9+zThdCSvvQewPYSTYeapS35U0m04fAakqdFwUhyVE8L 7thq4CD4vwcsmDjLGHMrG2kjhxFiKklddfGF9xI=
X-Google-Smtp-Source: ABdhPJwQoqnfogzNDNYiYc9MnyQ5iYJe/cgvuyB14zNdEyKi2GB4+5e8pgSWdwyZzd8vH6VA3YxZjlKPbOk1CdbiDS8=
X-Received: by 2002:a2e:9cd6:: with SMTP id g22mr4715432ljj.344.1597201479272; Tue, 11 Aug 2020 20:04:39 -0700 (PDT)
MIME-Version: 1.0
References: <CALGR9oZUOuW2BJgQ5_oF_Y1=MCH=+se6CZRxsq0N2nCFCRz3tg@mail.gmail.com> <CALGR9obGp7JXHYPEMgJ+i81ehwZmvkC9fLBTfboLYt1ANwXfLQ@mail.gmail.com> <CAM4esxRj9Mh=X+qQgE6OOGXe+hMkYx=Bf3VAMKqUB2E9kTOaLA@mail.gmail.com> <CAKcm_gN6daWVMb91F+mrrCD5NwM7in55Ny9oF3dPwiVQgUSuVg@mail.gmail.com> <f83c6eae-6f6b-becb-7991-9a3ca0de3879@huitema.net> <CAM4esxSWvR4D4NyE-bYEoRtX=8Ls-=gXiEVwPZGUQEE5zur27w@mail.gmail.com> <CAPDSy+77Qv6F4tFHY12XX9p0Ayb5ozEYcmGJYSw+nRM+nHNoMw@mail.gmail.com> <CADdTf+jk6+TMx+p6yEgLDvrHDPaW_XrrtcAO-p1RkVYg67v-eQ@mail.gmail.com> <CAPDSy+7q2Ptv5-_UNpG-VYLP09+Ojj5qxvXFRO==mBLqoUyr7A@mail.gmail.com> <CADdTf+hgoQ+8T0UpLJyYqa3ptYQLH1soKLGZmMs6_Nch9yTaLA@mail.gmail.com> <20200811203513.GB23676@lubuntu> <CAPDSy+44D8-UjuLNOAfCu2ro3DerTpU58Mr6DUWoiEjdmv25gw@mail.gmail.com> <CACdeXiL-Dmir9BFWNp8YeFavEso-HA5WN4p47MKfx+_NHLG00g@mail.gmail.com> <CANatvzxoc+dPRMPrqCo-xrDVTjg-x4bDdSaWc66Cssm9QCZRaw@mail.gmail.com> <CAM4esxSHjHs-qaOuBBufBKWQGLj5BmgocMdZmycDrWyTwpf4JA@mail.gmail.com>
In-Reply-To: <CAM4esxSHjHs-qaOuBBufBKWQGLj5BmgocMdZmycDrWyTwpf4JA@mail.gmail.com>
From: Jana Iyengar <jri.ietf@gmail.com>
Date: Tue, 11 Aug 2020 20:04:28 -0700
Message-ID: <CACpbDce_FmkL-XYy9M2=_neAzYhx2O_SCHCPaT_pe+8iJmGGfw@mail.gmail.com>
Subject: Re: draft-30 non-implementable, please
To: Martin Duke <martin.h.duke@gmail.com>
Cc: Kazuho Oku <kazuhooku@gmail.com>, Ryan Hamilton <ryan@optimism.cc>, Lucas Pardue <lucaspardue.24.7@gmail.com>, Matt Joras <matt.joras@gmail.com>, Nick Harper <nharper=40google.com@dmarc.ietf.org>, Christian Huitema <huitema@huitema.net>, Ian Swett <ianswett=40google.com@dmarc.ietf.org>, David Schinazi <dschinazi.ietf@gmail.com>, IETF QUIC WG <quic@ietf.org>
Content-Type: multipart/alternative; boundary="000000000000ce8a4d05aca572ca"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/C5d_AWek9xCk7LqHk-N1qYjmxLY>
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 Aug 2020 03:04:44 -0000

*A reality check: is _anyone_ planning to drop support for -29? (I've
started a poll for this on Slack. Go respond there.)*

I know Fastly and H2O are not; not until we know that clients have moved
past it.

Martin: We don't "officially" have any particular version; we only have
versions that we decide to run interop testing on. And that is entirely
tied to what people are currently supporting.

There are two issues here:
- What should the interop target be? I propose that we leave this at -29.
- What should happen to the changes in -30? I would argue that we should
make those -30. This point might need some more supporting. My argument is
as follows.

As Nick points out, if it does change interop (despite not intending to),
it's good to know. While interop and wider deployment can be of -29, those
of us implementing and deploying -30 in addition can find these issues.
Also, Kazuho notes, it gives us another version to keep around at the same
time, and it encourages people to support multiple IETF versions.

On the other hand, if you really really don't want another version, then
you cannot implement -30 changes, or you can implement it all and call it
-29. You risk interop issues, but you can't get around it anyway, since you
don't want another version.

On people who might implement from their reading of the drafts alone
without engaging elsewhere and want to interop: Good luck to them.

On Tue, Aug 11, 2020 at 5:12 PM Martin Duke <martin.h.duke@gmail.com> wrote:

> The QUIC police are not going to come get anyone if they advertise h3-30.
> Everyone's obviously free to implement what they want. The differences
> between "officially" not having h3-30 and some people doing it anyway, and
> officially having it, and some people choosing not to support it, are quite
> small.
>
> The developers for whom it's trivial to deploy new versions have a
> different perspective, obviously, than those for whom it's hard.
>
> I have three reasons for not wanting a draft-30 interop target, and only
> two of them are selfish.
> 1) Those with a "stable version + latest version" deployment model will
> have trouble interoping if one is -27/-29 and the other is -28/-30, e.g.
> 2) My matrix of which versions are shipping in which maintenance releases,
> and getting all those (one line!) bugfixes into the pipelines, is
> cumbersome.
> 3) If my customers ask me why I'm not supporting draft-30, I'd love to
> point to the implementation note in quic-transport that says we're sticking
> with draft-29.
>
> Meanwhile, I see no advantage whatsoever in a cosmetic change in version.
>
>
>
> On Tue, Aug 11, 2020 at 4:22 PM Kazuho Oku <kazuhooku@gmail.com> wrote:
>
>>
>>
>> 2020年8月12日(水) 7:32 Nick Harper <nharper=40google.com@dmarc.ietf.org>:
>>
>>>
>>>
>>> On Tue, Aug 11, 2020 at 3:00 PM David Schinazi <dschinazi.ietf@gmail.com>
>>> wrote:
>>>
>>>> Hi Dmitri,
>>>>
>>>> Agreed on the point about HTTP/3. All this talk about versions applies
>>>> to both the QUIC wire version (0xff0000xx) and the ALPN value (h3-xx).
>>>>
>>>> I think your view of browsers is wrong, or at least it does not match
>>>> Chrome's model.
>>>> Chrome has tests, and runs these tests any time any change is made to
>>>> the codebase.
>>>> In particular, any time any change is made to any networking code, all
>>>> the QUIC tests are run on every single supported QUIC version.
>>>> Adding a new version that does not have interop-breaking changes
>>>> significantly increases the cost of running these Chrome tests.
>>>> I'll also note that Chrome has deployment costs as well, since we have
>>>> multiple release channels.
>>>> The fact that various Chrome release channels support different QUIC
>>>> versions has already caused some confusion.
>>>>
>>>> I'll also note that Google maintains our QUICHE library, and uses it in
>>>> both Chrome and Google servers.
>>>> All of these share one list of supported QUIC versions..
>>>>
>>>> Because of the points above, your solution does not work for us.
>>>>
>>>> Perhaps I can ask the question differently: what are our options and
>>>> what are the tradeoffs?
>>>> Here's my understanding, please correct me if this doesn't sound right:
>>>>
>>>> I think both of these statements will be true:
>>>> 1) draft-30 will have some non-editorial changes from draft-29
>>>> 2) draft-30 will not have any major interop-breaking changes from
>>>> draft-29
>>>>
>>>> If this is right, then I see four options:
>>>> A) We publish draft-30 with a new wire version, create an interop draft
>>>> / matrix page for it, same as previous drafts
>>>> B) We publish draft-30 with a new wire version, but say that folks
>>>> should only implement -29, and don't create any interop events or entries
>>>> for it
>>>> C) We publish draft-30 without modifying the wire version from -29, and
>>>> then create new interop entries for draft-30
>>>> D) We publish draft-30 without modifying the wire version from -29, and
>>>> reuse the interop entries from draft-29
>>>>
>>>> Now, about the pros and cons of these options:
>>>>
>>>> A) pro: ?
>>>> con: supporting only one of -29 and -30 leads to interop failures when
>>>> one implementation uses -29 and the other uses -30
>>>> con: supporting -29 and -30 simultaneously adds testing and deployment
>>>> costs
>>>>
>>>> B) pro: ?
>>>> con: someone new to QUIC might still implement -30 because the interop
>>>> drafts aren't discoverable from the drafts
>>>>
>>>> C) pro: no interop failures
>>>> pro: no increased test and deployment costs
>>>> con: ?
>>>>
>>>> D) pro: no interop failures
>>>> pro: no increased test and deployment costs
>>>> con: ?
>>>>
>>>> Clearly these pros and cons are biased because I'm not understanding
>>>> everyone's use cases. Can someone please help fill in the question marks
>>>> above?
>>>>
>>>
>>> I disagree that C and D have a pro of "no interop failures". Statement 1
>>> above says that there are non-editorial changes, which means that there
>>> could be subtle changes that result in -29 and -30 behaving differently. i
>>> would list "no interop failures" as a pro for A and B, and replace that as
>>> a pro for C and D with a con of "technical differences between -29 and -30
>>> could be masked by using the same identifier for both".
>>>
>>> I think option B is the best option. We're currently at draft-29 for the
>>> base drafts, but that's only the 19th "implementation draft". There's no
>>> reason -30 needs to be an implementation draft. We've solved this problem
>>> before by designating some, but not all, drafts as implementation drafts,
>>> and I see no reason why that has to change now or why this solution
>>> suddenly no longer works. The concern for option B is a hypothetical one.
>>> Someone new implementing QUIC likely wants to interoperate with other
>>> implementations: if no one else is implementing -30, it would behoove this
>>> new implementor to implement -29.. (If they only care about interop when v1
>>> is published, then it doesn't matter if they implement -30 or -29 right
>>> now.)
>>>
>>
>> I mostly agree to what Nick has stated here.
>>
>> Though as some have pointed out, I do not think it is necessary for us to
>> prohibit people from implementing -30. As Christian says, some doing so
>> would help us grease version negotiation.
>>
>> IMO, all we need to agree is what the interop version is, and I think we
>> have a consensus that it would be -29.
>>
>> Assuming that is the case, what is the problem? If somebody new to QUIC
>> implements -30 and asks the developers of other stacks to support -30, we
>> can tell that person that the interop version is -29, and that there are no
>> breaking changes. Then, for the newly developed stack, it is merely a
>> matter of changing the version number exposed on the wire.
>>
>>
>>>
>>>> David
>>>>
>>>> On Tue, Aug 11, 2020 at 1:35 PM Dmitri Tikhonov <
>>>> dtikhonov@litespeedtech.com> wrote:
>>>>
>>>>> On Tue, Aug 11, 2020 at 01:01:38PM -0700, Matt Joras wrote:
>>>>> > I guess the way I see it is, suppose there is a draft-30 version.
>>>>> > Implementers have 3 choices:
>>>>> > 1. Solely implement -30, dropping support for -29.
>>>>> > 2. Supporting both -29 and -30.
>>>>> > 3. Not implement -30 and staying on -29.
>>>>>
>>>>> As the conversation on Slack is rolling away furiously, I would like
>>>>> to post the mailing list so that this does not fall through the
>>>>> cracks and that people can comment in a manner that less ADD-inducing.
>>>>>
>>>>> First, let's all agree that when we talk about "deploying QUIC ID-30,"
>>>>> we are really talking about HTTP/3.  Agreed?
>>>>>
>>>>> Now, there are three categories of implementers:
>>>>>
>>>>>     1. QUIC as a library (lsquic, picoquic, and so on)
>>>>>     2. QUIC as a client (Firefox, Chrome, etc.)
>>>>>     3. QUIC as a server (Google server, F5, and so on)
>>>>>
>>>>> The first category does not care: a library can support any number of
>>>>> versions and the only ill effect is updating code.
>>>>>
>>>>> The second category should also not care.  Because the browser has
>>>>> the Alt-Svc hint and assuming the said browser uses a library that
>>>>> supports all the recent QUIC versions, this browser can ship support
>>>>> for the new QUIC version as soon as the underlying library supports
>>>>> it.
>>>>>
>>>>> It is the third category that experiences pain: deploying and testing.
>>>>> We can tell it's them because they just sounded off on this thread.
>>>>>
>>>>> The solution for them, then, is simple:  Do not deploy ID-30.  The
>>>>> older browsers will support ID-29.  The newer browsers will support
>>>>> both ID-30 and ID-29.  Sticking with ID-29 deployment leaves you no
>>>>> worse than before.  All you have to do is wait for ID-31, ID-Stable,
>>>>> or maybe even ID-NT, in other words some version that is you are
>>>>> comfortable with and bite the bullet then.
>>>>>
>>>>> >From the looks of it, there are not going to be that many versions
>>>>> released before v1, so bite the bullet you will, sooner or later.
>>>>>
>>>>> Here, I solved your problem.  Let's get back to coding!
>>>>>
>>>>>   - Dmitri.
>>>>>
>>>>
>>
>> --
>> Kazuho Oku
>>
>