Re: #40 - HTTP2 default value for client supported max_concurrent_streams

Amos Jeffries <squid3@treenet.co.nz> Thu, 28 February 2013 03:18 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 2143E21F8A64 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 27 Feb 2013 19:18:50 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -10.377
X-Spam-Level:
X-Spam-Status: No, score=-10.377 tagged_above=-999 required=5 tests=[AWL=0.222, BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8]
Received: from mail.ietf.org ([64.170.98.30]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id zpH2GqckvBkb for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Wed, 27 Feb 2013 19:18:49 -0800 (PST)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) by ietfa.amsl.com (Postfix) with ESMTP id DC9DF21F8A5F for <httpbisa-archive-bis2Juki@lists.ietf.org>; Wed, 27 Feb 2013 19:18:48 -0800 (PST)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1UAtzA-0001Pp-Uc for ietf-http-wg-dist@listhub.w3.org; Thu, 28 Feb 2013 03:16:44 +0000
Resent-Date: Thu, 28 Feb 2013 03:16:44 +0000
Resent-Message-Id: <E1UAtzA-0001Pp-Uc@frink.w3.org>
Received: from maggie.w3.org ([128.30.52.39]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <squid3@treenet.co.nz>) id 1UAtyz-0001P6-3H for ietf-http-wg@listhub.w3.org; Thu, 28 Feb 2013 03:16:33 +0000
Received: from ip-58-28-153-233.static-xdsl.xnet.co.nz ([58.28.153.233] helo=treenet.co.nz) by maggie.w3.org with esmtp (Exim 4.72) (envelope-from <squid3@treenet.co.nz>) id 1UAtyx-0004xB-83 for ietf-http-wg@w3.org; Thu, 28 Feb 2013 03:16:33 +0000
Received: from [192.168.1.102] (unknown [14.1.86.221]) by treenet.co.nz (Postfix) with ESMTP id D1260E6F05 for <ietf-http-wg@w3.org>; Thu, 28 Feb 2013 16:16:06 +1300 (NZDT)
Message-ID: <512ECBED.5000509@treenet.co.nz>
Date: Thu, 28 Feb 2013 16:15:57 +1300
From: Amos Jeffries <squid3@treenet.co.nz>
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20130215 Thunderbird/17.0.3
MIME-Version: 1.0
To: ietf-http-wg@w3.org
References: <B33F11E188FEAB49A7FAF38BAB08A2C001D31EF6@TK5EX14MBXW601.wingroup.windeploy.ntdev.microsoft.com> <CAP+FsNcqu-AwNnijWcPyNZFWssEqo0b+sv61E09ZO=aFyzCNFQ@mail.gmail.com> <CA566BAEAD6B3F4E8B5C5C4F61710C1163AA6440@TK5EX14MBXW602.wingroup.windeploy.ntdev.microsoft.com> <CAA4WUYiJbASP2fUGSZYzLstDM1zn6FLou9OOdRwokwm0yu+OMg@mail.gmail.com> <5128A209.7040403@treenet.co.nz> <CAA4WUYjUTkJk1EdJ_N6w_8VPCu7cSZ8aTceO7r=ojX8b5bmuXA@mail.gmail.com> <CA566BAEAD6B3F4E8B5C5C4F61710C1163AAA591@TK5EX14MBXW602.wingroup.windeploy.ntdev.microsoft.com> <CAA4WUYgo=GD1_9OV5vtpE+rRbXVJShHU_L861QxPAq1yc15cMw@mail.gmail.com> <CA566BAEAD6B3F4E8B5C5C4F61710C1163AB76D9@TK5EX14MBXW602.wingroup.windeploy.ntdev.microsoft.com> <CAA4WUYhLCmJ_2qZNUYO7W1n9tHVY18w6K=KuO1k3tDjGg62Piw@mail.gmail.com> <CA566BAEAD6B3F4E8B5C5C4F61710C1163ABFA8C@TK5EX14MBXW602.wingroup.windeploy.ntdev.microsoft.com> <CAA4WUYgOY3TMyu525mbK4YvsS+ZW7J4rUHU_4QZdPu9K5VUhXg@mail.gmail.com>
In-Reply-To: <CAA4WUYgOY3TMyu525mbK4YvsS+ZW7J4rUHU_4QZdPu9K5VUhXg@mail.gmail.com>
Content-Type: text/plain; charset="UTF-8"; format="flowed"
Content-Transfer-Encoding: 8bit
Received-SPF: pass client-ip=58.28.153.233; envelope-from=squid3@treenet.co.nz; helo=treenet.co.nz
X-W3C-Hub-Spam-Status: No, score=-4.4
X-W3C-Hub-Spam-Report: AWL=-2.450, BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001
X-W3C-Scan-Sig: maggie.w3.org 1UAtyx-0004xB-83 64bf91b024ecfc8e6ef04ec1f7c6361f
X-Original-To: ietf-http-wg@w3.org
Subject: Re: #40 - HTTP2 default value for client supported max_concurrent_streams
Archived-At: <http://www.w3.org/mid/512ECBED.5000509@treenet.co.nz>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/16920
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 28/02/2013 9:18 a.m., William Chan (陈智昌) wrote:
> Great to hear we're agreed on the current state of things.
>
> As for users changing behavior based on websites, I totally agree 
> that's a signal and agree it's neither explicit, nor very good.
>
> To be clear, the part that I said was not a signal was a protocol 
> default: "I assert that having a low/zero *default* max streams limit 
> won't help here, since defaults do *not* signal intent."
>

