RE: Unidirectional streams PR

"Lubashev, Igor" <ilubashe@akamai.com> Fri, 23 June 2017 02:43 UTC

Return-Path: <ilubashe@akamai.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 1CA03129449 for <quic@ietfa.amsl.com>; Thu, 22 Jun 2017 19:43:32 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.999
X-Spam-Level:
X-Spam-Status: No, score=-1.999 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, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=akamai.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 tP7s3ux_AOE8 for <quic@ietfa.amsl.com>; Thu, 22 Jun 2017 19:43:29 -0700 (PDT)
Received: from mx0b-00190b01.pphosted.com (mx0b-00190b01.pphosted.com [IPv6:2620:100:9005:57f::1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id C76671200E5 for <quic@ietf.org>; Thu, 22 Jun 2017 19:43:29 -0700 (PDT)
Received: from pps.filterd (m0050102.ppops.net [127.0.0.1]) by m0050102.ppops.net-00190b01. (8.16.0.21/8.16.0.21) with SMTP id v5N2hOnJ031327; Fri, 23 Jun 2017 03:43:24 +0100
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=akamai.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : mime-version; s=jan2016.eng; bh=MsY++mB8nQ/aZNxysEzngGcD3Mj8prbTnzAMYrQugjA=; b=acNdP0nNVqwIClZVo+ABSGe4bbWrpQpjCVJi40+4Ce476TPc70RINSVm6T2kBUuKcomR d8uFjQUB/KAxIdmdvA7si7fOU6ekipYg1uGkyc0pSzslCI4J4aT7E/tJxqsJwwfaIUmG VAymGKndkfYvYHA3rxzbVSv13BZqTpQt1fXswy2gEoqn8n2KlQF5gmb4zqQyZIAuRJvt iahPZkKsRhzy1ekYAr34pHibEN7fVRqOBQrLresfdoV3xv2fswCzAv4lxNQlJMTeOziE FSwvd2VoWXUFRiF7vyZ1WNEUkRuLzB2tmZtOq4OcKt6krf/vXUVWqZGqhQGEyZQoS5O5 JQ==
Received: from prod-mail-ppoint1 (a184-51-33-18.deploy.static.akamaitechnologies.com [184.51.33.18] (may be forged)) by m0050102.ppops.net-00190b01. with ESMTP id 2b8f92ujmn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 23 Jun 2017 03:43:24 +0100
Received: from pps.filterd (prod-mail-ppoint1.akamai.com [127.0.0.1]) by prod-mail-ppoint1.akamai.com (8.16.0.17/8.16.0.17) with SMTP id v5N2eoth005259; Thu, 22 Jun 2017 22:43:23 -0400
Received: from email.msg.corp.akamai.com ([172.27.123.31]) by prod-mail-ppoint1.akamai.com with ESMTP id 2b4yrvn7ym-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Thu, 22 Jun 2017 22:43:23 -0400
Received: from USMA1EX-DAG1MB5.msg.corp.akamai.com (172.27.123.105) by usma1ex-dag1mb4.msg.corp.akamai.com (172.27.123.104) with Microsoft SMTP Server (TLS) id 15.0.1263.5; Thu, 22 Jun 2017 22:43:22 -0400
Received: from USMA1EX-DAG1MB5.msg.corp.akamai.com ([172.27.123.105]) by usma1ex-dag1mb5.msg.corp.akamai.com ([172.27.123.105]) with mapi id 15.00.1263.000; Thu, 22 Jun 2017 22:43:22 -0400
From: "Lubashev, Igor" <ilubashe@akamai.com>
To: Ian Swett <ianswett@google.com>
CC: Jana Iyengar <jri@google.com>, Mike Bishop <Michael.Bishop@microsoft.com>, Ted Hardie <ted.ietf@gmail.com>, QUIC WG <quic@ietf.org>, Martin Thomson <martin.thomson@gmail.com>, Patrick McManus <pmcmanus@mozilla.com>
Subject: RE: Unidirectional streams PR
Thread-Topic: Unidirectional streams PR
Thread-Index: AQHS6mHzFJcNmOfPnkGlJjRXQ/9soKIvh8kAgADqdYCAACIYgIABI/8AgAAEzYCAAARGgP//0FFwgABb0AD//76RwIAATcWA//+9o9A=
Date: Fri, 23 Jun 2017 02:43:22 +0000
Message-ID: <2260e852b904465a9f8c9488e7e76166@usma1ex-dag1mb5.msg.corp.akamai.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> <CA+9kkMCF+wUPA452gYgdG65Y4zNctzGWd4HtZ2Ge70=S9k-_Qw@mail.gmail.com> <CABkgnnU6H+2AeY0n7-d+k0baM7UJ6fuN4PX7ez+KRN17eFg6Yg@mail.gmail.com> <MWHPR21MB0141A7116859D7955C92CC0987DB0@MWHPR21MB0141.namprd21.prod.outlook.com> <349d20e4f7d9458aaf7797d2025b2064@usma1ex-dag1mb5.msg.corp.akamai.com> <CAGD1bZbX1gTOh=LpQqLre8qgfB91=JrTCpYExzWMuBPo=V5_eA@mail.gmail.com> <9bf0712b00e540eeafdd3e6f357c2845@usma1ex-dag1mb5.msg.corp.akamai.com> <CAKcm_gMNc6ELTHdfjeoxwUiP-t+gAxduk3ZJ+6gw_=g4s_MLCA@mail.gmail.com>
In-Reply-To: <CAKcm_gMNc6ELTHdfjeoxwUiP-t+gAxduk3ZJ+6gw_=g4s_MLCA@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [172.19.34.60]
Content-Type: multipart/alternative; boundary="_000_2260e852b904465a9f8c9488e7e76166usma1exdag1mb5msgcorpak_"
MIME-Version: 1.0
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-06-22_10:, , signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 suspectscore=0 malwarescore=0 phishscore=0 adultscore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1706230044
X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10432:, , definitions=2017-06-22_10:, , signatures=0
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 priorityscore=1501 malwarescore=0 suspectscore=0 phishscore=0 bulkscore=0 spamscore=0 clxscore=1011 lowpriorityscore=0 impostorscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.0.1-1703280000 definitions=main-1706230044
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/xK2FhqtSOGsI0dcDORmY0vO46OE>
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, 23 Jun 2017 02:43:32 -0000

Yes, we are in an agreement that we want “QUIC Libraries” to provide an easy way of doing both unidirectional streams as well as bidirectional streams.

I do not have a strong preference as to the details of framing. On one hand, I am not worried about libraries implementing bidirectional streams differently with OPEN_STREAM – there is really just one sane way of doing it, and the OPEN_STREAM model is more flexible.  On the other hand, OPEN_STREAM comes at a cost of a few extra bytes for a simple bidirectional stream implementation.

The UNI does complicate the state machine a bit by adding an extra state, as ekr pointed out.  You need a special state for implicitly opened streams.  They are not “idle” (they count toward the max), and they are not “open” (you cannot write to them), and they are not “local half-closed” (they may transition to “open”).  I do not think this is a huge deal, though – TCP has a lot more states!


From: Ian Swett [mailto:ianswett@google.com]
Sent: Thursday, June 22, 2017 10:10 PM
To: Lubashev, Igor <ilubashe@akamai.com>
Cc: Jana Iyengar <jri@google.com>; Mike Bishop <Michael.Bishop@microsoft.com>; Ted Hardie <ted.ietf@gmail.com>; QUIC WG <quic@ietf.org>; Martin Thomson <martin.thomson@gmail.com>; Patrick McManus <pmcmanus@mozilla.com>
Subject: Re: Unidirectional streams PR

On Thu, Jun 22, 2017 at 9:49 PM, Lubashev, Igor <ilubashe@akamai.com<mailto:ilubashe@akamai.com>> wrote:
I think of three layers of abstraction:


1.       QUIC Wire Protocol (the thing described by the QUIC Transport RFC)

2.       QUIC Library API (a library exposing some useful abstractions -- such as blocking/non-blocking unidirectional streams and bidirectional “sockets” -- and implementing them using QUIC Wire Protocol)

3.       Application (something that uses QUIC Library APIs)

What I am saying is that Martin’s unidirectional streams proposal does not have a way to implement generic bidirectional socket-like abstractions on the QUIC Library API layer.  However, if we follow Mike’s suggestion and allow an Associated Stream ID in OPEN_STREAM frames, this would make it easy for QUICK Libraries to provide generic bidirectional socket-like abstractions.

So what I am suggesting is that we keep QUIC Wire Protocol state machine simple and unchanged.  However, with the OPEN_STREAM frame, we would allow QUIC Libraries to implement both unidirectional and bidirectional streams.


-          Igor
Igor, I think you and I are in agreement that we both want a relatively easy way of doing both unidirectional streams as well as bidirectional streams?  Given that, it comes down to what to standardize at the transport layer and some framing.

In regards to the unidirectional only model:
 1) The QUIC stream state machine is really not that complex, and the current documentation does a nice job of explaining it.  Changing to unidirectional only streams only saves 2 states, from 5 to 3, and a small bit of text.
 2) I'm very concerned that if we don't standardize a way to do bidirectional streams, different 'QUIC Library API's will internally standardize on different approaches for recreating bidirectional streams.  I fear this may create more work and interoperability challenges down the road.

So if we think literally no one will have any use for the bidirectional stream model, then I agree we should remove it.  But even today, the HTTP mapping is simpler with the bidirectional stream model than with only unidirectional streams, which means the total amount of work of implementing HTTP + QUIC is about the same either way, and I believe if bidirectional streams and unidirectional streams do exist in QUIC(as in my PR above), then the HTTP would/should use both.