Re: Path forward with stream headers

Jana Iyengar <jri.ietf@gmail.com> Thu, 21 June 2018 23:06 UTC

Return-Path: <jri.ietf@gmail.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 EBD2D124D68 for <quic@ietfa.amsl.com>; Thu, 21 Jun 2018 16:06:46 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.998
X-Spam-Level:
X-Spam-Status: No, score=-1.998 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, 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=gmail.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 RQjQhMtKP_CQ for <quic@ietfa.amsl.com>; Thu, 21 Jun 2018 16:06:44 -0700 (PDT)
Received: from mail-it0-x235.google.com (mail-it0-x235.google.com [IPv6:2607:f8b0:4001:c0b::235]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 20A9A120049 for <quic@ietf.org>; Thu, 21 Jun 2018 16:06:44 -0700 (PDT)
Received: by mail-it0-x235.google.com with SMTP id j135-v6so394706itj.1 for <quic@ietf.org>; Thu, 21 Jun 2018 16:06:44 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=iBkALlpO7u2PqswytduR1JJQGcZwKT2mCzhoijImdC8=; b=tffL7ylzeq/HHIrG1d6cfxeTlciZoVc7prAQD3wgVz2g0LLQUjxeIMCVb/3Whj45jk WPTzR9rEBreuTf3X5hupF4YUc9yxYpxbqnDBLAg6TQsp8vyd9VAPAbOdlzT/TS/HWrLn zqXJIciCnMX2ZTl+m/Ggi+LfiAhYezYTnsPF5dXVBZcyyNMQvDsDepxXiSeCZLrvd3qd +UdDXVcw/unuJQZdRrWgQwz4HMlkBeY56SrxBGuzLxXtZp3zufRtkdhH1fL/bM7386Mp QAsak6h8/IJP1R5NXQhWy7NKiTYeYo/ad/b3ue6KmloZtmQ1BLvb9yFOiXOrq0/wKA4Q /lQQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=iBkALlpO7u2PqswytduR1JJQGcZwKT2mCzhoijImdC8=; b=lx35pOk9RRaY7wPV/3VVwwFg1WCBalMSQtvhw23i/Kuk2Fc91XDDyVfk+UMYQMsB46 wrVHYN8K25qmSp10dJCpMyoh704SizF9E6P7EdQlDd7W/05G69FcS3t688mHtPt0+T/o MgH1NH3j435wbezxX7IqgT8/IFypw08Tuil9YHBYv822NmRCR7FMx8zTmG7HvVRkf1h+ VgHJXMxmYQ0pRDgqxTcopEDEtKUkYkhrcWk24KQhDDNWcwwM2yn0eIpaG1km/72a1PFI MNFmrgCuhA7Tgo39m+5HCq01qudv7stmOwsBp66e3qtVD5T+M9X3qd9lKzkDaRLk9eVv ry/A==
X-Gm-Message-State: APt69E3qq8kVI0SG5kiQjTqem0tii5CWj3Q6EEXQcRrbDDx7SUaTV/8Q aZxs1w3yHyeH0KqVF892o0c8E2JWKodfe3l61DM=
X-Google-Smtp-Source: ADUXVKJ8odluivVpKn63DLM+/pUr2qh0e2Xlabc3LmWXj/88nfK0RNrbUfE8jKcJCs0g1yHS7QPpEO8rCy0ClYZ7+pc=
X-Received: by 2002:a24:5594:: with SMTP id e142-v6mr6777838itb.46.1529622403327; Thu, 21 Jun 2018 16:06:43 -0700 (PDT)
MIME-Version: 1.0
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>
In-Reply-To: <7CF7F94CB496BF4FAB1676F375F9666A3BB5B27A@bgb01xud1012>
From: Jana Iyengar <jri.ietf@gmail.com>
Date: Thu, 21 Jun 2018 16:06:31 -0700
Message-ID: <CACpbDcccE4pJ5FNNMXXLVAzLygz-DwjYhuh0Wec6hX_0FKcHLQ@mail.gmail.com>
Subject: Re: Path forward with stream headers
To: Lucas Pardue <Lucas.Pardue@bbc.co.uk>
Cc: Roberto Peon <fenix@fb.com>, Martin Thomson <martin.thomson@gmail.com>, QUIC WG <quic@ietf.org>, Mike Bishop <mbishop@evequefou.be>
Content-Type: multipart/alternative; boundary="000000000000fdb03a056f2ef7a8"
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/ug4uk6Fub_Iy0AmYasdx1p-VaIY>
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:06:47 -0000

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> 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] 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> 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> 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]
>>     Sent: Wednesday, June 20, 2018 2:03 PM
>>     To: Martin Thomson <martin.thomson@gmail.com
>> <martin.thomson@gmail..com>>
>>     Cc: Mike Bishop <mbishop@evequefou.be>; QUIC WG <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
>> <martin.thomson@gmail.com>> wrote:
>>
>>         On Wed, Jun 20, 2018 at 10:21 AM Roberto Peon <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.
>>
>>
>>
>>
>>