W3C home > Mailing lists > Public > ietf-http-wg@w3.org > January to March 2019

Re: HTTP/3 Prioritization Proposal

From: Subodh Iyengar <subodh@fb.com>
Date: Tue, 29 Jan 2019 05:26:09 +0000
To: Amos Jeffries <squid3@treenet.co.nz>, "ietf-http-wg@w3.org" <ietf-http-wg@w3.org>
Message-ID: <MWHPR15MB182119873A003F18D7827107B6970@MWHPR15MB1821.namprd15.prod.outlook.com>
I personally find the concurrency levels quite a nice simplification, and you should definitely write a draft.
For non browser, cases we've been thinking of supplying deadlines to the peer to guide things like transmission/re-transmission policies. It might be interesting (while still keeping it simple) to consider deadlines within a concurrency group.
In any case, even just being able to negotiate a priority scheme will mean that we can start of with something simple and then add on.

Subodh
________________________________
From: Amos Jeffries <squid3@treenet.co.nz>
Sent: Monday, January 28, 2019 6:16 PM
To: ietf-http-wg@w3.org
Subject: Re: HTTP/3 Prioritization Proposal

On 29/01/19 1:33 pm, Mike Bishop wrote:
> I think youíre both right, actually.  Weíve had discussions in H3 about
> whether the built-in PRIORITY scheme should be pulled out to an
> extension, and one of the reasons not to was that we didnít have a
> competing priority scheme specified.  If the proposal is an extension,
> whether to H2 /or /H3, the HTTPbis WG owns those per our recharter, no?
> So it belongs here, but itís relevant to the H3 discussion and H3 is a
> reasonable target.


IMO, if there are multiple priority schemes competing then there has to
be some SETTINGS (or equivalent) negotiation between the endpoints about
which one they are going to use.

This new proposal uses the same number of bits as the existing HTTP/2
scheme, so could easily re-use the same bits - the endpoints just need
to negotiate which interpretation those bits are given.


That said, looking through the proposal the very first thing that stands
out to me is that all the problems cited are somewhat artificial, or at
least indirect. They are a natural result of the particular Browsers
choice of implementation rather than problems with the priority design
itself:

 * Chrome - does not implement concurrency in its tree -> problems with
items that benefit from concurrency .

 * Firefox - aggregate only by type, forced concurrency -> problems with
items that should be high priority but have type with low-priority
classification, and with items that need sequential delivery.

 * Safari - does not implement -> latency problems with objects that
could benefit from priority markings.

The rational conclusion then is that better Browser implementations
would solve these particular annoyances. So what problems exactly are
preventing that better implementation happening?

Any replacement prioritization would likely have to face and resolve the
same issues. Along with the issues which caused the HTTP/2 priority
complexity -  that was a very simple design to begin with too.




As a side note this statement worries me:

"
The dependency tree management requires the tree state to be
synchronized on both ends of the connection.
"

IIRC one of the main benefits of the priority scheme we have is
precisely the opposite to that. Priority itself being a guideline more
than a hard requirement and sync between the endpoints after the initial
request weight assignment by HEADERS is an optional bonus for better UI
performance.

The Browse endpoint and the Origin endpoint(s) *will* have different
trees. If only because the response content comes from multiple
locations (middleware cache vs origin cache vs origin as-needed
generator) with vastly different frame delivery speeds.


Amos
Received on Tuesday, 29 January 2019 08:09:24 UTC

This archive was generated by hypermail 2.3.1 : Tuesday, 29 January 2019 08:09:25 UTC