Re: Unidirectional streams PR

Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com> Wed, 28 June 2017 13:41 UTC

Return-Path: <mikkelfj@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 658F6129482 for <quic@ietfa.amsl.com>; Wed, 28 Jun 2017 06:41:40 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.698
X-Spam-Level:
X-Spam-Status: No, score=-2.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, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, UNPARSEABLE_RELAY=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 g5CMBN4kpCVq for <quic@ietfa.amsl.com>; Wed, 28 Jun 2017 06:41:37 -0700 (PDT)
Received: from mail-vk0-x230.google.com (mail-vk0-x230.google.com [IPv6:2607:f8b0:400c:c05::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 350BD129B04 for <quic@ietf.org>; Wed, 28 Jun 2017 06:41:36 -0700 (PDT)
Received: by mail-vk0-x230.google.com with SMTP id r125so33131181vkf.1 for <quic@ietf.org>; Wed, 28 Jun 2017 06:41:36 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:in-reply-to:references:mime-version:date:message-id:subject:to; bh=++CkosIL5ZD5u5gbftZYBGVBLAk4ZEtvyIphwhSUSH8=; b=YIwpPbsvcRFe+ScT15Yr1VNeBkFbWTxIBin9T4FtskTjR3yGfYs+PG48gOKRj08Mh8 orlevn773/DWd8Z4mgjh8t0TQm+RyKOXF907i4ILuHrOpBqrBa4AMlXs6eVEEOuw1HLL k+42A8ibVpoRe6z1+r4xRWBH9CL6xvUMzCcGWqFx6Uz1STtwhirg/uI2sJvNA4/JT284 XLiEmn4qGmWkEpQzthU+JjSzoqCdgkv+yDrEw17ZBLRRbCfT0I7IwLMTBzktvoVN/UWS YH42wRQ9OHYS4v/FdtPQdpLEfT5Lmo08zQO+3WrGSftBjnl/HFdHKLekMLRSvMtrcqVV Dvcg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to; bh=++CkosIL5ZD5u5gbftZYBGVBLAk4ZEtvyIphwhSUSH8=; b=ppxgREM8MTUq9KUberV4W4nF9wrQAOKN6muOVxm00wBAFbK3YCpGwpOKOwpF2Eavv1 hNN1rEh+YM5T10mGqz1m/zQIadEzgVno2ZJtNVY/Vd880FWE0g+u2qChO/6L74nhp9p1 qzYEFUMwbLJ0C/gairs83KoxRb+k014CIqQCtvlRnP+gwlqcsqdFAJ63jHfgTq+ylusi GQ10aMazWe7TTrMk0y21FBTwSR5/67sFgbMv2jFgSclrDJCruZ7u2l6yyMqagY/O4m8U gj4mpc27f73eNGK1MYxIWFLeif/AQsGddDRNFBHBETu4lAcvsuReFPHehEi1A/ww1MG5 1gEg==
X-Gm-Message-State: AKS2vOzF2Xb2BL5vxTZeMX7+pV7OIQYFXTXYcrlRXHaWN3vchKbSlTYY JJuX10jvFw+wz0124UvTL8uRQlNuGv7P
X-Received: by 10.31.41.213 with SMTP id p204mr5185763vkp.80.1498657295080; Wed, 28 Jun 2017 06:41:35 -0700 (PDT)
Received: from 1058052472880 named unknown by gmailapi.google.com with HTTPREST; Wed, 28 Jun 2017 09:41:34 -0400
From: Mikkel Fahnøe Jørgensen <mikkelfj@gmail.com>
In-Reply-To: <20170628124221.GA15608@ubuntu-dmitri>
References: <CAN1APdc_ckZu39ZZTETv04iZieogoE_NQCBR-n0jHrC-9dM7Aw@mail.gmail.com> <5d69489d-8f46-ebbe-4e5c-fa6c02ffd8dd@huitema.net> <CAF4GZgBm7525i2GxiN-Pv66g0WqbDH==fRXN27=7ursNA70w1Q@mail.gmail.com> <20170628124221.GA15608@ubuntu-dmitri>
X-Mailer: Airmail (420)
MIME-Version: 1.0
Date: Wed, 28 Jun 2017 09:41:34 -0400
Message-ID: <CAN1APdc3YO4-FEc6C--PzFGxzQiAUeBZ96HkjtjS1RR0qigrzw@mail.gmail.com>
Subject: Re: Unidirectional streams PR
To: quic@ietf.org, Dmitri Tikhonov <dtikhonov@litespeedtech.com>
Content-Type: multipart/alternative; boundary="001a113f042cb6a39705530557d3"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/htDNBcbmgQVSthHSAWMxjdB3hUQ>
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: Wed, 28 Jun 2017 13:41:40 -0000

In reply to Ranjeeth

It is not only a matter of simplicity for the sake of simplicity:

- A complex transport layer might end up being poorly implemented leading
to reduced interoperability and ultimately adoption. This complexity is not
only in implementation but also in understanding the exact semantics of
stream lifetime. Even if the spec is sufficiently clear, it will still be
open to misinterpretations.

- Bi-directional state may have to be maintained longer and with more
overhead than with uni-directional streams, especially under loss,
potentially leading to poor performance and poor resource utilisation
because the transport layer has insufficient information.

- The extra complexity at the application layer may be overstated - it is
significantly simpler to manage a map that associates to two streams than
it is to maintain bi-directional state at the transport layer. It is even
possible to implicitly link streams with same identifiers, e.g. in a RPC
scenario. That said, I do see a potential benefit of a wrapper that
implements the common bi-directional case.

- Complexity at the application layer may be duplicated, but implementation
errors are also isolated to that application. Specifically for HTTP I would
assume that QUIC transport and QUIC HTTP implementers would be large the
same for a long time to come, so I would not expect the tradeoff here to be
particularly concerning.

- Unix pipes are traditionally constructed as a pair of uni-directional
file descriptors and that is a reasonably proven model. C’s standard
library stdin, stdout and stderr is an example of an asymmetric model with
implicit linkage between uni-directional file descriptors.

- There are lots of use cases for non-HTTP like connectivity - Kafka high
volume message queuing for example. The industry trend appears to move
towards asynchronous processing and messaging. It depends on whether you
look at QUIC as a TCP + TLS replacement, or as a HTTPS / REST RPC
replacement.

- Uni-directional streams may currently be unproven in the wild, but a
proposal is needed before an implementation can be made and testet. I agree
that it is easy to design into wrong assumptions without real world testing.

- There will hopefully not be a large number of successors to QUIC -
perhaps some purpose specific variants, e.g. for embedded use. Widespread
adaptation and compatibility is very necessary so it makes sense to have
QUIC being sufficiently simple and expressive to achieve this goal. A
polymorf QUIC will not achieve that goal. On the other hand, a solid QUIC
foundation can be used for a large number of application protocols.

- Finally, it may turn out that uni-directional streams just is a bad idea
- I doubt it, but I do believe real world tests are needed.

Kind Regards,
Mikkel Fahnøe Jørgensen


On 28 June 2017 at 14.42.36, Dmitri Tikhonov (dtikhonov@litespeedtech.com)
wrote:

On Tue, Jun 27, 2017 at 02:31:38PM -0700, Ranjeeth Kumar Dasineni wrote:
> 2. We are overplaying the simplicity of design. Even if we deem
deployment
> experience not a concern, if every application layer protocol that needs
> support for bidirectional streams has to implement some correlators and
> such above, that's a net negative in terms of complexity.

This is an important point: we want QUIC adoption to be made easy.
A program that speaks HTTP today should be able to use an existing QUIC
library without having to emulate bidirectional streams in order to fit
it into HTTP usage pattern. Forcing every one of these programs to do
this is certainly a hurdle.

- Dmitri.