W3C home > Mailing lists > Public > ietf-http-wg@w3.org > April to June 2014

Re: HEADERS and flow control

From: Greg Wilkins <gregw@intalio.com>
Date: Mon, 19 May 2014 16:50:05 +0200
Message-ID: <CAH_y2NFe2yYFyHVFJreM9Be0o74mATqKg3b+maSSebtREFe0_Q@mail.gmail.com>
To: Mark Nottingham <mnot@mnot.net>
Cc: Roberto Peon <grmocg@gmail.com>, HTTP Working Group <ietf-http-wg@w3.org>
If the protocol does not apply flow controlled to headers, then somebody
will eventually abuse this as a way to get around flow control and start
sending bulk data as headers rather than data.   Once a few start doing it,
then it will become main stream.

This is exactly what happened with browsers switching to using 6
connections instead of 2, because some started to do it to improve their
speed.  It started with individuals changing their own browsers, but then
eventually one browser switched and everybody had to follow to stay
competitive no matter how badly it abused the protocol!

Other than the meta data defined by HTTP, all other headers are essentially
application data and must be flow controlled.

The deadlock scenario described is only a problem if the initial compressed
headers are larger than the initial flow control window, which at 64kB is
highly unlikely with current usage.  However, if we don't put flow control
on headers, then I think we will very soon start seeing >64kB headers!

I definitely support putting flow control on all non control frames within
a stream.   If this means we have to do something a bit ugly to avoid the
deadlock, then I think that is far better than unconstrained meta-data.

On 19 May 2014 09:41, Mark Nottingham <mnot@mnot.net> wrote:

> Roberto,
> I’ve opened <https://github.com/http2/http2-spec/issues/480> to track
> this.
> We’ll discuss this in NYC (although please do continue discussing on-list).
> Be warned that a large amount of the discussion around this will be “Is
> this worth holding HTTP/2 for another implementation draft / implementation
> / interop cycle?”
> Cheers,
> On 10 May 2014, at 4:42 am, Roberto Peon <grmocg@gmail.com> wrote:
> > Currently HEADERS are not subject to flow control. There are a couple of
> reasons for this, but the biggest one is that this helps to prevent a
> deadlock which can occur when a server is waiting for a particular request
> before it can make progress on other responses, but flow control is
> asserted.
> >
> > One of the potential users of HTTP2 whom I've spoken with wished
> strongly that HEADERS after the first complete HEADERS block on a stream
> would be subject to flow control. AFAICT, this would work better than what
> we have today, without potentially triggering the deadlock scenario for
> many non-browser usecases.
> >
> > Thoughts?
> >
> > -=R
> --
> Mark Nottingham   http://www.mnot.net/

Greg Wilkins <gregw@intalio.com>
http://eclipse.org/jetty HTTP, SPDY, Websocket server and client that scales
http://www.webtide.com  advice and support for jetty and cometd.
Received on Monday, 19 May 2014 14:50:33 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 17:14:30 UTC