Re: Unidirectional streams PR

Wenbo Zhu <wenboz@google.com> Thu, 22 June 2017 21:59 UTC

Return-Path: <wenboz@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 76B3F12949D for <quic@ietfa.amsl.com>; Thu, 22 Jun 2017 14:59:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.001
X-Spam-Level:
X-Spam-Status: No, score=-2.001 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_NONE=-0.0001, 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 sQKNnhcxSWqX for <quic@ietfa.amsl.com>; Thu, 22 Jun 2017 14:59:21 -0700 (PDT)
Received: from mail-wr0-x230.google.com (mail-wr0-x230.google.com [IPv6:2a00:1450:400c:c0c::230]) (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 5B3E2129470 for <quic@ietf.org>; Thu, 22 Jun 2017 14:59:21 -0700 (PDT)
Received: by mail-wr0-x230.google.com with SMTP id 77so41305213wrb.1 for <quic@ietf.org>; Thu, 22 Jun 2017 14:59:21 -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=6ZU86DhaoufGTL2rre9llAcw1i+88CbYuzsV/eokgKA=; b=Vi4qUsWGvsPQULLschS97BYnAvHpug8kCHoZuetCHAg44JohawnVakrybFIr7p+MU0 C9dx7kSumEAmLgscvuAfwNFOG6jaLhGJvo/bcnXq9A/iI52PlFrOFcfegvWPzg0ZEBI9 /oLTV8Hw7s9f4F5fqZ62ZP/tuRO+KeNQVjpDGMGkyD23yCyvBUM5p91k3gtk4lMXueeU bYWRJSAhuilgFbRIWK8RUarZ+PSKXq8b+2JQ7rAxryY63YO6DDhfCUELlJ69eryhIOCM Y8gxwC+5ikewjkfCqciR/QPekjOFrWYi3ePpwuOtNymTUa+nOxaGKxUNVEspKk6mzqSg 5cag==
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=6ZU86DhaoufGTL2rre9llAcw1i+88CbYuzsV/eokgKA=; b=G9wmnxnfSgqiDHcRGxkOi/bBExLaqW3pjy3BR+VAtdIS57MY6fv+st7SFYrlTov3My f2KCS3HcsgKxDQnflSrgmVPX9i6nZ2NYEaF7oH4PAYTRWvN0cyNlUxpHFQZicN39brq3 678tPcRFtVmSQeRKdh78TaBrgv6aRsS7bpKmnni2fTxXeOgzbawdvEqY4zJaDOjEIxTC ENMhyE7cjb+VcwMJRniSfMZFLmnzpaiJ7pCC6o+FWMFQErp+8mcIKauvrmgOxvbbLDwp OuXDRS61zDXYwbczzet9rTOkH0oz39nhkjiFhjVqlOv01ztdvN75UeiTVteSNRbBCn23 q7bg==
X-Gm-Message-State: AKS2vOyJUWulE/3kwWj0C83pUiu3/bLbdX8FZZ2yg+XYQfZGD1+ceJsW XCgugsy6LtUsWfbJRfzXlvTH/wdqFWtu
X-Received: by 10.223.171.146 with SMTP id s18mr3422774wrc.38.1498168759489; Thu, 22 Jun 2017 14:59:19 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.28.94.206 with HTTP; Thu, 22 Jun 2017 14:59:18 -0700 (PDT)
In-Reply-To: <CAKcm_gMdVDfAPyvHWmzsS+Oc_+uQz55LE-pv60+Vt3FZcQpaLA@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> <CAKcm_gMdVDfAPyvHWmzsS+Oc_+uQz55LE-pv60+Vt3FZcQpaLA@mail.gmail.com>
From: Wenbo Zhu <wenboz@google.com>
Date: Thu, 22 Jun 2017 14:59:18 -0700
Message-ID: <CAD3-0rMi4ZFashaf+4KpVh6ni97Qxg+Y9csEC8vPa8BZ1RFa0g@mail.gmail.com>
Subject: Re: Unidirectional streams PR
To: Ian Swett <ianswett@google.com>
Cc: Jo Kulik <jokulik@google.com>, 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="001a113c2ba4b9a76905529398b8"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/YMDZVxzJwDyaMzHZ-IiM46Yh6JY>
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 21:59:24 -0000

My personal opinions.

1) is much harder to add later. QUIC will definitely be used by non-RPC
protocols.

It would be useful to see a concrete example on how to map something like
HTTP request/response to QUIC uni-streams. Could Mike publish two reference
versions, before/after the PR is Incorporated to the HTTP mapping spec?

Most L7 (application) protocols will keep using HTTP/* as the transport.
Other L7 protocols will have their own state machines on top of the QUIC
streams to manage the client-server conversation, inc. flow-control. The
less state the QUIC layer maintains, the better IMO unless other
transport-level features may benefit from the bidi model. I don't have any
specific feature in mind.




On Thu, Jun 22, 2017 at 9:16 AM, Ian Swett <ianswett@google.com> wrote:

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