Re: Second Implementation Draft Guidelines

Eric Rescorla <ekr@rtfm.com> Fri, 14 July 2017 17:45 UTC

Return-Path: <ekr@rtfm.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 E297C131756 for <quic@ietfa.amsl.com>; Fri, 14 Jul 2017 10:45:55 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Level:
X-Spam-Status: No, score=-1.899 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=rtfm-com.20150623.gappssmtp.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 eT18VrH8NVyI for <quic@ietfa.amsl.com>; Fri, 14 Jul 2017 10:45:53 -0700 (PDT)
Received: from mail-yw0-x229.google.com (mail-yw0-x229.google.com [IPv6:2607:f8b0:4002:c05::229]) (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 16ABC131760 for <quic@ietf.org>; Fri, 14 Jul 2017 10:45:53 -0700 (PDT)
Received: by mail-yw0-x229.google.com with SMTP id a12so28225150ywh.3 for <quic@ietf.org>; Fri, 14 Jul 2017 10:45:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rtfm-com.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=+fS4wyD9YfVtMaGnCF/pmfB7LFU1xOUQAani5svvKBg=; b=bYBHkKIZMCkefEy60AIerGzGiQUfatzvv2mpV5YEvdSkySIr1E22L1WF4YKaQot6Aj nW34rSfOj+s0n4ksY4XKZagFDmri8jBBn5BtOXUTOKwoRWcu78i1d5GDF35dHGmzdLMB DJK2Bdh4meLHLXxolwo9YXnY3OOBXo7uGVTHuQiZ+FE65RRq6T0yllhpv4CEsifWFtU6 +dOpu6EAevh45mJGrYZkinye80AtaTg8GvPMR7h4U1WAIhTwzbcyQsR0d3z4i36tcOHy a12lOodTDfaRgl1VAlnuDEhFb8AZTaNCw2CoW4q3AMQ7CHKuE2M63PuArgf5WdH6AAQA aXJw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=+fS4wyD9YfVtMaGnCF/pmfB7LFU1xOUQAani5svvKBg=; b=KwkwUbSa9GVhEqCtGCrpwq0sPKAVKxD8PKMgZ3Bx9xGHZ62dpETdZstzL8eZpgXe4j TQMRqtDv2OByZQ9Y2t27ZJvgeWu5uE4NuhfxD2SN4SUUN0YdvNV8d4E/4la0KpEqbw/L 65Rb9NEpO0Ng33QAoDmdvjV6BxhgZ8phUvFH+K1aiIQOQNGdNuQMHLw15+LYyIhxHfSl uj2s2fj7vhn+FNzWeXB/dt7oQbRTJxS2mLSGTINn3eleJAKy7mEhXQm8Mv++VCnccmLN VepjmExGduirm6ulKJSLMJYPlsg1Exu6EcjUCOI7XcqMrRiKh1g/zX4raXphTYt3iSTX WV7g==
X-Gm-Message-State: AIVw110aTwSJwTAbp8FtKijOhEAhHV6gBx0LiBFcIg/3WXtqjv9X8Hb8 KjzuQVMZ8+QlXYUulJrXhubwpdG9B3SG
X-Received: by 10.13.213.77 with SMTP id x74mr6814333ywd.311.1500054352283; Fri, 14 Jul 2017 10:45:52 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.13.215.9 with HTTP; Fri, 14 Jul 2017 10:45:11 -0700 (PDT)
In-Reply-To: <CAM4esxRb4+xMXgL=qNEnQiO53uJXL0AxRFN654N5vxAUj8LQHw@mail.gmail.com>
References: <CAM4esxQqbcuB_naqU+L-ZQ+8CF23oHN37u7OAfPOw_TT2yUBYQ@mail.gmail.com> <CAGD1bZa6vjLTdsyy3-3Kvg15BXZxtwWaBb2ajeBT_4gYGs10WA@mail.gmail.com> <7CF7F94CB496BF4FAB1676F375F9666A377241F8@bgb01xud1012> <CAGD1bZY=kXE1mkuG3LOBD7JOZD+HFgZGFu88i3_pWHHjtCjRVA@mail.gmail.com> <CANatvzzH4s=_rt8Dh2BEFj7f9sab8tV_Br0i7OAL+BnC0d59LQ@mail.gmail.com> <CAJ_4DfQKmBZoKt9onj2HrnM4TFF+Ket5NNCL5zy+2e-8Es9X9A@mail.gmail.com> <CANatvzwcvDqzfCJ2Sg0zPSNVmc7UAG__CxBRrOEHuXDqZyBnOw@mail.gmail.com> <CAM4esxQAUdYBOJi3tBe4=q4sSwOZub-+qtMzzz3z5M2sMhV9xA@mail.gmail.com> <CAKcm_gMTCrG+YmvnDDtn0qL9HeM-dN5tPpR9wr6A8U31c9p4CA@mail.gmail.com> <CAM4esxQ9CWQeQhb0vCqtmAHczZHcTQiKVccWg77XPEH7uXQnAA@mail.gmail.com> <CAKcm_gOSur0SJuAXvLgCZm-jQzJF54jH6i_P-QgRBzUnmELQXw@mail.gmail.com> <CAM4esxTnE335An=9Z00c15y88ZPZKs4VgLF3mAboU88WgtUTOA@mail.gmail.com> <CAKcm_gOvw5ynFXkpoiw3oBz0mue8_z4Y5qHmsRrukrhwhiQ5bQ@mail.gmail.com> <CANatvzy-wR6PGuTHm-xhBuGHNTwXCDgNJHT=DnE1tHeDVWHLuA@mail.gmail.com> <CAM4esxRb4+xMXgL=qNEnQiO53uJXL0AxRFN654N5vxAUj8LQHw@mail.gmail.com>
From: Eric Rescorla <ekr@rtfm.com>
Date: Fri, 14 Jul 2017 10:45:11 -0700
Message-ID: <CABcZeBMKdT4L1O85whgLTZ1sK5dBUk8D+TSdxBVN2z8S1UoEFQ@mail.gmail.com>
Subject: Re: Second Implementation Draft Guidelines
To: Martin Duke <martin.h.duke@gmail.com>
Cc: Kazuho Oku <kazuhooku@gmail.com>, Lucas Pardue <Lucas.Pardue@bbc.co.uk>, Jana Iyengar <jri@google.com>, Ian Swett <ianswett@google.com>, IETF QUIC WG <quic@ietf.org>, Ryan Hamilton <rch@google.com>
Content-Type: multipart/alternative; boundary="001a114fa1b8cffa1e05544a9e11"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/VZ1sxMu53u9wmNmd5zpFVZ8_foA>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.22
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: Fri, 14 Jul 2017 17:45:56 -0000

I think it would be good to declare another "implementation draft" very
soon, with roughly the contents of -05. What I see people doing now is some
mix of -04 and -05(pre), and informally coordinating. It would probably be
easier if we just published -05 and said "do -05". I totally don't care if
we call it the second implementation draft or the first implementation
draft bis or anything else.

-Ekr


On Fri, Jul 14, 2017 at 9:50 AM, Martin Duke <martin.h.duke@gmail.com>
wrote:

> OK, I understand now. I've added a third option as you described. But I
> omitted
>
> Further revisions to mechanisms in the First Implementation Draft (e.g.
> changes to the public header format, connection close).
>
> as something that might not be entirely relevant to getting something
> deployed, in the interests of reducing scope. If that's a big mistake, let
> me know.
>
> On Thu, Jul 13, 2017 at 6:33 PM, Kazuho Oku <kazuhooku@gmail.com> wrote:
>
>> 2017-07-14 9:57 GMT+09:00 Ian Swett <ianswett@google.com>:
>> > I think it is an MVP of HTTP over QUIC, and one I believe Google would
>> be
>> > willing to deploy at some scale.
>> >
>> > That's not to say I'm opposed to the other two options, but I have a
>> > preference for something I believe can run real applications with
>> reasonable
>> > performance, even if it's not ideal.
>>
>> +1.
>>
>> I agree that think that sending multiple HTTP requests / responses
>> over QUIC, with stateless HPACK would be a nicely balanced approach
>> that can be used deployed at some scale as well as one that can be
>> used for preliminary performance measurements.
>>
>> > On Thu, Jul 13, 2017 at 8:47 PM, Martin Duke <martin.h.duke@gmail.com>
>> > wrote:
>> >>
>> >> I'm a little concerned that a blend of the strategies leaves us with
>> >> something that still allows ossification and isn't quite enough for
>> decent
>> >> performance testing. But I did add your further clarifications about
>> HTTP/2,
>> >> and the "at scale" provision.
>> >>
>> >> Is your option 3 the MVP for something you'd like to do with this
>> >> iteration?
>> >>
>> >> On Thu, Jul 13, 2017 at 5:28 PM, Ian Swett <ianswett@google.com>
>> wrote:
>> >>>
>> >>> Thanks for the update.  I would suggest a third potential option,
>> which
>> >>> is a mix of what you have with a small clarification(in bold):
>> >>>
>> >>> Further revisions to mechanisms in the First Implementation Draft
>> (e.g.
>> >>> changes to the public header format, connection close).
>> >>>
>> >>> Transport Parameter Exchange. At the very least, the four parameters
>> >>> specified as MUST in the draft.
>> >>>
>> >>> Address validation and HelloRetryRequest
>> >>>
>> >>> An HTTP/2 application to require multiple streams (with stateless
>> HPACK
>> >>> compression, no QPACK, QCRAM, etc) and no server push.
>> >>>
>> >>>
>> >>> Any implementations that deploy at any scale must also do:
>> >>>
>> >>> Loss Recovery beyond the exising 1-RTO retransmissions. (I believe
>> this
>> >>> includes a number of concepts that are extensively tested in TCP and
>> has low
>> >>> interoperability concerns).
>> >>>
>> >>> Congestion Control
>> >>>
>> >>>
>> >>> The reasoning being that both stateless reset and 0RTT are a fair bit
>> of
>> >>> work to get right based on my experience, and are not critical to
>> having a
>> >>> useful QUIC application.
>> >>>
>> >>> On Thu, Jul 13, 2017 at 7:46 PM, Martin Duke <martin.h.duke@gmail.com
>> >
>> >>> wrote:
>> >>>>
>> >>>> Alright, I updated the second implementation draft significantly.
>> >>>>
>> >>>> https://github.com/quicwg/base-drafts/wiki/Second-Implementa
>> tion-Draft
>> >>>>
>> >>>> There are now two strategies: "Lock down the wire image" and "do
>> what we
>> >>>> need to allow useful performance testing". I much prefer the former
>> but it
>> >>>> is worth discussing, since people appear to be interested in both.
>> >>>>
>> >>>> It's also clear (at least to me) that we need to do basic stream
>> >>>> life-cycle stuff in either case, so that has moved into the "must
>> include"
>> >>>> category.
>> >>>>
>> >>>> Martin
>> >>>>
>> >>>> On Mon, Jul 10, 2017 at 5:06 PM, Ian Swett <ianswett@google.com>
>> wrote:
>> >>>>>
>> >>>>> Agreed, performance analysis is going to be useless in the absence
>> of
>> >>>>> loss recovery and congestion control.  Presumably anyone deploying
>> this at
>> >>>>> scale would implement the recovery draft in a relatively complete
>> manner,
>> >>>>> but that doesn't mean everyone has to do it.
>> >>>>>
>> >>>>> But there's nothing interesting to measure with no application.
>> >>>>>
>> >>>>> On Mon, Jul 10, 2017 at 12:55 PM, Martin Duke <
>> martin.h.duke@gmail.com>
>> >>>>> wrote:
>> >>>>>>
>> >>>>>> I'm not sure how "performance analysis" is going to function in the
>> >>>>>> absence of loss recovery or congestion control. An alternate
>> approach to
>> >>>>>> implementations is to tackle the big performance drivers first,
>> presumably
>> >>>>>> loss recovery, congestion control, and streaming to prevent HOL
>> blocking.
>> >>>>>> However, this would run directly opposite to Jana's suggestion to
>> lock down
>> >>>>>> the wire image to prevent ossification.
>> >>>>>>
>> >>>>>> On Mon, Jul 10, 2017 at 12:32 AM, Kazuho Oku <kazuhooku@gmail.com>
>> >>>>>> wrote:
>> >>>>>>>
>> >>>>>>> 2017-07-10 12:28 GMT+09:00 Ryan Hamilton <rch@google.com>:
>> >>>>>>> >
>> >>>>>>> >
>> >>>>>>> > On Sun, Jul 9, 2017 at 5:39 PM, Kazuho Oku <kazuhooku@gmail.com
>> >
>> >>>>>>> > wrote:
>> >>>>>>> >>
>> >>>>>>> >> 2017-07-09 1:45 GMT+09:00 Jana Iyengar <jri@google.com>:
>> >>>>>>> >> > I've been thinking about this, and I'm starting to think
>> that we
>> >>>>>>> >> > should
>> >>>>>>> >> > cover more ground in the second implementation draft.
>> >>>>>>> >> >
>> >>>>>>> >> > I'm hearing about increasing deployments of gQUIC, largely
>> due
>> >>>>>>> >> > to market
>> >>>>>>> >> > pressures. The availability of the Chromium implementation
>> makes
>> >>>>>>> >> > it
>> >>>>>>> >> > particularly easy for folks to deploy QUIC with that code. I
>> >>>>>>> >> > think we
>> >>>>>>> >> > need
>> >>>>>>> >> > to move with some urgency, even if we don't change everything
>> >>>>>>> >> > about QUIC
>> >>>>>>> >> > to
>> >>>>>>> >> > make it perfect, so that we can start getting IETF QUIC
>> >>>>>>> >> > deployments out
>> >>>>>>> >> > there. Specifically, I think we should:
>> >>>>>>> >> > 1. work out the wire-visible invariants and finalize all of
>> >>>>>>> >> > those for
>> >>>>>>> >> > the
>> >>>>>>> >> > second impl draft. We know that there are some middleboxes
>> that
>> >>>>>>> >> > already
>> >>>>>>> >> > have
>> >>>>>>> >> > classifiers for gQUIC, and we need to move quickly and push
>> >>>>>>> >> > IETF-QUIC so
>> >>>>>>> >> > we
>> >>>>>>> >> > can test that IETF-QUIC is deployable. I fear that the
>> longer we
>> >>>>>>> >> > take,
>> >>>>>>> >> > the
>> >>>>>>> >> > more widespread gQUIC ossification will be.
>> >>>>>>> >> > 2. allow impls to make serious progress towards a basic HTTP
>> >>>>>>> >> > mapping
>> >>>>>>> >> > over
>> >>>>>>> >> > QUIC. We can punt on header compression (QPACK/QCRAM), but
>> >>>>>>> >> > perhaps test
>> >>>>>>> >> > a
>> >>>>>>> >> > basic HTTP request-response over QUIC. We can still punt
>> >>>>>>> >> > performance-oriented things such as full loss recovery and
>> >>>>>>> >> > congestion
>> >>>>>>> >> > control to later. This forces us to try and finalize the HTTP
>> >>>>>>> >> > mapping
>> >>>>>>> >> > details, which is a good thing, IMO.
>> >>>>>>> >>
>> >>>>>>> >> I agree with Jana.
>> >>>>>>> >>
>> >>>>>>> >> If we can have some basic HTTP mapping (it can be as basic as
>> >>>>>>> >> using
>> >>>>>>> >> HTTP/1.0 over each stream), we can use that to test how the
>> IETF
>> >>>>>>> >> version of QUIC performs well in the field, by comparing its
>> >>>>>>> >> performance to HTTP over TCP.
>> >>>>>>> >
>> >>>>>>> >
>> >>>>>>> > Interesting idea. One challenge with performance analysis is
>> that
>> >>>>>>> > it'll be a
>> >>>>>>> > bit of an apples to oranges comparison. QUIC will be doing
>> HTTP/1
>> >>>>>>> > (without
>> >>>>>>> > header compression) against HTTP/2 (with header compression) or
>> >>>>>>> > HTTP/1.1
>> >>>>>>> > (over multiple connections).
>> >>>>>>>
>> >>>>>>> Agreed.
>> >>>>>>>
>> >>>>>>> Though I might argue that collecting metrics of a QUIC
>> implementation
>> >>>>>>> without header compression could be useful. We can use that as a
>> >>>>>>> baseline when we formalize QPACK / QCRAM.
>> >>>>>>>
>> >>>>>>> --
>> >>>>>>> Kazuho Oku
>> >>>>>>
>> >>>>>>
>> >>>>>
>> >>>>
>> >>>
>> >>
>> >
>>
>>
>>
>> --
>> Kazuho Oku
>>
>
>