RE: Path forward with stream headers

Lucas Pardue <Lucas.Pardue@bbc.co.uk> Thu, 21 June 2018 20:14 UTC

Return-Path: <Lucas.Pardue@bbc.co.uk>
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 3238D130DDA for <quic@ietfa.amsl.com>; Thu, 21 Jun 2018 13:14:28 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.198
X-Spam-Level:
X-Spam-Status: No, score=-4.198 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DC_PNG_UNO_LARGO=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_MED=-2.3, SPF_PASS=-0.001, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
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 ijzcLWqGpudG for <quic@ietfa.amsl.com>; Thu, 21 Jun 2018 13:14:25 -0700 (PDT)
Received: from mailout0.telhc.bbc.co.uk (mailout0.telhc.bbc.co.uk [132.185.161.179]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 48CF112777C for <quic@ietf.org>; Thu, 21 Jun 2018 13:14:25 -0700 (PDT)
Received: from BGB01XI1009.national.core.bbc.co.uk (bgb01xi1009.national.core.bbc.co.uk [10.161.14.23]) by mailout0.telhc.bbc.co.uk (8.15.2/8.15.2) with ESMTP id w5LKEFtl000227; Thu, 21 Jun 2018 21:14:15 +0100 (BST)
Received: from BGB01XUD1012.national.core.bbc.co.uk ([10.161.14.10]) by BGB01XI1009.national.core.bbc.co.uk ([10.161.14.23]) with mapi id 14.03.0389.001; Thu, 21 Jun 2018 21:14:14 +0100
From: Lucas Pardue <Lucas.Pardue@bbc.co.uk>
To: Jana Iyengar <jri.ietf@gmail.com>, Roberto Peon <fenix@fb.com>
CC: Martin Thomson <martin.thomson@gmail.com>, QUIC WG <quic@ietf.org>, Mike Bishop <mbishop@evequefou.be>
Subject: RE: Path forward with stream headers
Thread-Topic: Path forward with stream headers
Thread-Index: AdQIENSUAUHFuhsDSVSI2JhFySDeG///nSCA//9xobCAAQ6RgIAACWUAgAACQQCAAVjHgIAADIsAgAAE3YCAAWkFgIAAGsop
Date: Thu, 21 Jun 2018 20:14:14 +0000
Message-ID: <7CF7F94CB496BF4FAB1676F375F9666A3BB5B27A@bgb01xud1012>
References: <BYAPR08MB39446BABB72F7EAC6E87CF99DA700@BYAPR08MB3944.namprd08.prod.outlook.com> <B1FC187D-A536-4C51-A68A-65F72EA52DDC@fb.com> <BYAPR08MB3944608B5D376690AEF6C583DA700@BYAPR08MB3944.namprd08.prod.outlook.com> <CABkgnnVGh+Uz9FZiA_vQmNcWu9fDrUYp_ZkbvprAHKCm9NGY+w@mail.gmail.com> <0CEEAD26-8CCD-4506-AB9B-941701A3962C@fb.com> <CABkgnnVR6Sixz49MoATF_iGGBbjDs_15mQy672Zd-dL62ntsMA@mail.gmail.com> <65C79755-0D0E-4786-9494-731CA380DBC8@fb.com> <BYAPR08MB3944D05E7E3C5837F5142645DA770@BYAPR08MB3944.namprd08.prod.outlook.com> <9C41B8AC-515A-40D3-8162-285F26DD2642@fb.com>, <CACpbDcctg=63A5kaNgOMU1A0kRKV1v68M_tKSQsv2wfsCad_JA@mail.gmail.com>
In-Reply-To: <CACpbDcctg=63A5kaNgOMU1A0kRKV1v68M_tKSQsv2wfsCad_JA@mail.gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
x-originating-ip: [172.19.161.211]
x-exclaimer-md-config: c91d45b2-6e10-4209-9543-d9970fac71b7
x-tm-as-product-ver: SMEX-12.5.0.1300-8.2.1013-23922.001
x-tm-as-result: No-22.437800-8.000000-10
x-tmase-matchedrid: pS5owHKhBO1xGyfbWjfsSxuurbgYp+HQ/AZW18vjv1rimKcLRvsB1f5D CQVs54vCdvgGbsWpCcs+cjURnQbybFN5kIZnYeEYDB+ErBr0bAMl3afZehJEWcDyFv55sQyoL7t ZVXGShKBHtoT1310A7Tq3VvpaabDWzlreSYLGlVVCnGIuUMP0VRSRa9qpSosfrGn3BSxZVNSWsb lXE0A4wcpx30wDMdnPuyr9EDhG9KTHgweLox1o/wCwcUB5CbVqUD62xKrM2xkT7lsB95pa6lVL0 wx3ivhjFghSmBzCmc6oAbdnwCiIK1pHpNJHp94gr04R126GsicZskwWqoib3JJYEw3N9rxJL/MF Hd27Ns2nTiCfefUQqGb3Z7icbZPc6LVOyhonqfRIRA38P/dwbiTbbsi+pqSF/uymSAhGxLKwQli WBbE2aTYP2PIfxdcyIIhkaWkr82y2jsN8aguKvAu8ZZ1LOcwGTEFC0zV7bKRCannV/b7f2RPcZp 2k3oC4Yo9I0FrCIXwRT9NxjBEqGBoI+ORjNh9IbQ9aoPSmWJFSssBkvOlYfi/h9VOvT6Ag1+h8V lGgU8R90nHcE0R/71BqAeJWJKSGsut7KF2H4sdmNCKOCsW/Ova/bRHEsPI352VTYrkmb1vS0MbW fFpgAMWipJ3o/FgqnV8gelGeWcJQZ9BJr++dN4Dqq/69HfgsLPZWqnMLGVIgUEQTkIWiYpggi1y Gvzqdr55WycvL5EJ2UbqcatE72nx8EDQqTtoDA9lly13c/gGLB4sTRpOnCcj0Eew4TN42MMpwBa b+8feW/AnXk7PkkGmXLkyc+kNe8ZTibkDR5X2JDLgwb/1K2VkMvWAuahr8WRYdoGMKeqJnswcbX 99OHBjXymPSXaehMJdUU7FFzNI2JhN21dkG4Li0QrW47DsaftwZ3X11IV0=
x-tm-as-user-approved-sender: Yes
x-tm-as-user-blocked-sender: No
x-tmase-result: 10--22.437800-8.000000
x-tmase-version: SMEX-12.5.0.1300-8.2.1013-23922.001
Content-Type: multipart/mixed; boundary="_004_7CF7F94CB496BF4FAB1676F375F9666A3BB5B27Abgb01xud1012_"
MIME-Version: 1.0
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/J0TjZflhk1PDSgLx27M65fyOY3c>
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: Thu, 21 Jun 2018 20:14:29 -0000

Hi Jana,

I appreciate the debuggability concerns, can this just be solved by tooling? Is the issue with trying to look at application debug logs in realtime as applications receive QUIC packets?

Wireshark for HTTP/2 already acts statefully when it decrypts sessions and dissects HPACK, would it be terribly difficult for it to read this first byte and represent the stream type in a convenient way?

Note that the proposal is just for unidirectional streams - client-initiated bidi streams are normal request/response on incrementing stream IDs, that's all that needs to be looked for in a lot of traffic scenarios.

I'm probably far less experienced with debugging GQUIC traces but in my experience cross referencing frames from Stream 3 to the response stream was always a bit clunky, especially for push promise. See the attached screenshot of a very old wireshark dissect of GQUIC (NB Alexis La Goutte quickly fixed the bug with decoding the Header Block Fragment shown in that image, thanks!).

Lucas
________________________________
From: QUIC [quic-bounces@ietf.org] on behalf of Jana Iyengar [jri.ietf@gmail.com]
Sent: 21 June 2018 20:37
To: Roberto Peon
Cc: Martin Thomson; QUIC WG; Mike Bishop
Subject: Re: Path forward with stream headers

Mike's point that the HTTP headers need to be read before reading data from a stream out of order makes it clear that the first bytes are already HoL blocking in this current mapping. Given the current mapping, while I'm sympathetic to Roberto's argument that there are use cases where an application might want to read data out of order from a stream, I don't see additional HoL blocking because of this byte.

That said, I like the self-descriptiveness of the stream ID. Even for debugging purposes, it's a matter of training yourself to understand what stream IDs mean what type of stream, but once that's done, it's always true for QUICv1. Having looked at a large number of GQUIC traces, I can say that being able to tell at a glance what a particular stream ID across traces is very useful (In GQUIC, stream 1 is crypto, stream 3 is headers, and stream 5 is the first request stream from the client).  With a type byte, debuggability is worse, since you now must see the first byte and remember what stream ID maps to what for the rest of the connection, and you need to do this for every connection you're looking at.

Given my experience, I would prefer having stream IDs that are self descriptive.

I understand the desire to keep this flexible for future tweaks of HTTP/QUIC without a version rev, but it is a degree of freedom that we can surely plan to exercise for things we cannot anticipate right now. I'm not yet convinced that adding this additional extensibility mechanism is necessary right now.


On Wed, Jun 20, 2018 at 3:05 PM Roberto Peon <fenix@fb.com<mailto:fenix@fb.com>> wrote:
Yep, you're right, because we're not having HEADERS vs DATA frames as a QUIC-layer thing, we're screwed.

-=R

On 6/20/18, 2:48 PM, "Mike Bishop" <mbishop@evequefou.be<mailto:mbishop@evequefou.be>> wrote:

    But you don't know where the body is until you've seen the header.  Otherwise, you're not certain that what you're seeing *is* body, rather than something in a different frame that happens to look like your self-description.

    -----Original Message-----
    From: Roberto Peon [mailto:fenix@fb.com<mailto:fenix@fb.com>]
    Sent: Wednesday, June 20, 2018 2:03 PM
    To: Martin Thomson <martin.thomson@gmail.com<mailto:martin.thomson@gmail..com>>
    Cc: Mike Bishop <mbishop@evequefou.be<mailto:mbishop@evequefou.be>>; QUIC WG <quic@ietf.org<mailto:quic@ietf.org>>
    Subject: Re: Path forward with stream headers

    You're assuming the data isn't self-descriptive in the body.
    -=R

    On 6/19/18, 5:29 PM, "Martin Thomson" <martin.thomson@gmail..com<mailto:martin.thomson@gmail.com>> wrote:

        On Wed, Jun 20, 2018 at 10:21 AM Roberto Peon <fenix@fb.com<mailto:fenix@fb.com>> wrote:
        > However, if one must receive the first packet of each stream, additional HoL blocking (which prevents playback/interpretation) is induced.

        This is the bit I'm pushing back on.  The first byte isn't privileged.
        There's a push ID, a HEADERS frame, and the start of the first DATA
        frame before you can start into random access.  Without that, you
        can't know what you are reading.  I fail to see how one additional
        octet is a problem here.