RE: PUSH_HEADERS frame

Mike Bishop <mbishop@evequefou.be> Wed, 20 June 2018 18:58 UTC

Return-Path: <mbishop@evequefou.be>
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 ED965130EB7 for <quic@ietfa.amsl.com>; Wed, 20 Jun 2018 11:58:05 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.911
X-Spam-Level:
X-Spam-Status: No, score=-1.911 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_DKIMWL_WL_MED=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=evequefou.onmicrosoft.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 4lcitxH0xxm8 for <quic@ietfa.amsl.com>; Wed, 20 Jun 2018 11:58:03 -0700 (PDT)
Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0104.outbound.protection.outlook.com [104.47.32.104]) (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 1CBA812777C for <quic@ietf.org>; Wed, 20 Jun 2018 11:58:03 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=evequefou.onmicrosoft.com; s=selector1-evequefou-be; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kIu9W3Sj+PZ6cFR/KpVZO2RTgn8ircKEeX/xtDEm9kY=; b=rSKm008qbIHCJtlGLbYFjckuDs6ZxOuAa6spMYR7Upcmg1G2gEPMyxLcr7XWPV2QrHhGejoUJ+G6xwgmaBLa5ehE8Dg52SsCE0eZFXqPkJ/DNPJZxQkkrcMl3Xujo5WFYCkFDRULHXd/rcrQCrdgDcl1NwvT6MgDMxijNAOdAlM=
Received: from BYAPR08MB3944.namprd08.prod.outlook.com (52.135.194.30) by BYAPR08MB3847.namprd08.prod.outlook.com (52.135.193.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.863.17; Wed, 20 Jun 2018 18:57:59 +0000
Received: from BYAPR08MB3944.namprd08.prod.outlook.com ([fe80::6093:5ef9:46a3:ca1f]) by BYAPR08MB3944.namprd08.prod.outlook.com ([fe80::6093:5ef9:46a3:ca1f%4]) with mapi id 15.20.0863.016; Wed, 20 Jun 2018 18:57:59 +0000
From: Mike Bishop <mbishop@evequefou.be>
To: Lucas Pardue <Lucas.Pardue@bbc.co.uk>, Martin Thomson <martin.thomson@gmail.com>, Roberto Peon <fenix@fb.com>
CC: QUIC WG <quic@ietf.org>
Subject: RE: PUSH_HEADERS frame
Thread-Topic: PUSH_HEADERS frame
Thread-Index: AdQItM9/wr2FRkmcSU6cCT2bnOJHwAACdGVFAAJIJNA=
Date: Wed, 20 Jun 2018 18:57:58 +0000
Message-ID: <BYAPR08MB394439B73E6495D7DCD09ECFDA770@BYAPR08MB3944.namprd08.prod.outlook.com>
References: <BYAPR08MB3944A37B3230FAAA5448E16EDA770@BYAPR08MB3944.namprd08.prod.outlook.com> <7CF7F94CB496BF4FAB1676F375F9666A3BB58F3A@bgb01xud1012>
In-Reply-To: <7CF7F94CB496BF4FAB1676F375F9666A3BB58F3A@bgb01xud1012>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: spf=none (sender IP is ) smtp.mailfrom=mbishop@evequefou.be;
x-originating-ip: [38.134.241.6]
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; BYAPR08MB3847; 7:vQ5qmfSLS7Epn5CatxqE+a77Xb4zRGOERxbwudj8VWwDm/D4gaCXED/qoB0aPY4nqi4XcBFZooGHkbBs90SPsKCI8uZoSh2Qvys3hBsoxW+A1khiPdo8+sQ7UauwRTtJ6F67wgMOyaqldt3cUvfQzoxDcaPQ5drugbDGoObsmKjDmNFI6I4wSDYDxXyOv13aaKvzwU+qKXhkDsspV/9Q5pVNsxt78rHsh8P7OkEElK79dTNuQ+V4ho29eGhb+3wG
x-ms-exchange-antispam-srfa-diagnostics: SOS;
x-ms-office365-filtering-correlation-id: 60c3f450-7c70-4e7b-4b6a-08d5d6dfbdab
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(7021125)(4534165)(7022125)(4603075)(4627221)(201702281549075)(7048125)(7024125)(7027125)(7028125)(7023125)(5600026)(711020)(2017052603328)(7153060)(7193020); SRVR:BYAPR08MB3847;
x-ms-traffictypediagnostic: BYAPR08MB3847:
x-microsoft-antispam-prvs: <BYAPR08MB38474B0BB7F25E39D519A0A4DA770@BYAPR08MB3847.namprd08.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:(85827821059158)(67672495146484)(127952516941037);
x-ms-exchange-senderadcheck: 1
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(8121501046)(5005006)(10201501046)(3002001)(93006095)(93001095)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(2016111802025)(20161123564045)(20161123560045)(20161123558120)(20161123562045)(6043046)(6072148)(201708071742011)(7699016); SRVR:BYAPR08MB3847; BCL:0; PCL:0; RULEID:; SRVR:BYAPR08MB3847;
x-forefront-prvs: 070912876F
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(39830400003)(366004)(376002)(346002)(39380400002)(396003)(51914003)(199004)(189003)(13464003)(486006)(74316002)(4326008)(11346002)(25786009)(2906002)(446003)(106356001)(5250100002)(5660300001)(7116003)(102836004)(26005)(305945005)(39060400002)(6116002)(3846002)(68736007)(229853002)(74482002)(186003)(6506007)(66066001)(478600001)(86362001)(9686003)(14454004)(76176011)(476003)(7696005)(99286004)(53936002)(316002)(3280700002)(105586002)(33656002)(7736002)(6246003)(59450400001)(8936002)(55016002)(53546011)(110136005)(97736004)(6436002)(3660700001)(81156014)(8676002)(81166006)(2900100001); DIR:OUT; SFP:1102; SCL:1; SRVR:BYAPR08MB3847; H:BYAPR08MB3944.namprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:0; MX:1;
received-spf: None (protection.outlook.com: evequefou.be does not designate permitted sender hosts)
x-microsoft-antispam-message-info: m896ban/nPTa6MQlHpykdmRNkgA0pYoe2374FSkFsa46tzr4lDVRlJiUAtL3h0uI9NLQF3T1F+bxf57rznR/62dBN2aUqPKpnmIAn5Ou6b3UCtUBadxtezQBM7cSxLfAcxFMW+E8t5fChOCxhl8GhLNBgTrIUQqj0ceaZCPUC76Fe1xlcPldd1AQrGphoCDI8i4dTJsBTDbEgMOSiGF8TsutmZsmgWt7QsMOcyi+yzCEIz8CHGwEkLOseY/Mr/HhpBx7PfxxR7cY79HqByUOyOZ+wOdwGDvjLkyGVIhc+2BbNw3fBmqyvQxYRLkYjIu04/UCeRwlOs5bMyII6j+P8A==
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-OriginatorOrg: evequefou.be
X-MS-Exchange-CrossTenant-Network-Message-Id: 60c3f450-7c70-4e7b-4b6a-08d5d6dfbdab
X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jun 2018 18:57:58.9983 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 41eaf50b-882d-47eb-8c4c-0b5b76a9da8f
X-MS-Exchange-Transport-CrossTenantHeadersStamped: BYAPR08MB3847
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/w8NWzAuiUQzH9PkfXCcwIWb7J5c>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.26
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, 20 Jun 2018 18:58:07 -0000

Philosophically, I'd go a step further and say that, as in the PR, the semantics of the stream are entirely determined by the type byte.  Any internal divisions of regions within the bytestream are as needed by that type and defined by it.  Some, like the QPACK stream, won't actually need divided regions.

The fact that push streams and control streams subdivide their regions using frames from the same type space as request streams is somewhere between a convenience due to push's similarity to things we already have (responses) and a historical legacy of H2.  There's no reason they would need to do so; there's just also no real reason to change.

-----Original Message-----
From: Lucas Pardue [mailto:Lucas.Pardue@bbc.co.uk] 
Sent: Wednesday, June 20, 2018 11:28 AM
To: Mike Bishop <mbishop@evequefou.be>; Martin Thomson <martin.thomson@gmail.com>; Roberto Peon <fenix@fb.com>
Cc: QUIC WG <quic@ietf.org>
Subject: RE: PUSH_HEADERS frame

Thanks for the feedback. To be clear, I'm in favor of typed streams but to play devils advocate. 

> Unidirectional streams aren't required to use HTTP/QUIC frames;

QPACK aside, the only examples we have use frames. So the question is: do we think it is in scope to support un-framed STREAM bytes as an HTTP/QUIC extension point?

Back to PUSH_HEADERS, the change is a subtle one. I'd highlight the Header Block, which presently has two bearer frames HEADERS and PUSH_PROMISE. The main difference with push is that the stream ID cannot be used to correlate request and response. So we use a push ID that is framed everywhere *except* the push delivery stream. PUSH_HEADERS is a more honest approach to this quirk (at some small framing inconvenience), everything relevant to the Header Block is bundled together. It acts as a stream reservation mechanism that ties push response data, with request and response headers.  

It doesn't change much: 

Untyped streams (today): push ID + HEADERS + DATA (+ HEADERS) Typed streams: stream type byte + push ID + HEADERS + DATA (+ HEADERS) Untyped and framed streams:  PUSH_HEADERS (including push ID) + DATA (+HEADERS)

I could try to make a weak argument that framing helps because you could at least skip over frames if you get their length but not the rest. The current design requires the full push ID to be received before HEADERS and DATA processing.

Lucas