Re: HTTP/2 Priority <draft-ietf-httpbis-http2-17>

Bob Briscoe <bob.briscoe@bt.com> Sat, 07 March 2015 15:40 UTC

Return-Path: <ietf-http-wg-request+bounce-httpbisa-archive-bis2juki=lists.ietf.org@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 (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 00B901A8AD2 for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Sat, 7 Mar 2015 07:40:56 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.911
X-Spam-Level:
X-Spam-Status: No, score=-6.911 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_HI=-5, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
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 14YOB9074q6k for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Sat, 7 Mar 2015 07:40:52 -0800 (PST)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) (using TLSv1.2 with cipher DHE-RSA-AES128-SHA (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 8CD761A8ACD for <httpbisa-archive-bis2Juki@lists.ietf.org>; Sat, 7 Mar 2015 07:40:52 -0800 (PST)
Received: from lists by frink.w3.org with local (Exim 4.80) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1YUGnM-0005VH-HI for ietf-http-wg-dist@listhub.w3.org; Sat, 07 Mar 2015 15:37:40 +0000
Resent-Date: Sat, 07 Mar 2015 15:37:40 +0000
Resent-Message-Id: <E1YUGnM-0005VH-HI@frink.w3.org>
Received: from lisa.w3.org ([128.30.52.41]) by frink.w3.org with esmtp (Exim 4.80) (envelope-from <bob.briscoe@bt.com>) id 1YUGnE-0005UR-5d for ietf-http-wg@listhub.w3.org; Sat, 07 Mar 2015 15:37:32 +0000
Received: from hubrelay-rd.bt.com ([62.239.224.99]) by lisa.w3.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from <bob.briscoe@bt.com>) id 1YUGnB-0002jH-TR for ietf-http-wg@w3.org; Sat, 07 Mar 2015 15:37:32 +0000
Received: from EVMHR72-UKRD.domain1.systemhost.net (10.36.3.110) by EVMHR67-UKRD.bt.com (10.187.101.22) with Microsoft SMTP Server (TLS) id 8.3.348.2; Sat, 7 Mar 2015 15:37:01 +0000
Received: from EPHR02-UKIP.domain1.systemhost.net (147.149.100.81) by EVMHR72-UKRD.domain1.systemhost.net (10.36.3.110) with Microsoft SMTP Server (TLS) id 8.3.348.2; Sat, 7 Mar 2015 15:37:00 +0000
Received: from bagheera.jungle.bt.co.uk (132.146.168.158) by EPHR02-UKIP.domain1.systemhost.net (147.149.100.81) with Microsoft SMTP Server id 14.3.181.6; Sat, 7 Mar 2015 15:37:00 +0000
Received: from BTP075694.jungle.bt.co.uk ([10.109.146.98]) by bagheera.jungle.bt.co.uk (8.13.5/8.12.8) with ESMTP id t27FawZw023120; Sat, 7 Mar 2015 15:36:58 GMT
Message-ID: <201503071536.t27FawZw023120@bagheera.jungle.bt.co.uk>
X-Mailer: QUALCOMM Windows Eudora Version 7.1.0.9
Date: Sat, 07 Mar 2015 15:36:57 +0000
To: Roberto Peon <grmocg@gmail.com>
From: Bob Briscoe <bob.briscoe@bt.com>
CC: mbelshe@chromium.org, Roberto Peon <fenix@google.com>, Martin Thomson <martin.thomson@gmail.com>, HTTP Working Group <ietf-http-wg@w3.org>
In-Reply-To: <CAP+FsNdQHtU0q0X3TTmzAnKHNa8YO3+reYOWJ73ptTJu13_bnQ@mail.g mail.com>
References: <201503061918.t26JIIKP015110@bagheera.jungle.bt.co.uk> <CAP+FsNdQHtU0q0X3TTmzAnKHNa8YO3+reYOWJ73ptTJu13_bnQ@mail.gmail.com>
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="=====================_15334461==.ALT"
X-Scanned-By: MIMEDefang 2.56 on 132.146.168.158
Received-SPF: pass client-ip=62.239.224.99; envelope-from=bob.briscoe@bt.com; helo=hubrelay-rd.bt.com
X-W3C-Hub-Spam-Status: No, score=-3.2
X-W3C-Hub-Spam-Report: AWL=-2.533, HTML_MESSAGE=0.001, MIME_QP_LONG_LINE=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01, URIBL_BLOCKED=0.001
X-W3C-Scan-Sig: lisa.w3.org 1YUGnB-0002jH-TR 82b318a5e2a98880e89bbbd4f03a128b
X-Original-To: ietf-http-wg@w3.org
Subject: Re: HTTP/2 Priority <draft-ietf-httpbis-http2-17>
Archived-At: <http://www.w3.org/mid/201503071536.t27FawZw023120@bagheera.jungle.bt.co.uk>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/28908
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>

Rob,

Thx - so, as I thought, it's unlikely that 
general purpose HTTP/2 code will be able to apply 
stream priorities that take account of script 
logic written for HTTP/1.x. We'll have to wait 
for developers to manually add HTTP/2 priority 
logic, or for tools to be developed to help them.

[PS. I did not intend the rest of my email to 
look like it was earlier in the thread. I only 
say this, because I notice you only replied to 
the para I had added to my own earlier email.]


Bob

At 22:22 06/03/2015, Roberto Peon wrote:
>In practice for the server-side servers/reverse 
>proxies define interfaces based on headers, 
>which indicate what the server/proxy should do at the http/2 level.
>These are either stripped, or are uninterpreted 
>and waste bytes, but do not otherwise cause harm.
>
>On the client-side, though I'd love to see a 
>generic API that allowed for using the 
>protocol's features explicitly, it isn't the 
>IETF's bag to define the interface, really.
>For web applications, browsers do it on their own.
>-=R
>
>On Fri, Mar 6, 2015 at 11:18 AM, Bob Briscoe 
><<mailto:bob.briscoe@bt.com>bob.briscoe@bt.com> wrote:
>This follows up my own post, 'cos I forgot one point...
>
>>Date: Fri, 06 Mar 2015 16:40:54 +0000
>>To: 
>><mailto:mbelshe@chromium.org>mbelshe@chromium.org, 
>><mailto:fenix@google.com>fenix@google.com, 
>><mailto:martin.thomson@gmail.com>martin.thomson@gmail.com
>>From: Bob Briscoe <<mailto:bob.briscoe@bt.com>bob.briscoe@bt.com>
>>Subject: HTTP/2 Priority <draft-ietf-httpbis-http2-17>
>>Cc: <mailto:ietf-http-wg@w3.org>ietf-http-wg@w3.org
>>
>>HTTP/2 folks,
>>
>>The comments below are largely only issues of 
>>comprehensibility or accuracy. However, the one 
>>about dependency on completion could be 
>>technically significant, depending on the answer.
>>
>>===Stream multiplexing===
>>
>><https://tools.ietf.org/html/draft-ietf-httpbis-http2-17#section-2>2. 
>>HTTP/2 Overview
>>"Â  Streams are largely independent of each other, so a blocked or
>>Â Â  stalled request or response does not prevent progress on other
>>Â Â  streams.
>>"
>>
>>That's often (or even commonly?) untrue. If a 
>>loss causes the stall, HTTP/2 suffers HOL 
>>blocking for at least a RTT, because it 
>>multiplexes all the streams through a single 
>>ordered TCP stream. HTTP/2 only solves HOL 
>>blocking, if the cause of the stall is in the 
>>application. Admittedly such stalls generally 
>>last longer than a RTT, but perhaps they are less frequent than losses.
>>
>>Whatever, this spec is not meant to be a 
>>marketing pitch for selling HTTP/2. It's meant to be objective.
>>
>>===Priority===
>
>I believe HTTP/2 was intended to be 
>retrofittable to an HTTP/1.1 implementation. I 
>think that will largely be true, except it seems 
>an API is needed to drive stream priorities from 
>script logic. But I don't see any mention of an API in the spec tho.
>
>Explanation: Presumably something has to 
>determine the dependencies between all the 
>streams and assign the priority values. This 
>might either be manual, automated, or a hybrid. 
>Assuming automated, that means something at the 
>HTTP/2 layer needs to parse all the content and 
>analyse its dependencies. A Web developer is 
>unlikely to be able to precalculate priorities, 
>except for simple static content. In general, 
>script interactions with the client will alter 
>the priorities. So APIs to set priorities will 
>have to be included in scripting languages, and 
>developers will have to write to these new APIs.
>
>So I think this means that HTTP/1.x content will 
>rarely 'just work' over HTTP/2.
>
>><https://tools.ietf.org/html/draft-ietf-httpbis-http2-17#section-5.3>5.3. 
>>Stream priority
>>
>>The directionality of Priority messages needs to be clarified.
>>
>>It seems to be implied that priority is 
>>requested by a client, then used by a server. 
>>However, a stream is bidirectional. I think the 
>>implication is that the server has no role in 
>>deciding priorities in either direction:
>>* C-S the client just sends with unilaterally 
>>decided priorities between streams, and tells 
>>the server its priorities so that the server 
>>can manipulate flow control accordingly.
>>* S-C the client tells the server the 
>>priorities to use between streams when sending, 
>>and uses its own priority decisions to manipulate flow control.
>>If these assumptions are correct, they ought to 
>>be stated. And there will be associated error 
>>conditions if a server attempts to send 
>>priority frames, or to place priority fields in headers frames.
>>
>>There is no mention of how or whether the 
>>priorities defined by the client should be 
>>propagated by a proxy into the next hop 
>>connection. Presumably a proxy can weight 
>>different clients as a whole when doing this.
>>
>><https://tools.ietf.org/html/draft-ietf-httpbis-http2-17#section-5.3>5.3. 
>>Stream priority
>>"Â  Streams can be prioritized by marking them 
>>as dependent on the completion of other streams"
>>
>>Is it correct to define 'dependency' as 
>>'dependent on /completion/ of the other stream'?
>>For instance, an image stream depends on the 
>>HTML stream that places the image. But it does 
>>not depend on the HTML continuing beyond that 
>>point to completion. Indeed, as soon as the 
>>HTML has declared the image, the image has no further dependency on it.
>>
>><https://tools.ietf.org/html/draft-ietf-httpbis-http2-17#section-5.3.1>5.3.1. 
>>Stream Dependencies
>>"Â  Inside the dependency tree, a dependent stream SHOULD only be
>>Â Â  allocated resources if all of the streams that it depends on (the
>>Â Â  chain of parent streams up to 0x0) are either closed, or it is not
>>Â Â  possible to make progress on them.
>>"
>>If not MUST, what case warrants the SHOULD?
>>
>>And my previous question about dependency on completion applies here too.
>>
>><https://tools.ietf.org/html/draft-ietf-httpbis-http2-17#section-5.3.1>5.3.1. 
>>Stream 
>><https://tools.ietf.org/html/draft-ietf-httpbis-http2-17#section-5.3.1>Dependencies
>>"  A stream cannot depend on itself.  An endpoint MUST treat this as a
>>Â Â  stream error (Section 5.4.2) of type PROTOCOL_ERROR.
>>"
>>Should this not be stated to more clearly 
>>include the case where a stream does not 
>>directly depend on itself, but it does eventually via a dependency loop?
>>
>>Also, I think the pair of sentences need to be 
>>rephrased so that (paraphrasing):
>>#1 says "an endpoint MUST NOT set a dependency loop"
>>#2 says "an endpoint receiving a message that 
>>sets a dependency loop, MUST treat it as a PROTOCOL_ERROR."
>>
>><https://tools.ietf.org/html/draft-ietf-httpbis-http2-17#section-5.3.4>5.3.4. 
>>Prioritization State Management
>>
>>The first 3 paras describe a non-problem as if 
>>it's a problem: loss of state if a node is 
>>removed from the dependency tree. If you want C 
>>to get half the resources if D blocks, then 
>>surely you just don't remove A from the tree 
>>(even if A is idle or closed, it can still be assigned priority).
>>
>> ?             ?
>>/ \Â Â Â Â Â Â Â Â Â Â  /|\
>>AÂ  BÂ Â Â  ==>Â  / | \
>>|\ 1/2Â Â Â Â Â  CÂ  DÂ  B
>>| \Â Â Â Â Â Â  1/4 1/4 1/2
>>|Â  \
>>CÂ Â  D
>>1/4 1/4
>>
>>"For equal starting weights, C receives one 
>>third, rather than one half, of available resources."
>>I don't think there's any scenario where the 
>>numbers in this example could be correct. It should say either:
>>"For equal starting weights, C receives one 
>>third, rather than one two thirds, of available resources."
>>or
>>"For equal starting weights, C receives one 
>>quarter, rather than one half, of available resources."
>>
>>HTH
>>
>>
>>Bob
>>
>>________________________________________________________________
>>Bob Briscoe,                  
>>Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  BT
>
>________________________________________________________________
>Bob Briscoe,                  
>Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â  BT
>

________________________________________________________________
Bob Briscoe,                                                  BT