Re: PUSH_HEADERS frame

Martin Thomson <martin.thomson@gmail.com> Wed, 20 June 2018 23:51 UTC

Return-Path: <martin.thomson@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 67B1E130E3D for <quic@ietfa.amsl.com>; Wed, 20 Jun 2018 16:51:54 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2
X-Spam-Level:
X-Spam-Status: No, score=-2 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, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-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 ed_bcKA9SnuW for <quic@ietfa.amsl.com>; Wed, 20 Jun 2018 16:51:49 -0700 (PDT)
Received: from mail-ot0-x234.google.com (mail-ot0-x234.google.com [IPv6:2607:f8b0:4003:c0f::234]) (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 7F368130E46 for <quic@ietf.org>; Wed, 20 Jun 2018 16:51:47 -0700 (PDT)
Received: by mail-ot0-x234.google.com with SMTP id a5-v6so1484632otf.12 for <quic@ietf.org>; Wed, 20 Jun 2018 16:51:47 -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:content-transfer-encoding; bh=FFIZzfVB5+kpBdePHSH3L2k5UgTRJMrbgnBFitEMvIM=; b=qc1al82UqqFOyUzsbNDP3EJx8Z0y8XIVlxwTE9gg80VdDe3PGYssrdMlUvYise0rgS J0kGmbCCULldFf5vTwS5fEVbYsU71WzWNg9Tw9oFOvPkEd5NF2Ayb7maTLl8a7/ai3rg Xz3rZPJaxabvww86iMOeZfh0sCZ4QzAsIpJvMzSLaf2+46E4U2UG9plaxDHO90l6gyVN 5cX6k1L2hFbHS9x/c19kgEHo4cFmWbtb/YBpFA2KjfvFZjTsCm7f9LpQTzTcTFZg5xG6 cru8AaA3xAKFIWa5WQFa2WTklDTSWAlp/8C4PU+HBtq3W+Ro92nSWJLEnQfxRqCXcX7a 7PwA==
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:content-transfer-encoding; bh=FFIZzfVB5+kpBdePHSH3L2k5UgTRJMrbgnBFitEMvIM=; b=ki75QEePJ+lECQ0DI3UwmsOL92LLzrDXnxKXkJojiDW6FNXnLoVRXzS05QaBDETztR 5KT0a8Kd2RVe3sWiTJQgrZd1L0SjMWOyYrgIiF7TN1NVcJaXc6wfFjFS80wtT5xYPOKh yT1PaHsweAoaqPfVIhoMwD3S2gc//U3fs6AIU3FX7QXUrmX4AWFUCyNZUPiVmVuxsTzJ B2ADZieIihV3rCslaMFhuRD164InY0gD7kpYUQhnI8JyUcNresxsnOUO0Aj9h21N51aY bL4LAPizIEVAu/E3DnYpb0TQhXB8w6SkQyAVOaI6Qs2O+Ozo2VUUP5Q186777R79uFmL SYUg==
X-Gm-Message-State: APt69E0h/7cJJlYEBM1Kbyds68FWuPjEnBqahS2uHouLfgc9cIDN1o4h pTW5nYbtkgiYSvQCYoMrCa67Wzp2TAtTLjLVSJc=
X-Google-Smtp-Source: ADUXVKIn7pnhFh8I1WASalOmDy3Ltn9zYXRJFhNv4XrqLTKXnF5fCkqCnFjW026fZTNyVmFbyJ1ZxvjwRtTNQfxBgOo=
X-Received: by 2002:a9d:36ca:: with SMTP id s10-v6mr5865015otd.352.1529538706832; Wed, 20 Jun 2018 16:51:46 -0700 (PDT)
MIME-Version: 1.0
References: <BYAPR08MB3944A37B3230FAAA5448E16EDA770@BYAPR08MB3944.namprd08.prod.outlook.com> <7CF7F94CB496BF4FAB1676F375F9666A3BB58F3A@bgb01xud1012> <BYAPR08MB394439B73E6495D7DCD09ECFDA770@BYAPR08MB3944.namprd08.prod.outlook.com>
In-Reply-To: <BYAPR08MB394439B73E6495D7DCD09ECFDA770@BYAPR08MB3944.namprd08.prod.outlook.com>
From: Martin Thomson <martin.thomson@gmail.com>
Date: Thu, 21 Jun 2018 09:51:36 +1000
Message-ID: <CABkgnnU12bHq_OOz26EVjyGnaf41+VGCqriOk6sO8zZJkA83Ug@mail.gmail.com>
Subject: Re: PUSH_HEADERS frame
To: Mike Bishop <mbishop@evequefou.be>
Cc: Lucas Pardue <Lucas.Pardue@bbc.co.uk>, Roberto Peon <fenix@fb.com>, QUIC WG <quic@ietf.org>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/3_jTj4523zy6P6TSUT6o9fiv-nU>
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 23:51:55 -0000

I agree with Mike.  FWIW, implementing push is trivial as a result of
it using the same framing as requests and responses; I would be
opposed to changing that.
On Thu, Jun 21, 2018 at 4:58 AM Mike Bishop <mbishop@evequefou.be> wrote:
>
> 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