Re: QUIC ossification

Christian Huitema <huitema@huitema.net> Wed, 13 February 2019 17:28 UTC

Return-Path: <huitema@huitema.net>
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 CD0C4130E6E for <quic@ietfa.amsl.com>; Wed, 13 Feb 2019 09:28:30 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.598
X-Spam-Level:
X-Spam-Status: No, score=-2.598 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, MIME_QP_LONG_LINE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=unavailable autolearn_force=no
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 Yxb_qajImOW8 for <quic@ietfa.amsl.com>; Wed, 13 Feb 2019 09:28:28 -0800 (PST)
Received: from mx43-out1.antispamcloud.com (mx43-out1.antispamcloud.com [138.201.61.189]) (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 120D3130E69 for <quic@ietf.org>; Wed, 13 Feb 2019 09:28:28 -0800 (PST)
Received: from xsmtp01.mail2web.com ([168.144.250.230]) by mx36.antispamcloud.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.89) (envelope-from <huitema@huitema.net>) id 1gtyKc-0003tQ-Go for quic@ietf.org; Wed, 13 Feb 2019 18:28:25 +0100
Received: from [10.5.2.49] (helo=xmail11.myhosting.com) by xsmtp01.mail2web.com with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.63) (envelope-from <huitema@huitema.net>) id 1gtyKW-0007Il-Up for quic@ietf.org; Wed, 13 Feb 2019 12:28:21 -0500
Received: (qmail 3666 invoked from network); 13 Feb 2019 17:28:15 -0000
Received: from unknown (HELO [192.168.200.65]) (Authenticated-user:_huitema@huitema.net@[72.235.197.82]) (envelope-sender <huitema@huitema.net>) by xmail11.myhosting.com (qmail-ldap-1.03) with ESMTPA for <dschinazi.ietf@gmail.com>; 13 Feb 2019 17:28:14 -0000
Content-Type: multipart/alternative; boundary="Apple-Mail-5F153DC7-6AD0-41D0-A95E-DEB0342BA718"
Mime-Version: 1.0 (1.0)
From: Christian Huitema <huitema@huitema.net>
X-Mailer: iPhone Mail (16D57)
In-Reply-To: <CA+9kkMC95TnFatowKU6121g+1DPy1hMNbKPagveMfKCXtpFSUQ@mail.gmail.com>
Date: Wed, 13 Feb 2019 07:28:11 -1000
Cc: Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com>, Roberto Peon <fenix@fb.com>, David Benjamin <davidben@google.com>, Martin Thomson <mt@lowentropy.net>, Ian Swett <ianswett=40google.com@dmarc.ietf.org>, David Schinazi <dschinazi.ietf@gmail.com>, "quic@ietf.org" <quic@ietf.org>, Martin Duke <martin.h.duke@gmail.com>
Content-Transfer-Encoding: 7bit
Message-Id: <5B7F7D53-546D-4E3F-A0FC-AC29B1B05742@huitema.net>
References: <CAM4esxTm0GiXnow4Vyv0UX6kFW4U3zJgVrN_JzD31Sm6sxoYGg@mail.gmail.com> <1550007332.441557.1656692832.0E5412AE@webmail.messagingengine.com> <9425344B-D72F-474D-A549-AA2453E57F19@fb.com> <CAPDSy+5LikoojquLhaW58DbJ3VrGXUViaD0aHcTkxBJGzFjgQA@mail.gmail.com> <47E7A834-B6CD-4D73-BF49-8768A48CADF0@fb.com> <CAM4esxThzPJUxU7R5-CY-ZcgmqhYdPFMoM5Fg17vN-Hsk_pJ8A@mail.gmail.com> <CAKcm_gMmxeHHN3dtH9kby_En96oPwTqrfHE=wpqy5Z0YbX4png@mail.gmail.com> <CAN1APdegy8n3+8J-pkgB6f-SNxHtju9p1Hiyct2tHWQ0KyeiGg@mail.gmail.com> <CA+9kkMC95TnFatowKU6121g+1DPy1hMNbKPagveMfKCXtpFSUQ@mail.gmail.com>
To: Ted Hardie <ted.ietf@gmail.com>
Subject: Re: QUIC ossification
X-Originating-IP: 168.144.250.230
X-Spampanel-Domain: xsmtpout.mail2web.com
X-Spampanel-Username: 168.144.250.0/24
Authentication-Results: antispamcloud.com; auth=pass smtp.auth=168.144.250.0/24@xsmtpout.mail2web.com
X-Spampanel-Outgoing-Class: unsure
X-Spampanel-Outgoing-Evidence: Combined (0.21)
X-Recommended-Action: accept
X-Filter-ID: EX5BVjFpneJeBchSMxfU5iwGE3iHBjJxVMwAjcmM0yp602E9L7XzfQH6nu9C/Fh9KJzpNe6xgvOx q3u0UDjvO37pNwwF1lRXh5rzvPzo9Jts1ujulqUFmMITHM77eiVihMzZXIjroi7Vz3oVD5FaUc7i TvJ2/ZGzVWB9scFAaCdIFaUvXN+CI+RGy3Me16pBpxvnk7PJGygctl3LC86inx/TBCf6oYXAWGet lavcAjD9ytQxIHf9lN5jjLJaPK8l4YBmPrqPoeRXD34azf1rYZv5uZUEePrXZkexHL9EC3AAJAfA 9MMVcQ9WVjD1q+Rbd9IPG/DQ2p+GU04sTuYFs91jhnM/Mbva2XLV/LIEzaKyLm0zESXAkIAT8ZKA DvsGI5uh86ZVnyOrYkLMWyEaRt9fxN2oReTDHAyOynaY0CmHJLVH4DfVNbPXJmiLfub/IRFsicyJ MEhQFtD8PLoiniWmsFByBoXAuCZEyg59LM/9rUJrEbVA84BZVscMTXpbpuxXJTL417vaJWq5kk+j cuidX4Ts4xdG+C13IyWeZaIRAGcxrXh6p78nNqdl8fWv5nvmah7oAQX1Q8bvqOef6xGPEExqYyyy 76sahQMSRKVqJvBXd7I82n0qpCzrPWiSwKPXNKNk2RVY2K5nyLgw1RWkNIWnHjoiI9QIik6sV5hq 8RGminksXtFq8ejOBuf1PiUt8a2Lj9MmCjDfgJI6+RA1ehb6HWONF4LFnY3FB8iDg5/bq7ChmPMN Ycw1QSmRJ7h2aIvhti8a039iil7t/uVVX0AgnCbdBdNmvfXDyuhm4zuNRcgRKiGg7nXFaZTxCXRq rnqpvNj9xYi9OgZhih19I4GlR3I7yPSC6eTb8vy+NTKQHNkjJg8xvPcdYB8XrwJaVYn9nnZjaUrj DGzQ2f27lItOpPwlvQ6ktwDuRituj6ZEfB9v4x8THVh0rVtlyOZYRaCjaXhrY3nerbmurCmoQsay Zkd2YakTHWoyevr4xM5tUrEfL92iWzfzWX2vc1ctxv2vDEIpeWV/lG6Wmg==
X-Report-Abuse-To: spam@quarantine9.antispamcloud.com
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/ZPX1JZd-zWhorNSb0-WpffD0wDo>
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, 13 Feb 2019 17:28:31 -0000

