Re: Design: Adding ASSOCIATED_ONLY

Mike Belshe <mike@belshe.com> Wed, 19 June 2013 19:32 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 0DE7521F9DBC for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 19 Jun 2013 12:32:34 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -9.976
X-Spam-Level:
X-Spam-Status: No, score=-9.976 tagged_above=-999 required=5 tests=[AWL=-0.000, BAYES_00=-2.599, FM_FORGED_GMAIL=0.622, HTML_MESSAGE=0.001, 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 P9agkc3zXKYD for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 19 Jun 2013 12:32:28 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com (Postfix) with ESMTP id 2EB5021F9FB6 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Wed, 19 Jun 2013 12:32:28 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1UpO5k-0004Db-T1 for ietf-http-wg-dist@listhub.w3.org; Wed, 19 Jun 2013 19:30:52 +0000
Resent-Date: Wed, 19 Jun 2013 19:30:52 +0000
Resent-Message-Id: <E1UpO5k-0004Db-T1@frink.w3.org>
Received: from lisa.w3.org ([128.30.52.41]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <mike@belshe.com>) id 1UpO5X-0004CR-Po for ietf-http-wg@listhub.w3.org; Wed, 19 Jun 2013 19:30:39 +0000
Received: from mail-bk0-f49.google.com ([209.85.214.49]) by lisa.w3.org with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.72) (envelope-from <mike@belshe.com>) id 1UpO5V-0006Uo-3J for ietf-http-wg@w3.org; Wed, 19 Jun 2013 19:30:38 +0000
Received: by mail-bk0-f49.google.com with SMTP id mz10so2500732bkb.36 for <ietf-http-wg@w3.org>; Wed, 19 Jun 2013 12:30:10 -0700 (PDT)
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-gm-message-state; bh=0sctGF+BOT3WsaX8c1O74Kuuc5f2VSbwO2bFZg5MwgI=; b=mLfuzYrQeRfD3C+rMMtFInk8HnPEubfebK1HvqrYnLMGD5qqNhwoNeEpQ+tBVRhMId BWlw+NHoSNhjGKLFhn7l5LIpR6BxpMCl+nd0RHqoNnWvAVIo6UvgIHuTP+iSsGOVIqJU Oh6QD7DuonMlqSDllj1oE1Kxj3iPFVm+AI5DBpIxWD/Mg8xDBUVae6/uaacowYBdy6Bv wIex1fJyBfw/kEkA2mzBZ8JUKjViizF4jX7BV0phAAFCzU+sdsbbZon9RAO/uS6G5CJ/ 08LR4ADd8polYv168SGolTEDevdmWcAxdF4lhImybyPH9YGAZYzQ7/x0UtHh8SXB1asF a/Ug==
MIME-Version: 1.0
X-Received: by 10.204.239.8 with SMTP id ku8mr578783bkb.51.1371670210469; Wed, 19 Jun 2013 12:30:10 -0700 (PDT)
Received: by 10.205.14.130 with HTTP; Wed, 19 Jun 2013 12:30:10 -0700 (PDT)
In-Reply-To: <CABP7RbfreVJv=RZga+Y6iHxsOhmdheyjcvZ3dTNgW3drg4j2iw@mail.gmail.com>
References: <CABP7Rbe29dHp3LZuWEMKJdVEkuHW2jOUK0sSyBuh6PFnq=9Z1A@mail.gmail.com> <CABkgnnUKnborWAtuxwEvWx7wR=JYdOTvWHbpPd6NJ5kXK0Sw9A@mail.gmail.com> <CABaLYCuhs5zmMHD9D7qNEhhUpvzWf1THHOjS5-vTu6soMUqALA@mail.gmail.com> <CABP7RbfreVJv=RZga+Y6iHxsOhmdheyjcvZ3dTNgW3drg4j2iw@mail.gmail.com>
Date: Wed, 19 Jun 2013 12:30:10 -0700
Message-ID: <CABaLYCsj3eWPurynfDc=gd5zm=_=vCfWM7ocKVJpHBhFPi3cNw@mail.gmail.com>
From: Mike Belshe <mike@belshe.com>
To: James M Snell <jasnell@gmail.com>
Cc: Martin Thomson <martin.thomson@gmail.com>, "ietf-http-wg@w3.org" <ietf-http-wg@w3.org>
Content-Type: multipart/alternative; boundary="90e6ba309b16a51f4f04df86dbf4"
X-Gm-Message-State: ALoCoQkbFFzVZNVCbr8aj72YTWyR1zEWLzAO6msbMCrHKmMqhIOYR2LbrhKrkslrOUeLx9xK0pEW
Received-SPF: none client-ip=209.85.214.49; envelope-from=mike@belshe.com; helo=mail-bk0-f49.google.com
X-W3C-Hub-Spam-Status: No, score=-3.3
X-W3C-Hub-Spam-Report: AWL=-2.584, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_LOW=-0.7
X-W3C-Scan-Sig: lisa.w3.org 1UpO5V-0006Uo-3J 2062e0913af91e1458a0056f89b7730f
X-Original-To: ietf-http-wg@w3.org
Subject: Re: Design: Adding ASSOCIATED_ONLY
Archived-At: <http://www.w3.org/mid/CABaLYCsj3eWPurynfDc=gd5zm=_=vCfWM7ocKVJpHBhFPi3cNw@mail.gmail.com>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/18300
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>

On Wed, Jun 19, 2013 at 11:26 AM, James M Snell <jasnell@gmail.com> wrote:

> 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.
>

The reason I don't find this interesting is because most sites will never
experience it.  You have to have multiple tabs able to share a connection
for prioritization to have any meaning.

So the use case you're referring to is:
   * user has multiple tabs open to the same site
   * the site does significant amount of background traffic which create
congestion for the foreground tab.

I think this is contrived.


>
> 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.
>

If you knew today that 99% of the time the number of push streams you'd
have to cancel was 2, you wouldn't care.
On the other hand, if the typical number of push streams was 100000, you'd
care.

My gut tells me it will be closer to 2 to 100000, but you may disagree.
 Either way, its not a problem we have, and the "inefficiency" is not that
inefficient!

You can pack about 200 stream resets into a single TCP/ethernet packet
so.... isn't that good enough?

I think multiple RST frames is just fine.



>
> 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.
>

Fair enough. Every detail we add is complexity which makes deployment and
adoption and compatibility more difficult.  If I had to prioritize over
deployability for the core features (multiplexing & the parts that have
been proved to work already) vs scalability for the
yet-never-used-in-production features, I choose the former.

Best,
Mike



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.
>>
>