Re: QUIC ossification

Martin Duke <martin.h.duke@gmail.com> Wed, 13 February 2019 16:17 UTC

Return-Path: <martin.h.duke@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 9F137128D0B for <quic@ietfa.amsl.com>; Wed, 13 Feb 2019 08:17:25 -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 rrihVaU12W8r for <quic@ietfa.amsl.com>; Wed, 13 Feb 2019 08:17:23 -0800 (PST)
Received: from mail-wm1-x335.google.com (mail-wm1-x335.google.com [IPv6:2a00:1450:4864:20::335]) (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 7169E128701 for <quic@ietf.org>; Wed, 13 Feb 2019 08:17:23 -0800 (PST)
Received: by mail-wm1-x335.google.com with SMTP id t200so3060777wmt.0 for <quic@ietf.org>; Wed, 13 Feb 2019 08:17:23 -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=p1KLRoL07SlaruzEmUhIEHXDHoq7EOC5kzL5u6kijmM=; b=kZMYzJjLCEtQT207twyPTzHrA0N8zBDNrvgtIYjhZPUlbrKx+966RR0ndH0ftN3fqM C+JxVJaFrUd+CGI9n/CE/qDT5TwDSOlycM6H84Anmoha9AE2QcFcPROXIXV2Ww5LzS+O oWBWUbCghaIG3ywrkWo68Cc9V/5jvTDz7O/IoKw7Oyu0cILP7xAmaJDHd151zKujVEO+ f7cmkH6/yvpIPhxFowfenVrwrQ7f4T2Y+75ZBH9qsh3hjneDnYolx6Se3lEZZnkI+SP6 mQzrkaijGsqpIJsvj8Q26C9Pk4FiofA535dfD6cRrQeFaCsUipMRnOl++Ygn1eUkr5Oq 0nBg==
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=p1KLRoL07SlaruzEmUhIEHXDHoq7EOC5kzL5u6kijmM=; b=uAnpooxk92l/TkWadns8PqT6qgRpFaBgM+IlQfxsgB4siCdDTeQnuzKqO5J17hLR7W Ok51npcNYrIqDFqS8HLfN+TUUW5QGVuQY+Wyak86ZKDJDexFR3qeDypp8Y2N9UVvAFZM 2L3+B/4SovBG3zUkBImlwvtT8Vq9oNO/cIJuduPqw7S5kv2tbZU9xr06rjx6xQersZxK 0WWnyQ20eCxcjpoIBCwoqigWe1jcEwFPnqCetmgkHMj9TDxnA+EtkpYEuontKJugfhrt 6iUjwP0XNizA5BhD8MKCn8TOB6S4G4HqVtrHMfMplxT4u6qfSbRCQ/h82yJDEk1u+iNO FvEA==
X-Gm-Message-State: AHQUAuZrTKBGTlCu4crsicB6FoDzpP9ptcfixaSutR5OTx3BRTQ1N9l/ 8f90BCkKVf4ivLo5dQEaXU/BHydbPAYTTyLm51w=
X-Google-Smtp-Source: AHgI3IaY2oBfVf68Bba7xAwxSBAsajy+IqfNKkVLZu+7EV5kd0WX3gsCHm7JQXL6Eo5V0ppFNPVq0PlUgd0TiYsU0XU=
X-Received: by 2002:a7b:c359:: with SMTP id l25mr931866wmj.130.1550074640408; Wed, 13 Feb 2019 08:17:20 -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>
In-Reply-To: <47E7A834-B6CD-4D73-BF49-8768A48CADF0@fb.com>
From: Martin Duke <martin.h.duke@gmail.com>
Date: Wed, 13 Feb 2019 08:17:07 -0800
Message-ID: <CAM4esxThzPJUxU7R5-CY-ZcgmqhYdPFMoM5Fg17vN-Hsk_pJ8A@mail.gmail.com>
Subject: Re: QUIC ossification
To: Roberto Peon <fenix@fb.com>
Cc: David Schinazi <dschinazi.ietf@gmail.com>, "quic@ietf.org" <quic@ietf.org>, Martin Thomson <mt@lowentropy.net>
Content-Type: multipart/alternative; boundary="0000000000005126c60581c8e09b"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/aP6kIBjV45wq7CoKKgfqZqf7fWQ>
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:17:26 -0000

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