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

Re: Header Size? Was: Our Schedule

From: Roberto Peon <grmocg@gmail.com>
Date: Fri, 30 May 2014 11:13:28 -0700
Message-ID: <CAP+FsNcZ9za-u9A8dpatsL+WUzxg0=CoBJNh5yjK=T=PB4KkWw@mail.gmail.com>
To: Greg Wilkins <gregw@intalio.com>
Cc: Matthew Kerwin <matthew@kerwin.net.au>, Martin J. Dürst <duerst@it.aoyama.ac.jp>, David Krauss <potswa@gmail.com>, Martin Thomson <martin.thomson@gmail.com>, "Richard Wheeldon (rwheeldo)" <rwheeldo@cisco.com>, HTTP Working Group <ietf-http-wg@w3.org>
 The system properties of having order dependency (with shared-state on
stream 0) would still exist, since the receiver couldn't control when the
sender actually emitted things on stream zero.
This would also work very poorly with proxies which have multiple clients
and fewer servers-- these are muxing between clients. User-agent, etc. is
changing all the time in such circumstances.

Incidentally, HPACK allows for non-HOL-blocking compression, with the
addition of a sequence number per frame. This isn't needed right now given
that the APIs we have to TCP always deliver bytes in sequence, but if we
had APIs which delivered the data out-of-order as it was received (e.g.
TCP-minion), one could take advantage of it.




On Fri, May 30, 2014 at 1:22 AM, Greg Wilkins <gregw@intalio.com> wrote:

> Matthew,
>
> firstly I'm sure there are forms of header compression that can have a
> shared state table that are not so highly order dependent.  The problem
> with hpack is that every field in every frame of stream can mutate the
> shared state table.  This gives us a really hard serialisation problem, so
> that setting the table size to zero does not help, as you still have to
> prevent interleaving so you can decode in order and watch for an increase
> in the table size.
>
> I think we could get a lot of benefit from a compression scheme that uses
> header frames transmitted on channel 0 to set the shared state.   All the
> user-agent guff could then be sent once and only once and all the stream
> header decoding would then be read only (and thus could happen in any
> order).    If you wanted to put cookies into the shared table, then there
> are still some ordering issues, but not as hard as the current ones and
> with lots of potential solutions (eg table versions or multiple table ids
> etc.).
>
> To Martins idea,  that would help in some respects if the subsequent
> frames are excluded from hpack.  This would let us allow interleaving.
> However, it does not prevent the server from needing to hold onto large
> header tables during request handling.  So we still should include headers
> in the flow control, so the receiver can say "stop already!" when large
> headers are being sent.
>
> cheers
>
>
>
> On 30 May 2014 09:34, Matthew Kerwin <matthew@kerwin.net.au> wrote:
>
>> On 30 May 2014 16:51, "Martin J. Dürst" <duerst@it.aoyama.ac.jp> wrote:
>>
>>> This is just a thought:
>>>
>>> Would it be possible to allow arbitrarily large amounts of header data
>>> (either via continuations or via multiple header frames), but to limit
>>> compression to a single header frame.
>>>
>>> While in general, there is a stronger need to compress larger stuff,
>>> such a solution could come with various benefits:
>>> - Simplified compression (less/no state)
>>> - Keep the main benefit (quick start)
>>> - Penalty against large amounts of header data
>>>   (because that's not the way to do things anyway)
>>>
>>> Regards,   Martin.
>>>
>>>
>> If you send SETTINGS_HEADER_TABLE_SIZE=0 and a HEADERS with [0x30,0x20]
>> in the first block fragment you effectively disable the context, and are
>> left with only Huffman coding (which has a per-frame context).
>>
>> As Roberto reminded me yesterday, the thing about a header block is that
>> when it ends, you get everything else in the reference set (carried over
>> from the previous header block). The biggest gain in HPACK compression
>> comes from not actually sending identical headers again and again, which
>> means not only sharing context between multiple frames, but between frames
>> from multiple streams. I don't know if, in practice, any per-frame
>> compression scheme would come close to HPACK's connection-based delta
>> compression, and that would be a big hit to the protocol's appeal.
>>
>>
>> --
>>   Matthew Kerwin
>>   http://matthew.kerwin.net.au/
>>
>
>
>
> --
> 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 Friday, 30 May 2014 18:13:56 UTC

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