Re: Unidirectional streams PR

Ian Swett <ianswett@google.com> Thu, 22 June 2017 16:16 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 5C257129AEB for <quic@ietfa.amsl.com>; Thu, 22 Jun 2017 09:16:48 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.701
X-Spam-Level:
X-Spam-Status: No, score=-2.701 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, RP_MATCHES_RCVD=-0.001, SPF_PASS=-0.001] 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 vJWhGbeVu-yz for <quic@ietfa.amsl.com>; Thu, 22 Jun 2017 09:16:46 -0700 (PDT)
Received: from mail-yw0-x232.google.com (mail-yw0-x232.google.com [IPv6:2607:f8b0:4002:c05::232]) (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 1A3FD129AD4 for <quic@ietf.org>; Thu, 22 Jun 2017 09:16:46 -0700 (PDT)
Received: by mail-yw0-x232.google.com with SMTP id l75so7832776ywc.3 for <quic@ietf.org>; Thu, 22 Jun 2017 09:16:46 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc; bh=JQEyj5IwbCYUMsLIoT7YxCl9PZp5GDhxDCAIg4KjgMI=; b=tyekWshCc/m8WxHeNSx4CyuoUGpvj6sx/fkOp4ZsvqNU7fSW+4O9gXGqLyQofns5KL YIAm/9Y75XZexCUmC2EvhD2NFitHBgZ4PF8lL6ZuYvKlAMdMozNUMnZP4O2m6QkSl2Mo TflQ/FjzTJ2QkwT0xugcdTD31Do6IQmpPboKCDGIgBjn9G9frJAhxEXiE/TVZu92bPfp hJ4utxo5h70E8gIULOTWnMWXeKzZLjt1l7WEfcRTDV4JgwiSbCcKHWlOoXKqynSCFms5 lfN7AxcV+igc95ckqotgT2RG8FwGFl19F5hS/3RyQq847QrpQp9/ugqtdtL4ND8UONns Kc0g==
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=JQEyj5IwbCYUMsLIoT7YxCl9PZp5GDhxDCAIg4KjgMI=; b=c4DEyTbt4hmko1qym0gimF8m60V2LMDXQ+T/DuSPaBdwcNLdRHhItpDLqNIyKCjVEh w8cu4/hF3Eaw5Oev/xzZ9dxjvqjb8GtxPI6VlwA5cqghq2kjT9ZvcPQ5Kfmsu+bPbYFU EOIs4e1PmOO4nRFE3GLqsatDjognmPQc/TY4cG69sxQDWvpC9VcHrAWhCSkWL9gCPtl7 DREGcWotHmPdNOufGZeGQxpqyJJZ281udCc0wVVSsK7mz92d4VItma6DsaxD0msFfyFB kDDycGxZh54iEYwX5mcZqaf+2G48TTVze0hIHQsI0Qiapcm1mi8WzJmxEjCqC1si3SZq xznQ==
X-Gm-Message-State: AKS2vOyaJldRAhfHQEY89E3jTyAj1uRNp850ENkOKvc8+tSNEmHImBxK UfPyKZA/RdiP9Uz6qmBTtQMxklN4SDxe
X-Received: by 10.13.203.136 with SMTP id n130mr2364372ywd.131.1498148205188; Thu, 22 Jun 2017 09:16:45 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.37.208.3 with HTTP; Thu, 22 Jun 2017 09:16:24 -0700 (PDT)
In-Reply-To: <CAE=ybzPNtO+dsLZDMSRSG1xT0NBFPZE+RBOOmsjRu+u0pBymsA@mail.gmail.com>
References: <CABkgnnW+veDVq27v+wTz0cA=eGPRTLQ1A90A0ynHLPU88Pg77Q@mail.gmail.com> <CAOdDvNpORYBr7+Q8M_nnGOm4MsWqVbm6koOtQ+=An8t7AbccGg@mail.gmail.com> <CAGD1bZb9Na32z=Gg9JS+FzrGGN9Jhw=QDTMTYS=FVcNesoSMig@mail.gmail.com> <CABkgnnV2yPP-qgLKZYPsvawXc7FP4RM7CZDDa7aFaNy0KxLfag@mail.gmail.com> <CAGD1bZaKw73=Futb-Tk88eL-uD2Ehd0yVw2MbpGM3N2QLB-n0Q@mail.gmail.com> <7CF7F94CB496BF4FAB1676F375F9666A37724110@bgb01xud1012> <CAE=ybzPNtO+dsLZDMSRSG1xT0NBFPZE+RBOOmsjRu+u0pBymsA@mail.gmail.com>
From: Ian Swett <ianswett@google.com>
Date: Thu, 22 Jun 2017 12:16:24 -0400
Message-ID: <CAKcm_gMdVDfAPyvHWmzsS+Oc_+uQz55LE-pv60+Vt3FZcQpaLA@mail.gmail.com>
Subject: Re: Unidirectional streams PR
To: Jo Kulik <jokulik@google.com>
Cc: Lucas Pardue <Lucas.Pardue@bbc.co.uk>, Jana Iyengar <jri@google.com>, QUIC WG <quic@ietf.org>, Martin Thomson <martin.thomson@gmail.com>, Patrick McManus <pmcmanus@mozilla.com>
Content-Type: multipart/alternative; boundary="001a11481a4e97c92905528ecf96"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/q3jUrePCuQbr3m-auMokhCtOxK4>
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: Thu, 22 Jun 2017 16:16:49 -0000

This proposal does two things, which I don't believe need to be conflated:
 1) Adds support for unidirectional streams
 2) Removes support for bidirectional streams

