RE: Path forward with stream headers

Lucas Pardue <Lucas.Pardue@bbc.co.uk> Thu, 21 June 2018 23:36 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 0F7DC127AC2 for <quic@ietfa.amsl.com>; Thu, 21 Jun 2018 16:36:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -4.2
X-Spam-Level:
X-Spam-Status: No, score=-4.2 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, 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 f8tt3LzWYuTs for <quic@ietfa.amsl.com>; Thu, 21 Jun 2018 16:36:50 -0700 (PDT)
Received: from mailout1.telhc.bbc.co.uk (mailout1.telhc.bbc.co.uk [132.185.161.180]) (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 37ADF12785F for <quic@ietf.org>; Thu, 21 Jun 2018 16:36:50 -0700 (PDT)
Received: from BGB01XI1011.national.core.bbc.co.uk (bgb01xi1011.national.core.bbc.co.uk [10.161.14.15]) by mailout1.telhc.bbc.co.uk (8.15.2/8.15.2) with ESMTP id w5LNafLO018770; Fri, 22 Jun 2018 00:36:41 +0100 (BST)
Received: from BGB01XI1004.national.core.bbc.co.uk (10.184.50.54) by BGB01XI1011.national.core.bbc.co.uk (10.161.14.15) with Microsoft SMTP Server (TLS) id 14.3.389.1; Fri, 22 Jun 2018 00:36:41 +0100
Received: from BGB01XUD1012.national.core.bbc.co.uk ([10.161.14.10]) by BGB01XI1004.national.core.bbc.co.uk ([10.184.50.54]) with mapi id 14.03.0389.001; Fri, 22 Jun 2018 00:36:40 +0100
From: Lucas Pardue <Lucas.Pardue@bbc.co.uk>
To: Jana Iyengar <jri.ietf@gmail.com>
CC: Roberto Peon <fenix@fb.com>, 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//9xobCAAQ6RgIAACWUAgAACQQCAAVjHgIAADIsAgAAE3YCAAWkFgIAAGsopgAAfmICAABdTNg==
Date: Thu, 21 Jun 2018 23:36:39 +0000
Message-ID: <7CF7F94CB496BF4FAB1676F375F9666A3BB5B2C8@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> <7CF7F94CB496BF4FAB1676F375F9666A3BB5B27A@bgb01xud1012>, <CACpbDcccE4pJ5FNNMXXLVAzLygz-DwjYhuh0Wec6hX_0FKcHLQ@mail.gmail.com>
In-Reply-To: <CACpbDcccE4pJ5FNNMXXLVAzLygz-DwjYhuh0Wec6hX_0FKcHLQ@mail.gmail.com>
Accept-Language: en-GB, en-US
Content-Language: en-GB
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
x-originating-ip: [172.19.161.212]
x-exclaimer-md-config: 1cd3ac1c-62e5-43f2-8404-6b688271c769
X-TM-AS-Product-Ver: SMEX-12.5.0.1300-8.2.1013-23922.003
X-TM-AS-Result: No-25.809700-8.000000-10
X-TMASE-MatchedRID: b/1IsOqez6d2eNZNqWU3H8qXjImgj58bju+GX08gELDmQx8ZECP6e/ea 4uH4Y9hvox3eLPiNwxUI/uAZhBR3ZR1YpEPWJiyzF0vYDRID+crRahuPwaQ1WrII+BcngqQ8n68 M3lJ/4rmPOUYXFMZ53nSxb76ag5Nay6nXBt6I/Bov2E0OPZsHB/a/bRHEsPI3wPIW/nmxDKgvu1 lVcZKEoEe2hPXfXQDtOrdW+lppsNbOWt5JgsaVVUKcYi5Qw/RVYpovC7zX5q/qLnOUXH9QdMMpI ZACY/bBomGAuAptZl1FxlKPbeVUqM/37CIrJSBATVa+L3Zgqc7LBdK2mpaYlqvM+zzl/BSTSFpI Z3L5rR8Nw+DYi2ZSrllVlNW6LdwVAbDZOrlndJi3UCG/IQp2PqX1XMd/SqvuCZch4INkhioKDpy 6oiUnx3JS4f6hWI8wKOJdFzEcmJu2L7ZGrRpjDce31VQ+6yRGf7rvXBvEkWm/DsA7dUYjzkxQVO cxxUOlfN/TUSJWLWl0fTzLMWE5Ci+IAeTRb8cP4NAJeq9IDSwb1/7MUw/GuqEQSMuSdJfAb9mYr gm1c2PrdNCmvWF8mG2Qt0yaekNi2mQ59oV+WcBU/2M0RAfTitZKsq3DGpalgBeiq2bjyEks6zDB dwhLRxeD6oFh+3IFFxX5hsTzsUB16NuLD9SbQnQIOMndeKgE4b+uxQ/rA9ZScXQMxepe+2y5oRP T/gnF9Nhvm1lZioV6Icng2y1Lgp/yorkJXkCFvHKClHGjjr1U+YqtAU+F2RKAWnKBwBf/UgqMah PZV4ji8zVgXoAltj2Xsf5MVCB18gATfdkjbTzdB/CxWTRRu/558CedkGIvIXptJJqT2TE=
X-TM-AS-User-Approved-Sender: Yes
X-TM-AS-User-Blocked-Sender: No
X-TMASE-Result: 10--25.809700-8.000000
X-TMASE-Version: SMEX-12.5.0.1300-8.2.1013-23922.003
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: base64
MIME-Version: 1.0
X-EXCLAIMER-MD-CONFIG: c91d45b2-6e10-4209-9543-d9970fac71b7
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/VPkT6PEiqWZMyEXyZKxDM1qIhsM>
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 23:36:55 -0000

One broad example I think mentioned somewhere once related to HTTP extension frames. In H2, frames not associated with request/response are usually dumped on the control stream. Large, unrelated frames could HoL block that stream.

HTTP/QUIC could allow such frames to be sent on unidirectional streams ( but not currently because server push gobbled up a half of that space).

Lucas
________________________________________
From: Jana Iyengar [jri.ietf@gmail.com]
Sent: 22 June 2018 00:06
To: Lucas Pardue
Cc: Roberto Peon; Martin Thomson; QUIC WG; Mike Bishop
Subject: Re: Path forward with stream headers

Hi Lucas,

It's a matter of training... the tools can certainly help, but my point is that there is value in specific stream IDs being known identifiers, rather than opaque identifiers. I find self-descriptiveness to be valuable.

I'm also not yet convinced that we need extensibility in this particular manner. Are there examples of things we anticipate needing this extensibility for, that we wouldn't want a version rev for?

- jana

On Thu, Jun 21, 2018 at 1:14 PM Lucas Pardue <Lucas.Pardue@bbc.co.uk<mailto:Lucas.Pardue@bbc.co.uk>> wrote:
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<mailto:quic-bounces@ietf.org>] on behalf of Jana Iyengar [jri.ietf@gmail.com<mailto: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.






-----------------------------
http://www.bbc.co.uk
This e-mail (and any attachments) is confidential and
may contain personal views which are not the views of the BBC unless specifically stated.
If you have received it in
error, please delete it from your system.
Do not use, copy or disclose the
information in any way nor act in reliance on it and notify the sender
immediately.
Please note that the BBC monitors e-mails
sent or received.
Further communication will signify your consent to
this.
-----------------------------