Re: draft-30 non-implementable, please

Eric Kinnear <ekinnear@apple.com> Wed, 12 August 2020 03:13 UTC

Return-Path: <ekinnear@apple.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 21E8B3A0EB7 for <quic@ietfa.amsl.com>; Tue, 11 Aug 2020 20:13:59 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.098
X-Spam-Level:
X-Spam-Status: No, score=-2.098 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, HTML_MESSAGE=0.001, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=apple.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 53hmHyZrb_q3 for <quic@ietfa.amsl.com>; Tue, 11 Aug 2020 20:13:56 -0700 (PDT)
Received: from ma1-aaemail-dr-lapp01.apple.com (ma1-aaemail-dr-lapp01.apple.com [17.171.2.60]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 908063A0EB6 for <quic@ietf.org>; Tue, 11 Aug 2020 20:13:56 -0700 (PDT)
Received: from pps.filterd (ma1-aaemail-dr-lapp01.apple.com [127.0.0.1]) by ma1-aaemail-dr-lapp01.apple.com (8.16.0.42/8.16.0.42) with SMTP id 07C3CnFf044605; Tue, 11 Aug 2020 20:13:51 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=from : message-id : content-type : mime-version : subject : date : in-reply-to : cc : to : references; s=20180706; bh=5t887dztTYJ7sB/r1dcHnqwxtqtfIJHxcsJm3QBlv1E=; b=gQxQoaw8b4yOFlw8sBPPHNfIEldMua5X2aJE13NjOMaSVPB535ipjZ2eAg3r/1o3mMrJ dqN+uNe2Q34uXpYENHRRpWdZoVz5NIP+68CJlYDKxlnogo0bVzL1uca14P6uXkEf/SAq 1G+u43X89WcOEwnQrKMrQt1v4qSZbcMaTxheLdMMbin3S7TsgauvFVrcmReovMkSZNfN 2Loickda551e46pSmLHXVZo/EcJqDPUc8W8/KAZB7d3YrMlQsTgOmqohCvN5Hxxfpc7r HJKGqyFQhP/rIvxyHQj8tXuPLuZhslglm2+3/6f+BkcU7Caay39W9NfryegsTHKWyal6 8g==
Received: from rn-mailsvcp-mta-lapp01.rno.apple.com (rn-mailsvcp-mta-lapp01.rno.apple.com [10.225.203.149]) by ma1-aaemail-dr-lapp01.apple.com with ESMTP id 32stqht68r-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Tue, 11 Aug 2020 20:13:51 -0700
Received: from rn-mailsvcp-mmp-lapp04.rno.apple.com (rn-mailsvcp-mmp-lapp04.rno.apple.com [17.179.253.17]) by rn-mailsvcp-mta-lapp01.rno.apple.com (Oracle Communications Messaging Server 8.1.0.6.20200729 64bit (built Jul 29 2020)) with ESMTPS id <0QEX00IZ5KZ273B0@rn-mailsvcp-mta-lapp01.rno.apple.com>; Tue, 11 Aug 2020 20:13:50 -0700 (PDT)
Received: from process_milters-daemon.rn-mailsvcp-mmp-lapp04.rno.apple.com by rn-mailsvcp-mmp-lapp04.rno.apple.com (Oracle Communications Messaging Server 8.1.0.6.20200729 64bit (built Jul 29 2020)) id <0QEX00700K6M4N00@rn-mailsvcp-mmp-lapp04.rno.apple.com>; Tue, 11 Aug 2020 20:13:50 -0700 (PDT)
X-Va-A:
X-Va-T-CD: aefb07da2fd6938664ce892a3812191f
X-Va-E-CD: 4763b16f6ed4fd9ea504070b8978ca91
X-Va-R-CD: 3243154e50201e2afe36d6decf6a33f6
X-Va-CD: 0
X-Va-ID: 5a3906bc-7db4-4933-b92e-4ff4f5ea8239
X-V-A:
X-V-T-CD: aefb07da2fd6938664ce892a3812191f
X-V-E-CD: 4763b16f6ed4fd9ea504070b8978ca91
X-V-R-CD: 3243154e50201e2afe36d6decf6a33f6
X-V-CD: 0
X-V-ID: 3a7361db-a2e8-43aa-ab9f-1cec31910a52
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235, 18.0.687 definitions=2020-08-11_19:2020-08-11, 2020-08-11 signatures=0
Received: from [17.150.213.150] (unknown [17.150.213.150]) by rn-mailsvcp-mmp-lapp04.rno.apple.com (Oracle Communications Messaging Server 8.1.0.6.20200729 64bit (built Jul 29 2020)) with ESMTPSA id <0QEX0022ZKZ1Z200@rn-mailsvcp-mmp-lapp04.rno.apple.com>; Tue, 11 Aug 2020 20:13:50 -0700 (PDT)
From: Eric Kinnear <ekinnear@apple.com>
Message-id: <84EF35F3-F647-49B1-875B-8A2B49CE9CD4@apple.com>
Content-type: multipart/alternative; boundary="Apple-Mail=_39BD3672-9694-4FCB-B115-AC29E229C128"
MIME-version: 1.0 (Mac OS X Mail 13.4 \(3608.120.23.2.1\))
Subject: Re: draft-30 non-implementable, please
Date: Tue, 11 Aug 2020 20:13:49 -0700
In-reply-to: <CACpbDce_FmkL-XYy9M2=_neAzYhx2O_SCHCPaT_pe+8iJmGGfw@mail.gmail.com>
Cc: Martin Duke <martin.h.duke@gmail.com>, Ryan Hamilton <ryan@optimism.cc>, Ian Swett <ianswett=40google.com@dmarc.ietf.org>, Matt Joras <matt.joras@gmail.com>, Nick Harper <nharper=40google.com@dmarc.ietf.org>, Christian Huitema <huitema@huitema.net>, Lucas Pardue <lucaspardue.24.7@gmail.com>, David Schinazi <dschinazi.ietf@gmail.com>, IETF QUIC WG <quic@ietf.org>, Kazuho Oku <kazuhooku@gmail.com>
To: Jana Iyengar <jri.ietf@gmail.com>
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> <CACpbDce_FmkL-XYy9M2=_neAzYhx2O_SCHCPaT_pe+8iJmGGfw@mail.gmail.com>
X-Mailer: Apple Mail (2.3608.120.23.2.1)
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235, 18.0.687 definitions=2020-08-11_19:2020-08-11, 2020-08-11 signatures=0
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/Auc5c2-C1qfG_vJJwDpbrEzjx7M>
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:13:59 -0000


> On Aug 11, 2020, at 8:04 PM, Jana Iyengar <jri.ietf@gmail.com> wrote:
> 
> 
> 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.

I’d also second what David says below, from Dimitri’s categories, the other two categories (1) library and (2) client also do things like testing and deploying as well. Many of the same problems arise for our testing and deployment as are present for Chrome.

So the risk in my mind is much along the lines of what Martin outlined here: it really boils down to the number of possible combinations that we end up with. We stated at one point that we wanted to do some large scale testing and get deployment experience from several implementations. 

It seems like plan works best when the maximum number of people can talk to the maximum number of other people. The more we make different draft versions that don’t all speak to each other because of generally-one-line bugfixes that need to coordinate, the less we end up succeeding at that goal. 

So while it’s great to not drop -29 support, I think letting -30 be “legit” -30 yet not making a new intro draft for it would be a good balance. We all keep -29 deployed and if you on-the-side want to support -30 then that’s okay too.

Thanks,
Eric


> 
> On Tue, Aug 11, 2020 at 5:12 PM Martin Duke <martin.h.duke@gmail.com <mailto: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.

I’d tend to strongly agree with all three of these points. 
> 
> 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 <mailto:kazuhooku@gmail.com>> wrote:
> 
> 
> 2020年8月12日(水) 7:32 Nick Harper <nharper=40google.com@dmarc.ietf.org <mailto:40google.com@dmarc.ietf.org>>:
> 
> 
> On Tue, Aug 11, 2020 at 3:00 PM David Schinazi <dschinazi.ietf@gmail.com <mailto: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 <mailto: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