Re: Design: Adding ASSOCIATED_ONLY

James M Snell <jasnell@gmail.com> Wed, 19 June 2013 18:28 UTC

Return-Path: <ietf-http-wg-request@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id A7ACD21F9E6D for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 19 Jun 2013 11:28:12 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.557
X-Spam-Level:
X-Spam-Status: No, score=-10.557 tagged_above=-999 required=5 tests=[AWL=0.042, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([12.22.58.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id hFcpSsShr0Tt for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 19 Jun 2013 11:28:07 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com (Postfix) with ESMTP id D58BA21F9E11 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Wed, 19 Jun 2013 11:28:06 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1UpN6M-0007z8-HI for ietf-http-wg-dist@listhub.w3.org; Wed, 19 Jun 2013 18:27:26 +0000
Resent-Date: Wed, 19 Jun 2013 18:27:26 +0000
Resent-Message-Id: <E1UpN6M-0007z8-HI@frink.w3.org>
Received: from lisa.w3.org ([128.30.52.41]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <jasnell@gmail.com>) id 1UpN69-0007yO-SV for ietf-http-wg@listhub.w3.org; Wed, 19 Jun 2013 18:27:13 +0000
Received: from mail-vc0-f179.google.com ([209.85.220.179]) by lisa.w3.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.72) (envelope-from <jasnell@gmail.com>) id 1UpN66-0004CE-Cf for ietf-http-wg@w3.org; Wed, 19 Jun 2013 18:27:13 +0000
Received: by mail-vc0-f179.google.com with SMTP id hz11so4081642vcb.10 for <ietf-http-wg@w3.org>; Wed, 19 Jun 2013 11:26:44 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type; bh=S14fnctgfpeUNicljRO6g12sDAE1oQHUKHSPhdU+px4=; b=S30RJ+n+eOTkuWJGra19ZDM7Id/HgMzWy1K+ncgaVNtI3RjCdL68JIcLo0zsMs/hYE KqtuxCCBZIH/4qfaRxvMposvfJpyQdMlAhDjaZG2ZtyptMgG1w4ADqVE0yX22Daw/uLX vwhk8QJrPvL0XBZ9RRIxRQ7l0BFfw5436F5WcPzKHR4IJw4+pHgoqgxHMT4ssA223NI2 9s5jW6dI95IjfF6BYzGYSoyOv//OHYACl4LTYahF4Pv1txwMswVXLMYoVx6gYwELoIh+ 8ScfguOR3clg5VB12jaFpSy0a8UKQgW1HYgBDEHaQKhBr2pV/TNj8Ar0t4eErIeJpURX 5YBQ==
X-Received: by 10.220.112.210 with SMTP id x18mr1030672vcp.0.1371666404623; Wed, 19 Jun 2013 11:26:44 -0700 (PDT)
MIME-Version: 1.0
Received: by 10.58.47.8 with HTTP; Wed, 19 Jun 2013 11:26:24 -0700 (PDT)
In-Reply-To: <CABaLYCuhs5zmMHD9D7qNEhhUpvzWf1THHOjS5-vTu6soMUqALA@mail.gmail.com>
References: <CABP7Rbe29dHp3LZuWEMKJdVEkuHW2jOUK0sSyBuh6PFnq=9Z1A@mail.gmail.com> <CABkgnnUKnborWAtuxwEvWx7wR=JYdOTvWHbpPd6NJ5kXK0Sw9A@mail.gmail.com> <CABaLYCuhs5zmMHD9D7qNEhhUpvzWf1THHOjS5-vTu6soMUqALA@mail.gmail.com>
From: James M Snell <jasnell@gmail.com>
Date: Wed, 19 Jun 2013 11:26:24 -0700
Message-ID: <CABP7RbfreVJv=RZga+Y6iHxsOhmdheyjcvZ3dTNgW3drg4j2iw@mail.gmail.com>
To: Mike Belshe <mike@belshe.com>
Cc: Martin Thomson <martin.thomson@gmail.com>, "ietf-http-wg@w3.org" <ietf-http-wg@w3.org>
Content-Type: text/plain; charset="UTF-8"
Received-SPF: pass client-ip=209.85.220.179; envelope-from=jasnell@gmail.com; helo=mail-vc0-f179.google.com
X-W3C-Hub-Spam-Status: No, score=-3.5
X-W3C-Hub-Spam-Report: AWL=-2.686, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001
X-W3C-Scan-Sig: lisa.w3.org 1UpN66-0004CE-Cf 5c4f2502512a04a94c8c34d59c1bf851
X-Original-To: ietf-http-wg@w3.org
Subject: Re: Design: Adding ASSOCIATED_ONLY
Archived-At: <http://www.w3.org/mid/CABP7RbfreVJv=RZga+Y6iHxsOhmdheyjcvZ3dTNgW3drg4j2iw@mail.gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/18297
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <http://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

Not very contrived use case: Switching away from one browser tab with
N-active push streams. Without this, we would need to send PRIORITY
frames for each individual pushed stream, which is bad.

At the interim, as part of the updated lifecycle discussions, we all
seemed to agree that the lifecycle of push streams was independent of
the originating stream, given that, if I close a browser tab with
N-active push streams, I would have to send a separate RST_STREAM for
every push stream in addition to the originating stream. This
eliminates that need.

You're right that this would be unnecessary if push was disabled, but
we are building push into the base protocol so we have to be able to
efficiently handle the case where push is not disabled. There's no way
around that.

While I am quite sympathetic to the "let's not add stuff we really
don't need" point of view, ASSOCIATED_ONLY makes a lot of sense in my
opinion, and would make it easier and more efficient to implement the
"independent stream lifecycle" notion.

On Wed, Jun 19, 2013 at 11:13 AM, Mike Belshe <mike@belshe.com> wrote:
> Is there a specific use case that needs this?
>
> I suspect there are two camps of browsers:
>    - those that disable push
>    - those that don't disable push
>
> If you disabled push, then these aren't needed.
>
> If you didn't disable push, do you really need to be able to deal with batch
> operations on associated streams?  (I know we can contrive a use-case on the
> fly right now - that is always possible.  But if we don't *really* need it,
> its just more stuff in the protocol I'd rather omit until we really know
> that it is needed.)
>
> Thanks,
> Mike
>
>
>
> On Wed, Jun 19, 2013 at 11:07 AM, Martin Thomson <martin.thomson@gmail.com>
> wrote:
>>
>> On 19 June 2013 10:56, James M Snell <jasnell@gmail.com> wrote:
>> > https://github.com/http2/http2-spec/pull/144
>> >
>> > This was a technical change brought up and discussed as part of the
>> > "layering taskforce" breakout but was never discussed in the larger
>> > interim discussions.
>> >
>> > Essentially, this PR would add an "ASSOCIATED_ONLY" flag to PRIORITY
>> > and RST_STREAM frames that would allow terminating and reprioritizing
>> > promised streams as a group.
>> >
>> > Sending PRIORITY(ASSOCIATED_ONLY) would ONLY set the priority for
>> > associated streams, not the referenced stream.
>> >
>> > Sending RST_STREAM(ASSOCIATED_ONLY) would terminate ONLY the
>> > associated streams, not the referenced stream.
>> >
>> > Without this, we would have to send PRIORITY and RST_STREAM for each
>> > individual associated stream, which is obviously quite inefficient.
>>
>> What James omits is:
>>
>> RST_STREAM is currently specified to terminate all associated streams
>> in addition to the parent stream.  This would remove this coupling,
>> which is considered by some to be problematic.
>>
>> It's not possible to reprioritise associated streams as a group.  We
>> did agree that associated streams would inherit a priority that is
>> lower (by one) than the parent stream.  As it stands, changing all of
>> them requires first discovering the stream ID that will be used, then
>> sending individual PRIORITY frames for each.
>>
>> There's not a lot of experience with this area of the specification.
>>
>