Re: Second Implementation Draft Guidelines

Martin Duke <martin.h.duke@gmail.com> Sat, 15 July 2017 00:18 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 B76BB12ECC1 for <quic@ietfa.amsl.com>; Fri, 14 Jul 2017 17:18:00 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.698
X-Spam-Level:
X-Spam-Status: No, score=-1.698 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, FREEMAIL_REPLY=1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=no 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 K901lgMZI9lh for <quic@ietfa.amsl.com>; Fri, 14 Jul 2017 17:17:58 -0700 (PDT)
Received: from mail-wm0-x236.google.com (mail-wm0-x236.google.com [IPv6:2a00:1450:400c:c09::236]) (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 E4DD912EC25 for <quic@ietf.org>; Fri, 14 Jul 2017 17:17:57 -0700 (PDT)
Received: by mail-wm0-x236.google.com with SMTP id w126so32692088wme.0 for <quic@ietf.org>; Fri, 14 Jul 2017 17:17:57 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=S4L2J9nYq9Rm3d9VIRrPMSpQ8iY2alLrRjS5Xz97+QI=; b=Nb3Q4DP1HTXlKX1DxAD/ty6qjjh1Sa6HP/Ycd7lyODNj1QgVVjFok+qdib3UWslD5g e/hO6/sKF7KDytIGogxEIbpvuclP+Ln9h+MOyiuo6oLAry2M2ZSOoWKy7iEbK0JVrW6p 2ubsph1SyFENisnil0pN9CJ29DlsIBzpv1WZslSiz0hsTf5qrhcxC/3eKpMYxCSj4VcT jNBURSrvUufeQMbB14AoehA6NTJJ0EZDeu0zLl6wfOjpEhQvz2J8ykURgWbgjd5FgSQF HqlLyXcXSEwk6boErmgjZrskUtgElnrANJQ2XSHBRGGlBl+hXvgaBeK5ha12twHCn5NK 3t3g==
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=S4L2J9nYq9Rm3d9VIRrPMSpQ8iY2alLrRjS5Xz97+QI=; b=jGpWZRwWzFfuBqmQ3vJh+CiBG8lTZl3a2quSDGqRKgtSJyc3qh8qiQ3gwTU4BE+8m/ 7EMjXHxZC0jQaChTo7LrvO/ac60B1Q4jUD30OSkur0o7Z+lmKFwyD6UkxI1njb/aVMoa jGpddscwf0qlrsLoL6RIiH1j92MlOfJVxYjr2zaVbq0Zgss19h06l3qp2zz0GYmsigAM UJM+QoLVncdaROgIJK442dKcSQ1pHobBSvhRx2/xhVehygaB1aeyxE3lAjnzDwFKC7kV Vs66FmzSvTWdsJZltR5+zm6Rt4JEQ4r26Y394hnGS4EhBfW7iMEkGmg1LEQ7IW4wO9MY abQA==
X-Gm-Message-State: AIVw112ULQwpdIe881E0m+BuBOMWNMTJZ2ut00oBpsBX8X7KewUAJH86 5x06x4rrLKj3oHrLwvQRGnsgR2xH6A==
X-Received: by 10.28.16.17 with SMTP id 17mr4596788wmq.1.1500077876323; Fri, 14 Jul 2017 17:17:56 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.223.137.26 with HTTP; Fri, 14 Jul 2017 17:17:55 -0700 (PDT)
In-Reply-To: <CABcZeBMKdT4L1O85whgLTZ1sK5dBUk8D+TSdxBVN2z8S1UoEFQ@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> <CABcZeBMKdT4L1O85whgLTZ1sK5dBUk8D+TSdxBVN2z8S1UoEFQ@mail.gmail.com>
From: Martin Duke <martin.h.duke@gmail.com>
Date: Fri, 14 Jul 2017 17:17:55 -0700
Message-ID: <CAM4esxQ0pJcMFs0TafuTcOrieSYuDju8XFZMbOHEftd+Nk=xAQ@mail.gmail.com>
Subject: Re: Second Implementation Draft Guidelines
To: Eric Rescorla <ekr@rtfm.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="001a1145ad26f42e5b05545018cf"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/qpmVVR6jP1Gt5BIm6xdAjlqqUGc>
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: Sat, 15 Jul 2017 00:18:01 -0000

If there are some improvements in -05, that's fine with me, but that's a
bit orthogonal to the purpose of this document. The first interop is
attached to a specific set of features, which might involve more than one
draft.

This document is trying to figure out what the next set of features should
be. It should also drive which open issues we should prioritize.

On Fri, Jul 14, 2017 at 10:45 AM, Eric Rescorla <ekr@rtfm.com> wrote:

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