Re: QUIC ossification

Ian Swett <ianswett@google.com> Wed, 13 February 2019 16:56 UTC

Return-Path: <ianswett@google.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 10F7E12D829 for <quic@ietfa.amsl.com>; Wed, 13 Feb 2019 08:56:30 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -17.5
X-Spam-Level:
X-Spam-Status: No, score=-17.5 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIMWL_WL_MED=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, ENV_AND_HDR_SPF_MATCH=-0.5, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=0.001, USER_IN_DEF_DKIM_WL=-7.5, USER_IN_DEF_SPF_WL=-7.5] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=google.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 kWBcg5q2NPWq for <quic@ietfa.amsl.com>; Wed, 13 Feb 2019 08:56:27 -0800 (PST)
Received: from mail-wr1-x431.google.com (mail-wr1-x431.google.com [IPv6:2a00:1450:4864:20::431]) (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 6DC441200ED for <quic@ietf.org>; Wed, 13 Feb 2019 08:56:26 -0800 (PST)
Received: by mail-wr1-x431.google.com with SMTP id q1so3321454wrp.7 for <quic@ietf.org>; Wed, 13 Feb 2019 08:56:26 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=+hQnhf0FCnPxROBTfZVwskmtQ++55bSx8OMUVEVuNQk=; b=OeJ9m4/skeOlwpq1EeCZW/i/EhLNkaebgMDqF0Y3DM3dyOgM5In+n0l1I/BxOF4HI6 gRZNgIVLCSMegSqhdpVhxcPQIavgVimMZjevUirC6U2cFlCsge/5ZxjXuKeXDQEGGOQK yy7Ov7yGD2V5Su2mRUNHZ5cf2jCaetDwinYAnaJzsHnELmtaXILPk4D98W8++EZ0m2gM P4MbLGFcPa0egUqXPAE7sN3t34u2Yrlx+VoVvmQfw/NFnnxH/jsyxughJ+jHwyj5Fzs1 UZyxoiuGiUJ2cvAP7+NBndeWkXPv9saYpIYdAakTDD3+5lm0QKJwjNsr4cLTKwQX8DWy 9fDA==
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=+hQnhf0FCnPxROBTfZVwskmtQ++55bSx8OMUVEVuNQk=; b=Zi8OTMm9MMELAtqOvlIZDDGc5Eo3h7WebH9FS0IuoEl2XQvAeIm4Q0yL+iURdhw1Rh meTZVb528EoZgU4ebBhNXvygX4mBWonljDy0Q3myRDDYkE0izhzNaT2cXckR1yFwikJl swUU7qUApP2Kqi0iGJs3OlmJCksOPbvkvS2G87u4z7KRFy1dIc2ZSMNlJBDBn9eykSM4 LBwUtZbsG07w7YC+509pEsmR5os1QtCzWd/EzGXH8MJhJ5ONev57goSWX5W3oZSQWcfQ Lp9XeYEC4UiuNHezSImodpk+G3MGcZpl5bI0v2HJRuPILjzdDWY2pgxhS1ZFceQriXj+ s5Kg==
X-Gm-Message-State: AHQUAuaWGJV4FwoGBndySINVLSCo5Mx+FOSzuaUzDhs3rukUDsKkV2Rs 1dakC/K1F/CT3HRyUfQFCUJCAxDdCObOzlyVYHwCew==
X-Google-Smtp-Source: AHgI3IZN49B1EGuqYNQgPQoErIF+qDtRH8QHK0mC2b/K2MD96FUA9dzoOp27QYJ+a9smlg5FQNsIsXJMhMSOPPbP1Ns=
X-Received: by 2002:adf:e290:: with SMTP id v16mr1269768wri.100.1550076984646; Wed, 13 Feb 2019 08:56:24 -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>
In-Reply-To: <CAM4esxThzPJUxU7R5-CY-ZcgmqhYdPFMoM5Fg17vN-Hsk_pJ8A@mail.gmail.com>
From: Ian Swett <ianswett@google.com>
Date: Wed, 13 Feb 2019 11:56:11 -0500
Message-ID: <CAKcm_gMmxeHHN3dtH9kby_En96oPwTqrfHE=wpqy5Z0YbX4png@mail.gmail.com>
Subject: Re: QUIC ossification
To: Martin Duke <martin.h.duke@gmail.com>
Cc: Roberto Peon <fenix@fb.com>, David Schinazi <dschinazi.ietf@gmail.com>, "quic@ietf.org" <quic@ietf.org>, Martin Thomson <mt@lowentropy.net>, David Benjamin <davidben@google.com>
Content-Type: multipart/alternative; boundary="0000000000000bcf360581c96c2a"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/CBsK4gh9L30mlhMW6V2ZppBz9nY>
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 16:56:30 -0000

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