Re: Second Implementation Draft Guidelines

Kazuho Oku <kazuhooku@gmail.com> Fri, 14 July 2017 01:33 UTC

Return-Path: <kazuhooku@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 879621315DA for <quic@ietfa.amsl.com>; Thu, 13 Jul 2017 18:33:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-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 wGqIJj1-zfUJ for <quic@ietfa.amsl.com>; Thu, 13 Jul 2017 18:33:38 -0700 (PDT)
Received: from mail-pg0-x22f.google.com (mail-pg0-x22f.google.com [IPv6:2607:f8b0:400e:c05::22f]) (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 4F7DC12EBF7 for <quic@ietf.org>; Thu, 13 Jul 2017 18:33:38 -0700 (PDT)
Received: by mail-pg0-x22f.google.com with SMTP id t186so37949516pgb.1 for <quic@ietf.org>; Thu, 13 Jul 2017 18:33:38 -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=XkZY5akbYngGTXnSVCrIdjauO+aN3cFWxf+fesiXphQ=; b=p57NWlVWma8rS3UQnLZ/Ctuyw6901wLGtROX5SGF7TwiV2xrsABxVL+nZho6SXrnmA L+GHY+CVI+a1j667EebjfUdgLU1Bzj/HFSvjaEokwAUOMB1JG+kKoOSu9kTw/Jeo0+7e GBt/56vtN/a/3WuuV7I0Pnj/GHLOvF5i9cKvlAnrPjvPLbl63X0en+V8ayQulTgJzo85 xskDZMZndrYILRijIVsHajlAullJcfK8GBkBTFAXoS7wy76CgnQDS3tRlv6+1QXutMHg gFjuxz4oWBXxNMt+naN3SE1kzppzD2T3ChpTMVqr6yYywkqdyPhy4Q+mKOcM8YhlNyMF nb5A==
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=XkZY5akbYngGTXnSVCrIdjauO+aN3cFWxf+fesiXphQ=; b=dZkjME2CBXIKog61LdZeOysV+jZulRO4exJxoSZtMogKCnF7/3gvkPIBOxydENTclO eYBK/xSqcTG+L8L+/NqIZUTpDmxoJ3rAVnYKKkZjIYwNWcfJW0iIffrMWEAYRicWb4bx yOCXWc8wbiE/Du466L/UPrYpnvfcWDXP7t7Oq2sDIRkcY7xrVDQDrvPYTAWwf08kI8zs i7YRY3ifl3EK+P1kMa57FoCvHaSqjymrSxEri7Cqoos2+lc8xA9xaHX84NebYvAEVMpj 0zyzYdJ3kEKTO6NT/MTwMGzy2F8BRZfMaPvR6+Hk0uHnplARK6L6GYXfc5Z71n7cV9tS Oaew==
X-Gm-Message-State: AIVw110AFShebv01j+QxmrExBh/tYY71KbLj3R4upOJvgRA0xTXOecHm 8pD4cWsJQzngG88+x1HfF6wqr+WgHA==
X-Received: by 10.98.2.149 with SMTP id 143mr2612929pfc.52.1499996017452; Thu, 13 Jul 2017 18:33:37 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.100.130.3 with HTTP; Thu, 13 Jul 2017 18:33:36 -0700 (PDT)
In-Reply-To: <CAKcm_gOvw5ynFXkpoiw3oBz0mue8_z4Y5qHmsRrukrhwhiQ5bQ@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>
From: Kazuho Oku <kazuhooku@gmail.com>
Date: Fri, 14 Jul 2017 10:33:36 +0900
Message-ID: <CANatvzy-wR6PGuTHm-xhBuGHNTwXCDgNJHT=DnE1tHeDVWHLuA@mail.gmail.com>
Subject: Re: Second Implementation Draft Guidelines
To: Ian Swett <ianswett@google.com>
Cc: Martin Duke <martin.h.duke@gmail.com>, Lucas Pardue <Lucas.Pardue@bbc.co.uk>, Jana Iyengar <jri@google.com>, IETF QUIC WG <quic@ietf.org>, Ryan Hamilton <rch@google.com>
Content-Type: text/plain; charset="UTF-8"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/sCFHVjPLWNaDrH3UZN6O7iDK9V0>
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 01:33:40 -0000

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