I want better support in QUIC for unidirectional streams, for the reasons
laid out above and quite a few others(ie: RTP).  I believe this was the
original motivation behind this proposal, but after thinking about it a lot
and looking at the PR, I think removing support for bidirectional streams
is a huge error, because it just moves work from the transport layer to
each application layer.  I agree with Ted, that we should support both, and
I believe there are simple ways to support both, so I'll send out a PR that
proposes one later today.

If it's easy in QUIC to open a stream in either bidirectional or
unidirectional mode, then it should be easy and efficient to map virtually
every existing application written for TCP or UDP onto QUIC.  The extra
text in the RFC and extra code to support bidirectional streams vs
unidirectional is quite small.

As evidence that this doesn't result in a net simplification, even if we
only care about HTTP over QUIC, the PR adds 212 lines of text.  I'm sure
that could be minimized some, but I think it's going to be very difficult
to end up with a pure unidirectional design that's simpler than one which
supports both unidirectional and bidirectional streams.

On Thu, Jun 22, 2017 at 10:32 AM, Jo Kulik <jokulik@google.com> wrote:

> This sounds somewhat like a library/framework developer’s dilemma. How
>> much “hand holding” should the transport do for the applications atop (the
>> number of which is unbounded?). Sometimes providing too much
>> “implementation” works counter to the specific neefd of the application.
>> Therefore, would it suffice to describe the design pattern in the
>> transport, perhaps in terms of considerations that an application mapping
>> should make?
>
>
> I think this is an interesting idea.
>
> I'm personally in favor of the unidirectional streams proposal.  (Emphasis
> on personally, this is not some institutional opinion).  But this is
> because I have previous experience with non-request-response protocols, and
> I think they fit awkwardly over a conventional request-response-modelled
> transport.  If there's a chance that some very simple changes could make
> QUIC more viable for those protocols, then I think it's worth at least
> discussing.
>
> I feel cautious about the, "Our current goal is HTTP, design for the
> common case" argument.  HTTP is the first goal.  But it's not the only
> goal, is it?
>
> To Jana's point about not designing a hammer with no specific nail to
> speak of, gosh it would be helpful if we had, ideally more than one,
> non-HTTP protocol in mind that we could discuss concretely.  I know that
> Martin mentioned a few on his interim group slides.  But I have no idea
> whether there were any stakeholders who are planning to invest in those
> protocols.  It would be helpful, when examining the costs/benefit to say,
> "This is how this protocol fits over the current model, and this is how
> this protocol would fit over the unidirectional model."
>
> Right now, the only concrete protocols that we're discussing are H2 and
> maybe DNS, is that connect?
>
> On Thu, Jun 22, 2017 at 6:58 AM, Lucas Pardue <Lucas.Pardue@bbc.co.uk>
> wrote:
>
>> We are interested in unidirectional streams and like the concept, I have
>> reviewed the PR and made some editorial or nit comments.
>>
>>
>>
>> This is a really interesting discussion, which I don’t have much to add
>> to at the moment. To add a spectators opinion
>>
>>
>>
>> On Wed, Jun 21, 2017 Jana Iyengar wrote:
>>
>>
>>
>> > Creating a new identifier in every application to correlate
>> request/response pairs adds complexity when you start adding applications.
>> Every app has to now explicitly design and implement this incredibly common
>> design pattern. Building common design patterns into the transport _is_ the
>> role of the transport. Otherwise, we could be building HTTP directly over
>> UDP, with no QUIC in the middle. The correlator is a feature, and one that
>> is required even in your design (although you have it in HTTP). I don't see
>> how it introduces HoL blocking, but I don't want to rathole on a minor
>> point.
>>
>>
>>
>> This sounds somewhat like a library/framework developer’s dilemma. How
>> much “hand holding” should the transport do for the applications atop (the
>> number of which is unbounded?). Sometimes providing too much
>> “implementation” works counter to the specific neefd of the application.
>> Therefore, would it suffice to describe the design pattern in the
>> transport, perhaps in terms of considerations that an application mapping
>> should make?
>>
>>
>>
>> Regards
>>
>> Lucas
>>
>
>