Subject: Enable weight of 0

From: RUELLAN Herve <[email-masked]>
Date: Tue, 1 Apr 2014 17:10:16 +0000

I think we should change the range of weights for a group from 1-256 to 0-255.

The meaning of the weight 0 is to indicate that no resource should be allocated to the priority group, unless there are available resources that can't be used by any priority group with a weight greater than 0.

This new weight would help better handling several scenarios.

First, the downloads from a website could be put in a group with a weight of 0: they would not impede the user's navigation inside the website, taking advantage of the network idle time when the user is reading a page.
This scenario is of importance for Canon, as we would like to be able to download in the background heavy media from a camera, while still retaining the ability to control it in real time. This means that we want to have ways of ensuring that the data used for controlling the camera (which can be somewhat heavy when it includes real-time preview) can take prevalence over the other transfer without delay.
This scenario could be handled by using flow control, but this result in some added latency: at least 1 RTT would elapse between a server finishing to send the data corresponding to a webpage and the server receiving the window update unblocking the flow control for the downloads. The same holds when starting to transfer a webpage content. In addition, this would create interdependencies between priorities and flow control.

Another scenario is to temporary suspend some groups to allow a more urgent group to take all the bandwidth. This can be useful when opening several webpages at once: only the foreground one has a weight greater than 0, allowing it to be downloaded quickly.

I understand that including the value of 0 for the weight somewhat increases implementation complexity, but I think the benefits are well worth it.

Cheers,

Hervé.

---

From: David Krauss <[email-masked]>
Date: Wed, 2 Apr 2014 03:19:04 +0800

> First, the downloads from a website could be put in a group with a weight of 0: they would not impede the user's navigation inside the website, taking advantage of the network idle time when the us…

Would it not be a compliant extension for the server to apply such semantics to a weight of 1? The precision of resource allocation is an implementation detail.

> This scenario could be handled by using flow control, but this result in some added latency: at least 1 RTT would elapse between a server finishing to send the data corresponding to a webpage and t…

Yes, I agree completely. It’s a slow way to communicate what should be a timely message. Proxies and balancers need to try to tolerate what would otherwise be misbehavior.

Also, if semantically meaningful underflow is eliminated, the flow control scheme overhead may be cut in half and its complexity reduced accordingly.

---

From: Mark Nottingham <[email-masked]>
Date: Wed, 2 Apr 2014 13:56:34 +1100

Hi Herve,

IIRC we discussed this as part of #270 in London:
  <https://github.com/http2/wg_materials/blob/master/ietf89/minutes.md#-270-priority-leveling>

... and the feeling in the room was that we didn't want to do this.

Does Herve's use case below change people's minds? If not, how do people think he should address it?

Regards,

--
Mark Nottingham   http://www.mnot.net/

---

From: RUELLAN Herve <[email-masked]>
Date: Wed, 2 Apr 2014 08:35:56 +0000

Hi Mark,

I agree that the feeling in the room was negative, however part of it was due to the fact that the proposal relied on a choice what hadn't made yet, part of it was due to the proposal itself.

We've made the choice and I tried to clarify my proposal, so I'd like to see what's the group feeling now.

Hervé.

> -----Original Message-----
> From: Mark Nottingham [mailto:[email-masked]]
> Sent: mercredi 2 avril 2014 04:57
> To: RUELLAN Herve
> Cc: [email-masked]
> Subject: #436: Enable weight of 0
> 
> Hi Herve,
> 
> > The meaning of the weight 0 is to indicate that no resource should be
> allocated to the priority group, unless there are available resources that can't
> be used by any priority group with a weight greater than 0.
> >
> > First, the downloads from a website could be put in a group with a weight of
> 0: they would not impede the user's navigation inside the website, taking
> advantage of the network idle time when the user is reading a page.
> > This scenario is of importance for Canon, as we would like to be able to
> download in the background heavy media from a camera, while still retaining
> the ability to control it in real time. This means that we want to have ways of
> ensuring that the data used for controlling the camera (which can be somewhat
> heavy when it includes real-time preview) can take prevalence over the other
> transfer without delay.
> > This scenario could be handled by using flow control, but this result in some
> added latency: at least 1 RTT would elapse between a server finishing to send
> the data corresponding to a webpage and the server receiving the window
> update unblocking the flow control for the downloads. The same holds when
> starting to transfer a webpage content. In addition, this would create
> interdependencies between priorities and flow control.
> >
> > Another scenario is to temporary suspend some groups to allow a more
> urgent group to take all the bandwidth. This can be useful when opening
> several webpages at once: only the foreground one has a weight greater than
> 0, allowing it to be downloaded quickly.
> >
> > I understand that including the value of 0 for the weight somewhat increases
> implementation complexity, but I think the benefits are well worth it.
> >
> > Cheers,
> >
> > Hervé.
> >
> 
> --

---

From: RUELLAN Herve <[email-masked]>
Date: Wed, 2 Apr 2014 08:40:31 +0000

> From: David Krauss [mailto:[email-masked]]
> Sent: mardi 1 avril 2014 21:19
> To: HTTP Working Group
> Subject: Re: Enable weight of 0
> 
> 
> On 2014-04-02, at 1:10 AM, RUELLAN Herve <[email-masked]>
> wrote:
> 
> Would it not be a compliant extension for the server to apply such semantics to
> a weight of 1? The precision of resource allocation is an implementation detail.

I think it would be compliant for the server (or mostly compliant), however, the client wouldn't be able to know in advance what the server behavior would be. With a weight of 0, a client could expect any server to follow its hints and provide the expected behavior.

> Yes, I agree completely. It's a slow way to communicate what should be a
> timely message. Proxies and balancers need to try to tolerate what would
> otherwise be misbehavior.
> 
> Also, if semantically meaningful underflow is eliminated, the flow control
> scheme overhead may be cut in half and its complexity reduced accordingly.
>