Re: QUIC ossification

Ted Hardie <ted.ietf@gmail.com> Wed, 13 February 2019 17:17 UTC

Return-Path: <ted.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 3A7A3129532 for <quic@ietfa.amsl.com>; Wed, 13 Feb 2019 09:17:33 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.998
X-Spam-Level:
X-Spam-Status: No, score=-1.998 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, 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 QFmKa2_ggb8l for <quic@ietfa.amsl.com>; Wed, 13 Feb 2019 09:17:30 -0800 (PST)
Received: from mail-it1-x12d.google.com (mail-it1-x12d.google.com [IPv6:2607:f8b0:4864:20::12d]) (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 781A01289FA for <quic@ietf.org>; Wed, 13 Feb 2019 09:17:30 -0800 (PST)
Received: by mail-it1-x12d.google.com with SMTP id h6so6092343itl.1 for <quic@ietf.org>; Wed, 13 Feb 2019 09:17:30 -0800 (PST)
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=idwawwT711SyMnA+8B8iHV40F+R2lhgspv3sQGUllks=; b=ixuxb7paQezJSTM8L1OV2veXK2LhTO+UZHU23XBuaPsfL4joBGoKhMrmGV2Xf1so6t K+mTd7gx3rSQgGQmGqeGo1XlWf3t1dnCXEv6s1pZ1tT7v+d0IfvQ3xzTtqPYoezfkkv+ AQYalFnF7vYWyxeYv/szBSxgSoreaINicUDD9B0zpvO2FG1sxrl1o7f+XRaV6WPtjaiQ 9vzG/Thk3Tcw/3TacBpbl4q8vUYRrwXA3HtBy03b88vL6kap7DqZvO6Mea6/YKNEZtoI /tWq5nulB0bfRSlpGRvHzssqbv7ijvMUDjQ/6simFOHjOkzLb7VcEXCxmNxq1fALhU8s z7tQ==
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=idwawwT711SyMnA+8B8iHV40F+R2lhgspv3sQGUllks=; b=prpvyDRijdnD9P7QfPcoZSVYc3Qm1nn8QTq0luhOgZuG+EDknlP+iWacI8DZdq9Cj/ OxHQz3C/z4bil+TLfFRobCO3ehCtIUA+GeKUG1sjjYUarqv/qqlDRi5M4v2Jc9+aobC/ ivUwZr6TKBjc0zRba+3FeY/JsI9t2JfErEnn9+3PMZksqnucn53NzMVyVnFyakRyNUu0 7c9un2PgZ5h86nFcw7Sqm30lpKgjlD5OJzPZCOzeG3+5wAgeR0bionCr5H8+2bhnuNoF +EITpgD62k3e08o4to6M9hHX33AdADxcttMlTw3kJQGrXKvo8bWHnEmDRNYYhblBSFQC 0yJQ==
X-Gm-Message-State: AHQUAuZmuBIGJmA9v7XdQ1FUUXGEPPfk87qV+cs2ndAH8LUxI7X2qFZb 9EwGKLlHSK4ZLzPhHzdloLAQBavJwsXjKyi+kWs=
X-Google-Smtp-Source: AHgI3IaRxtlBnp/0pWneGhy6Pr7kTO7jh4w4fSBY8ovH9rgL2EGAvlmfpiZSt+hi60fq+7HEhCapn4oUVUarjhOWzv0=
X-Received: by 2002:a5d:8d90:: with SMTP id b16mr1000348ioj.35.1550078249297; Wed, 13 Feb 2019 09:17:29 -0800 (PST)
MIME-Version: 1.0
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>
In-Reply-To: <CAN1APdegy8n3+8J-pkgB6f-SNxHtju9p1Hiyct2tHWQ0KyeiGg@mail.gmail.com>
From: Ted Hardie <ted.ietf@gmail.com>
Date: Wed, 13 Feb 2019 09:17:01 -0800
Message-ID: <CA+9kkMC95TnFatowKU6121g+1DPy1hMNbKPagveMfKCXtpFSUQ@mail.gmail.com>
Subject: Re: QUIC ossification
To: Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com>
Cc: Ian Swett <ianswett=40google.com@dmarc.ietf.org>, Martin Duke <martin.h.duke@gmail.com>, David Schinazi <dschinazi.ietf@gmail.com>, "quic@ietf.org" <quic@ietf.org>, David Benjamin <davidben@google.com>, Roberto Peon <fenix@fb.com>, Martin Thomson <mt@lowentropy.net>
Content-Type: multipart/alternative; boundary="0000000000006c6cb20581c9b706"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/gfNGG0qMNwL8UfBWqI-9CQP9TgY>
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:17:33 -0000

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