How about an IANA registry of version numbers, tied to the extension process?

-- Christian Huitema 

> On Feb 13, 2019, at 7:17 AM, Ted Hardie <ted.ietf@gmail.com> wrote:
> 
>> On Wed, Feb 13, 2019 at 9:14 AM Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com> wrote:
> 
>> There is the risk that middle boxes learn that versions mean nothing, and that they are all the same, akin to crying wolf.
>> 
> I tend to agree with this. Version numbers should shift when the interoperability among parties to the protocol shifts.  While you can artificially create that shift in closed system, teaching the ecosystem that the shifts are meaningless doesn't seem to advance the general goal.
> 
> Ted
> 
>  
>> If it also mutated transport parameters and other observables, it would start being a defence.
>> 
>> Alas, once 1.0 hits, things are back to normal.
>> So I doubt this exercise would be worthwhile.
>> 
>> But, I don’t have any strong opinion.
>> 
>>> On 13 February 2019 at 17.56.47, Ian Swett (ianswett=40google.com@dmarc.ietf.org) wrote:
>>> 
>>> Previously David Benjamin suggested spinning a new version of QUIC in Chrome for every Chrome milestone with the only change being the version number and the Initial keys.  I'd be curious how the WG feels about that idea?
>>> 
>>>> On Wed, Feb 13, 2019 at 11:17 AM Martin Duke <martin.h.duke@gmail.com> wrote:
>>>> I agree that a fast v2 would help here. However, it's hard to count on a fast IETF process, and even then the middlebox can be pretty dumb and still drop version > 2.
>>>> 
>>>> I agree that David's scheme, by having the Initial be a v1 packet, may get that one through. But then you have subsequent long headers with the new version, which may still end badly.
>>>> 
>>>> I don't see a good solution here, right now. Although it shouldn't be written in the spec, the working group should have some sort of contingency plan for how to proceed if the version field ossifies.
>>>> 
>>>>> On Tue, Feb 12, 2019 at 4:21 PM Roberto Peon <fenix@fb...com> wrote:
>>>>> I don’t have an opinion on how version is negotiated yet.
>>>>> I’m not convinced it is easy to get right. It may be more correct for me to say that I’m convinced it is reasonable difficult to get right because it is the most important of the various invariants.
>>>>> 
>>>>> I also suspect that you need more than one way to do it, e.g. in-band and out-of-band (which could be in-band in a V2 to allow for upgrade to something else). Then does a client cache the version? For how long/where? Per IP? Hostname? (blah blah.. etc. etc.)
>>>>> 
>>>>> I can say that the ALPN and NPN approaches each had their positives and negatives, and in the end, having something like either is probably good enough.
>>>>> 
>>>>> Rather than an opinion on how it should be done, I have an opinion that we need to add this soon, as a V2.
>>>>> 
>>>>> -=R
>>>>> 
>>>>>  
>>>>> 
>>>>> From: David Schinazi <dschinazi.ietf@gmail.com>
>>>>> Date: Tuesday, February 12, 2019 at 4:13 PM
>>>>> To: Roberto Peon <fenix@fb.com>
>>>>> Cc: Martin Thomson <mt@lowentropy.net>, "quic@ietf.org" <quic@ietf.org>
>>>>> Subject: Re: QUIC ossification
>>>>> 
>>>>>  
>>>>> 
>>>>> I think we may be able to limit ossification of version numbers by adding some GREASE to the (upcoming) in-band compatible version upgrade extension (what used to be EKR's PR). The idea of that extension is that the client sends a QUICv1 initial containing a transport parameter indicating it supports this extension and what versions of QUIC it supports. The server can then send its replies with a new QUIC version number. Back to GREASE: one option here would be for us to burn some versions for "v1 compatible version negotiation greasing" (similar but different to 0x?a?a?a?a) and servers can in-band upgrade to those versions. But we could also do that in the reverse direction: the servers advertise support for one of these in Alt-Svc and clients send their Initial to that version, and the server can then perform in-band version change to v1, to another of these versions, or just keep the client's version for the life of this connection. This will cause ossifying middleboxes to break these connections.
>>>>> 
>>>>>  
>>>>> 
>>>>> Thoughts?
>>>>> 
>>>>>  
>>>>> 
>>>>> David
>>>>> 
>>>>>  
>>>>> 
>>>>> On Tue, Feb 12, 2019 at 2:15 PM Roberto Peon <fenix@fb.com> wrote:
>>>>> 
>>>>> My fear/experience around this is why I'd strongly recommend doing a QUIC V2 as soon as possible where the delta from V1 -> V2 is limited to *solely* what is necessary for version negotiation.
>>>>> 
>>>>> We can simultaneously have a V3 conversation which would  include whatever else we decide we need to change/add as a separate conversation which depends on V2.
>>>>> 
>>>>> -=R
>>>>> 
>>>>> On 2/12/19, 1:36 PM, "QUIC on behalf of Martin Thomson" <quic-bounces@ietf.org on behalf of mt@lowentropy.net> wrote:
>>>>> 
>>>>>     On Wed, Feb 13, 2019, at 08:18, Martin Duke wrote:
>>>>>     > 1) Version. I can't think of any immediate negative consequences for a
>>>>>     > middlebox that drops any long header with a version > 1. TLS 1.3 had to
>>>>>     > surrender to this problem by hiding the version elsewhere.
>>>>>     >
>>>>>     > We might avoid this by routinely coalescing long headers with random
>>>>>     > version fields to connection-critical packets. Beyond that, I'm out of
>>>>>     > great ideas. If we don't have a robust defense against this, we ought to
>>>>>     > put some thought into how to deploy a v2 if the version fields is
>>>>>     > inoperable.
>>>>> 
>>>>>     As Mike points out, the Length field is version-specific, so there is no real defense here other than - as many have suggested - using the version field actively.  That means shipping another version.  In a sense, the fact that Google are still not on the same version gives us some time, but it could mean that we might want to look toward having the "add version negotiation and fallback protection" draft define a version rather than an extension.
>>>>> 
>>>>>     > 2) Client Transport Parameters. Initial Keys will help a little bit, but in
>>>>>     > TLS1.3 CCS still sorta exists because middleboxes are inspecting packets so
>>>>>     > deeply. It's not viable for v2 to have the same transport parameters; it's
>>>>>     > only slightly less gross to send v2 client TPs in some later message and
>>>>>     > have to send a fairly bulky "fake" set of v1 TPs in the client hello to get
>>>>>     > through the network.
>>>>> 
>>>>>     I'm not concerned about transport parameters if the above issue is fixed.  TLS had no real issues with extensions, and it looks like we already have the start of a pipeline of extensions coming.  v2 can share the transport parameter extension, unless we decide to change the format in a non-compatible way.
>>>>> 
>>>>>     (Note: CCS in TLS 1.3 only exists because middleboxes were inspecting a lot, yes, but it also indicates that they weren't inspecting enough, because the compatibility hack we have wouldn't work if they did a proper job.)
>>>>> 
>>>>>