RE: Unidirectional streams PR

Mike Bishop <Michael.Bishop@microsoft.com> Thu, 22 June 2017 06:32 UTC

Return-Path: <Michael.Bishop@microsoft.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 C49BD128E19 for <quic@ietfa.amsl.com>; Wed, 21 Jun 2017 23:32:09 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.022
X-Spam-Level:
X-Spam-Status: No, score=-2.022 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=microsoft.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 qcMRZT_9YCXD for <quic@ietfa.amsl.com>; Wed, 21 Jun 2017 23:32:07 -0700 (PDT)
Received: from NAM02-BL2-obe.outbound.protection.outlook.com (mail-bl2nam02on0121.outbound.protection.outlook.com [104.47.38.121]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DAF85126557 for <quic@ietf.org>; Wed, 21 Jun 2017 23:32:06 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=seaEsy+3rgBOwOxIqbkKDxKNJAxkudj3XOEBmneHxLQ=; b=HwmAX/axy4V6uYwxObbHoUzQ4oZ7xVjUAy6wAJZRvApO/9tQZPhvfDBdIdM9HYrcjjJCLYqGLnkc26VlC/s7uZhGYbcQambukVa6OgVa61JeWKzB5tEOR2PWvn9ovMAWeHO3iDf3lxE3iopIbxsPC7uy1pAM2B/PBHqza4CM2Xs=
Received: from MWHPR21MB0141.namprd21.prod.outlook.com (10.173.52.11) by MWHPR21MB0126.namprd21.prod.outlook.com (10.173.52.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.5; Thu, 22 Jun 2017 06:32:04 +0000
Received: from MWHPR21MB0141.namprd21.prod.outlook.com ([10.173.52.11]) by MWHPR21MB0141.namprd21.prod.outlook.com ([10.173.52.11]) with mapi id 15.01.1220.005; Thu, 22 Jun 2017 06:32:04 +0000
From: Mike Bishop <Michael.Bishop@microsoft.com>
To: Martin Thomson <martin.thomson@gmail.com>, Jana Iyengar <jri@google.com>
CC: QUIC WG <quic@ietf.org>, Patrick McManus <pmcmanus@mozilla.com>
Subject: RE: Unidirectional streams PR
Thread-Topic: Unidirectional streams PR
Thread-Index: AQHS6mHyIpxR/afFiUiHxd5TQx2M+qIvEnAAgADqdYCAACIZgIAAQhnw
Date: Thu, 22 Jun 2017 06:32:04 +0000
Message-ID: <MWHPR21MB01419792582BFC38C4B33F3987DB0@MWHPR21MB0141.namprd21.prod.outlook.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>
In-Reply-To: <CABkgnnV2yPP-qgLKZYPsvawXc7FP4RM7CZDDa7aFaNy0KxLfag@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=none action=none header.from=microsoft.com;
x-originating-ip: [2601:600:8080:5a28:a8c0:c6b3:d9e7:d961]
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; MWHPR21MB0126; 7:B1heZ/Qsjt2uNSNQzN2H2Bz3xKTDqN3k1nsXputF5FS8TK8p31MRb9QXzA12FkblZFeg+dc4eXw3xv7fbNi7tzv1JnqlrSfYQZwFVfx0J/lXFMdsBcsHILhYv/GWIQQuIenhSwPIKRioQc8sLzBzQDqH0EWdAz7YeYn5TT1vjr74ye2gJWtJXsLSsYj5oQ9MTawblnq3k1ojAtq3zdQBJztc7LIC2C5AFwtyQZ877+sS5nHhez5qlEukd1KvOfC9B97TdET2N7qwp6EamQY6ftpXU1MoX6rU3scdUtCnPP0t48BHXkBJrQV/5z/LTn5M689cFBBQV05OC+Pnkd39BK8EwekI8iF9UuDsnnTHzXeUs0gtwN1p/gOK4GVrKVKzpYXR1IcyYvyvMy5JCYd3v1esXg41ehjAYQEIWx5WsH3v5DsQO1UPweH+N/ZneH8jS3ftvr9sHMk197vn2f3Qj5N606ByRXqwMMmYvwybM4hEwBGZ1cVfVyDq7JkwHxmaIim4GzhlMMuu/VE4wrDOsSWVshX3QiChBiobi+CiQlmGHiBBJyd8LmLFjY38n6MXyv8c0lZ6Wv4adoydD3Rdid8/GLhCETTVSPWRpsBGYgLbjjiMIu5nNadsoXbmHJEtQEMW53NXKVcJX/a1YU5mzFLRSLfIsYF8khQU3If1XNCZC/88/VtLGmju+Wsl2RzXwldeHkSC+5LQ93HvGAbHQWpUL7q8qa4hNTyjsRibJm76HHwLUCdTbr/jJ6qketzsk0p6YSvA7cIlOm1Ipgr/jzYizB5Xw/2zLhGyX5+n77u1BXA1W4rs0wMdmDrh5Bzj
x-ms-office365-filtering-correlation-id: e8b1a171-b3c0-402f-514d-08d4b93865c7
x-ms-office365-filtering-ht: Tenant
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500055)(300135000095)(300000501055)(300135300095)(22001)(300000502055)(300135100095)(2017030254075)(48565401081)(300000503055)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504055)(300135200095)(300000505055)(300135600095)(300000506048)(300135500095); SRVR:MWHPR21MB0126;
x-ms-traffictypediagnostic: MWHPR21MB0126:
x-microsoft-antispam-prvs: <MWHPR21MB0126EFDBE145AB5D1B08593587DB0@MWHPR21MB0126.namprd21.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:(158342451672863)(211936372134217);
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(61425038)(6040450)(601004)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(10201501046)(100000703101)(100105400095)(6055026)(61426038)(61427038)(6041248)(20161123562025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123558100)(20161123555025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:MWHPR21MB0126; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:MWHPR21MB0126;
x-forefront-prvs: 03468CBA43
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(6009001)(39840400002)(39410400002)(39450400003)(39860400002)(39400400002)(39850400002)(24454002)(13464003)(51444003)(377454003)(3480700004)(8676002)(76176999)(54356999)(189998001)(50986999)(77096006)(93886004)(10090500001)(3660700001)(5005710100001)(561944003)(10290500003)(33656002)(8936002)(81166006)(102836003)(8990500004)(53546010)(86362001)(2906002)(3280700002)(6116002)(4326008)(305945005)(2900100001)(86612001)(25786009)(74316002)(72206003)(53936002)(6436002)(14454004)(5660300001)(7736002)(122556002)(6506006)(6246003)(99286003)(229853002)(7116003)(7696004)(2950100002)(54906002)(478600001)(39060400002)(38730400002)(9686003)(55016002); DIR:OUT; SFP:1102; SCL:1; SRVR:MWHPR21MB0126; H:MWHPR21MB0141.namprd21.prod.outlook.com; FPR:; SPF:None; MLV:ovrnspm; PTR:InfoNoRecords; LANG:en;
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-OriginatorOrg: microsoft.com
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Jun 2017 06:32:04.1269 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 72f988bf-86f1-41af-91ab-2d7cd011db47
X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR21MB0126
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/BgyXp_iah7NiR2sl6sC07Hgn4po>
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 06:32:10 -0000

As we've discussed, I highly approve moving in this direction, and this PR looks like a solid way of doing it.  Review with a few comments, but nothing I'd scream about.

I'll second Martin's opinion -- this doesn't make HTTP/QUIC noticeably more complex.  What it does, and what I suspect gives some people heartburn, is make it *less like HTTP/2*.  The more code reuse you thought you were going to be able to do, the more this makes you unhappy.  This also makes it less like TCP; in a way that's simple for a mapping to deal with, but it means the mapping actually needs thought.  (That's not entirely a bad thing.)

I've said it before, and I'll probably keep saying it:  HTTP/QUIC is not just HTTP/2 over QUIC.  It's similar in spirit, but QUIC is fundamentally different and HTTP/QUIC has to follow.  I'm all for code reuse where feasible, and concept reuse as broadly as possible, but let's not get stuck on net-positive changes because they're different from our existing code (QUIC *or* HTTP/2).

-----Original Message-----
From: QUIC [mailto:quic-bounces@ietf.org] On Behalf Of Martin Thomson
Sent: Wednesday, June 21, 2017 6:50 PM
To: Jana Iyengar <jri@google.com>
Cc: QUIC WG <quic@ietf.org>; Patrick McManus <pmcmanus@mozilla.com>
Subject: Re: Unidirectional streams PR

On 22 June 2017 at 09:48, Jana Iyengar <jri@google.com> wrote:
> My design sense says to optimize for the common case and to allow for 
> the exceptions. Given that our scope is to really get things rolling 
> for HTTP ASAP, I'd argue that request-response is the common case that 
> we need to optimize for.

I think that this is a fair criticism, and I wanted to address it.

My concern is exactly the same as yours: I want get HTTP working.  And unfortunately, HTTP/2 is not a simple request/response protocol.  This is why HTTP/2 and now QUIC allow the server to initiate streams.  And it's that exact gap that motivated me to propose this change.  In my view, this change makes it *easier* to finish HTTP over QUIC.

The cost is that HTTP is marginally more complex.  My view is that the overall protocol (HTTP+QUIC) is no more or less complex than before, there are big savings in transport, and some minor savings in HTTP that counteract the added cost: having to include explicit correlation for request and response, and having to add a way to cancel requests before the response starts. [1]

In terms of generality, we've already heard from Christian that this is basically neutral for DNS, possibly with a tiny reduction in complexity related to not having to check that redundant identifiers in a response are consistent.

Ted suggested that we aim for a design that supports BOTH unidirectional and bidirectional. Given how trivial it is to add an identifier - as demonstrated by this PR - I don't see how building that facility into the base transport is a net win.  Some protocols can still use the stream identifiers as a correlator, for instance those protocols that are properly request/response don't need explicit correlators.  That choice - as with your proposal to retain bidirectionality - creates a potential for head-of-line blocking under certain circumstances, something that an explicit correlator at the application layer neatly avoids.

[1] I don't consider HAS_BODY to be a cost, I'm now firmly of the opinion that merging headers and body back into a single stream is the right solution and that what I wrote up here is only temporary.