Indeed. Defaults signal the most liberal usage which is guarantee to 
work everywhere.

As such I am against the proposals for 100+ defaults in view that the 
*few* websites which need this for high performance are far outweighed 
by the majority of other sites and services which only use or need a 
handful (or 1!) stream for the first RTT. Forcing every miniature 
embeded server or chip hardware implementation to cope with 100+ streams 
minimum just to cater for the way a few popular sites are implemented 
today seems like arrogance. Those big players will work just as well (if 
slowly) with a few streams - they needs a high _upper_ capacity with 
fast way to signal the need, not a high _default_.

The big players of today will probably be replaced by flavour of next 
year anyway - who will be implemented differently for sure. Look to the 
10+ year goalpost.

Amos



>
> On Wed, Feb 27, 2013 at 11:59 AM, Gabriel Montenegro 
> <Gabriel.Montenegro@microsoft.com 
> <mailto:Gabriel.Montenegro@microsoft.com>> wrote:
>
>     No disagreement on the present. However, in what I quoted from
>     you, the verb is in the future tense. I interpreted this as a
>     prediction of the future. Furthermore, I interpreted what I quoted
>     as your saying that it is a non-signal when clients prefer better
>     behaved servers that don’t fire upon sight of the client. I think
>     it is a signal, admittedly not a very explicit nor particularly
>     good one.
>
>     I agree with your assessment that it would be much better to have
>     a clear signal that would allow a client to not be fed more by the
>     server, than the client explicitly requests for.
>
>     *From:*willchan@google.com <mailto:willchan@google.com>
>     [mailto:willchan@google.com <mailto:willchan@google.com>] *On
>     Behalf Of *William Chan (???)
>     *Sent:* Tuesday, 26 February, 2013 18:52
>
>
>     *To:* Gabriel Montenegro
>     *Cc:* Amos Jeffries; HTTP Working Group
>     *Subject:* Re: #40 - HTTP2 default value for client supported
>     max_concurrent_streams
>
>     Sorry, can you clarify your disagreement here? Are you disagreeing
>     that servers push content anyways today? Or are you saying that
>     users already stop browsing such websites?
>
>     My assertion was that it's simply a fact of life today that
>     servers push content. I'll go even further, websites push content
>     and users still seem to use those websites anyway. My evidence:
>     bing.com <http://bing.com> uses data URIs. Check
>     out view-source:http://www.bing.com/search?q=flowers and search
>     for 'data:image'.
>
>     On Tue, Feb 26, 2013 at 11:54 AM, Gabriel Montenegro
>     <Gabriel.Montenegro@microsoft.com
>     <mailto:Gabriel.Montenegro@microsoft.com>> wrote:
>
>         I don’t agree with this: “I think we also agree that the
>         current reality is that many servers push content anyways.” I
>         thought I had said that already: I think clients’ abandoning
>         such servers and going elsewhere is a signal, but agree that
>         an explicit one would be much better.
>
>         *From:*willchan@google.com <mailto:willchan@google.com>
>         [mailto:willchan@google.com <mailto:willchan@google.com>] *On
>         Behalf Of *William Chan (???)
>         *Sent:* Saturday, 23 February, 2013 18:24
>         *To:* Gabriel Montenegro
>         *Cc:* Amos Jeffries; HTTP Working Group
>
>
>         *Subject:* Re: #40 - HTTP2 default value for client supported
>         max_concurrent_streams
>
>         I think we agree that, in certain cases, such as mobile
>         clients worried about data usage, pushing content is bad. I
>         think we also agree that the current reality is that many
>         servers push content anyways. And you're right that the users
>         may very well decide not to use those servers if the servers
>         abuse push mechanisms. Creating better user feedback
>         mechanisms to let them know when servers are hurting them
>         would be a good thing.
>
>         I think what we disagree on is your optimism that the push
>         mechanism in HTTP/2 will make it possible for the client to
>         prevent the server from unduly pushing content by having a low
>         default max streams limit. If the default is low/zero, and
>         there's no explicit signal from the client that it doesn't
>         want extra content, then the server will try to make the best
>         choice, as it already does today, on whether or not to push
>         and how.
>
>         I think what you want is a method for the client to signal to
>         the server that it doesn't want to be pushed content,
>         regardless of the mechanism (HTTP/2 push or resource
>         inlining). I assert that having a low/zero *default* max
>         streams limit won't help here, since defaults do *not* signal
>         intent. Create an actual signal, don't take away the HTTP/2
>         push mechanism (a low/zero default is effectively equivalent
>         to taking it away, since it requires a roundtrip to re-enable
>         push, which defeats the purpose of push - saving roundtrips),
>         since servers will just inline instead.
>
>         On Sat, Feb 23, 2013 at 5:23 PM, Gabriel Montenegro
>         <Gabriel.Montenegro@microsoft.com
>         <mailto:Gabriel.Montenegro@microsoft.com>> wrote:
>
>             “where the server wants”
>
>             There’s two parties in this dance, and it takes both to
>             want to do it. If a client wants at some point to not be
>             fired upon strictly more than it requests for (perhaps
>             because it is low on batteries or is very close to its
>             monthly data allowance or because it just plain doesn’t
>             feel like it), than a server inlining a bunch of stuff is
>             like it shooting at the client. From the point of view of
>             the client, getting fired at hurts. The client can very
>             well decide never again to use such servers.
>
>             If the server does not inline but instead uses the new
>             fancy push capability, it might be friendlier fire, but
>             getting fired at even if it’s “friendly” fire hurts just
>             the same.
>
>             Catering to the server’s wishes is fine and dandy, but
>             that is only one part of the equation. I guess I’m a bit
>             more optimistic in that I hope it will become possible for
>             clients not to be fired at, instead of just changing from
>             one type of fire to another.
>
>             *From:*willchan@google.com <mailto:willchan@google.com>
>             [mailto:willchan@google.com <mailto:willchan@google.com>]
>             *On Behalf Of *William Chan (???)
>             *Sent:* Saturday, 23 February, 2013 07:09
>             *To:* Amos Jeffries
>             *Cc:* HTTP Working Group
>             *Subject:* Re: #40 - HTTP2 default value for client
>             supported max_concurrent_streams
>
>             Sorry, I did not explicitly state a conditional that I
>             thought was implicitly understood.
>
>             *In situations where the server wants to push resources*,
>             if the majority of clients disable HTTP/2 stream push,
>             then servers will simply inline resources instead.
>
>             You're right that push can always be abused. But in
>             situations that it makes sense to push, it's better to use
>             HTTP/2's push facility than to inline resources. And we
>             should ensure that the push mechanism remains viable,
>             otherwise servers will just inline in those situations.
>
>             On Sat, Feb 23, 2013 at 3:03 AM, Amos Jeffries
>             <squid3@treenet.co.nz <mailto:squid3@treenet.co.nz>> wrote:
>
>                 On 23/02/2013 10:29 a.m., William Chan (陈智昌) wrote:
>
>                     Let's be careful about this issue, because as
>                     we've noted many times before, if the server can't
>                     leverage HTTP/2 to push streams, it is likely to
>                     just inline resources directly, which is
>                     definitely worse. Fundamentally, when the client
>                     issues a request, the server can send anything it
>                     wants in the response. Defaulting to 0 would most
>                     likely incentivize servers to to just inline
>                     resources, which is probably worse than sending
>                     push streams to clients which don't want it (I
>                     assert that in the open web, this should be a
>                     minority. If not, then HTTP/2 stream pushing will
>                     have failed and people will just inline resources).
>
>                 Sorry I just parsed that as a re-wording of "if it
>                 turns out the majority of clients disable push we can
>                 consider it failed and servers will just do it via
>                 inlining anyway."
>
>                 If that is the case, why are sites not already
>                 inlining _all_ of their page content and pushing it on
>                 first contact from any client. The answer should be
>                 obvious that it is a waste of resources for both
>                 client and server to do this at all on any large
>                 scale. Although, that said I'm still fielding
>                 questions about how to pre-cache entire sites like
>                 facebook and google :-( there will always be idiots
>                 whatever gets specified.
>
>                 Amos
>
>
>                     On Fri, Feb 22, 2013 at 1:02 PM, Gabriel
>                     Montenegro <Gabriel.Montenegro@microsoft.com
>                     <mailto:Gabriel.Montenegro@microsoft.com>
>                     <mailto:Gabriel.Montenegro@microsoft.com
>                     <mailto:Gabriel.Montenegro@microsoft.com>>> wrote:
>
>                         There is harm borne by the unwilling client
>                     receiver: battery and
>                         data allowance are not free.
>
>                     *From:*Roberto Peon [mailto:grmocg@gmail.com
>                     <mailto:grmocg@gmail.com>
>                     <mailto:grmocg@gmail.com <mailto:grmocg@gmail.com>>]
>                         *Sent:* Friday, 22 February, 2013 08:24
>                         *To:* Martin Thomson
>                         *Cc:* Osama Mazahir; ietf-http-wg@w3.org
>                     <mailto:ietf-http-wg@w3.org>
>                     <mailto:ietf-http-wg@w3.org
>                     <mailto:ietf-http-wg@w3.org>> Group
>                         *Subject:* Re: #40 - HTTP2 default value for
>                     client supported
>
>
>                     max_concurrent_streams
>
>                         Yup, I understand that part. :)
>
>                         I'm doing a poor job of pointing out that any
>                     harm done by doing
>                         something like this is borne by the party
>                     doing it.
>
>                         ... so why mandate it-- if there turns out to
>                     be a positive
>                         benefit of doing such a push in the future, fine.
>
>                         I guess I'm attempting to argue that, unless
>                     we can figure out how
>                         this causes harm/is likely to be done
>                     accidentally and cause
>                         issues, then it is better to not say anything
>                     about it. Saying
>                         something about it creates a spec with is more
>                     fragile.
>
>                         -=R
>
>                         On Fri, Feb 22, 2013 at 8:19 AM, Martin Thomson
>
>                       <martin.thomson@gmail.com
>                     <mailto:martin.thomson@gmail.com>
>                     <mailto:martin.thomson@gmail.com
>                     <mailto:martin.thomson@gmail.com>>> wrote:
>
>                             On 22 February 2013 05:29, Roberto Peon
>                     <grmocg@gmail.com <mailto:grmocg@gmail.com>
>
>                             <mailto:grmocg@gmail.com
>                     <mailto:grmocg@gmail.com>>> wrote:
>                             > What is the motivation for that?
>
>                             I'm not suggesting that this is Osama's
>                     motivation, but look
>                             at the
>                     Upgrade scenario: the server is the first to send
>                     on the HTTP/2.0
>                     session with a response. There's an obvious
>                     opportunity there
>                             to push
>                             prior to the client SETTINGS frame
>                     arriving. The TLS scenario
>                             is less
>                     interesting - the client sends SETTINGS prior to
>                     any request,
>                             making
>                     defaults non-interesting.
>
>