Re: Large Frames, Continuations, Flow Control, and changing HPACK

Would getting rid of the reference set also allow us to move the static
table back to a fixed position?
That also seemed like it would have value for some implementations and
based on the previous discussion but was problematic as long as we had the
reference set, as I remember it.


On Tue, Jul 8, 2014 at 7:34 PM, Roberto Peon <> wrote:

> There are two HOL blocking issues w.r.t. headers:
>   1) HOL blocking because you can't send data frames while headers are
> being transmitted.
>   2) HOL blocking because you can't create other new streams while headers
> are being transmitted.
> Removing the reference set doesn't change either of these.
> #1 occurs because of an artificial restriction added to the spec for the
> sake of implementation simplicity.
> We could remove tomorrow by allowing data frames to interleave with
> headers/continuation.
> #2 is the big(ger) issue.
> The easiest solution to #2 is to send small headers, which is what
> commonly takes place today.
> Assuming that large headers are being sent, however,
> Even without a reference set, anything that modifies or references state
> places an ordering requirement on header data.
> Getting rid of the reference set reduces HPACK code complexity for
> decoders and encoders slightly, and that is about it as far as properties
> of that change.
> Making emission of the reference set explicit (instead implicit at the end
> of the header block) helps to reduce encoder complexity somewhat, but the
> opcode-frame-boundary-crossing issues still exist.
> Jeff's proposal of separating SYN_STREAM is meant to help address #2.
> I don't know if that would work, however, since knowing what the stream is
> about or addressed to requires the headers, which in turn means that stream
> creation is always tied to headers anyway... and you end up HOL blocking on
> 'em at the receiver, though not necessarily on the wire.
> -=R
> On Tue, Jul 8, 2014 at 2:28 PM, <> wrote:
>> On 08 Jul 2014, at 19:05, "" <>
>> wrote:
>> >
>> > To be clear, the proposal is:
>> >
>> > 1) Remove the reference set from HPACK (use "Linear-H")
>> > 2) Increase the frame size to 16-bits
>> > 3) Allow interleaving of HEADERS frames
>> > 4) Remove the "\0" separator hack.
>> >
>> > Coupling this with my earlier proposal to add a "SYN_STREAM" header
>> > would also allow us to:
>> >
>> > 5) Remove CONTINUATION frames entirely
>> > 6) Move END_* flags to the last HEADERS frame
>> > 7) Flow control HEADERS frames
>> >
>> Hi Jeff-
>> Can you please explain why the SYN_STREAM frame is necessary? It seems to
>> me that just removing the reference set would get rid of the need for
>> CONTINUATION frames since there would no longer be a requirement to process
>> all headers together as one big "jumbo block", just a requirement to
>> process frames in order.
>> To be short, it seems to me that getting rid of the reference set also
>> solves 5, 6, & 7??
>> -Keith
>> This email message is intended only for the use of the named recipient.
>> Information contained in this email message and its attachments may be
>> privileged, confidential and protected from disclosure. If you are not the
>> intended recipient, please do not read, copy, use or disclose this
>> communication to others. Also please notify the sender by replying to this
>> message and then delete it from your system.

Received on Wednesday, 9 July 2014 01:11:52 UTC