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

RE: Why "MUST" encoder emit Context Update

From: RUELLAN Herve <Herve.Ruellan@crf.canon.fr>
Date: Thu, 31 Jul 2014 12:18:41 +0000
To: "K.Morgan@iaea.org" <K.Morgan@iaea.org>, "OSAMAM@microsoft.com" <OSAMAM@microsoft.com>, "ietf-http-wg@w3.org" <ietf-http-wg@w3.org>
Message-ID: <6C71876BDCCD01488E70A2399529D5E532E57382@ADELE.crf.canon.fr>
The initial intention when the Context Update was introduced was twofold:
- Enable the encoder to use a smaller header table size than what was allowed by the decoder.
- Transmit the header table size change at the HPACK level to better separate HPACK from the rest of the framing layer (even if the separation can't be completely done).

After exchanging the positions of the static and header table, the encoder can decide to use only a part of the size allowed by the decoder without any impact on either the encoding or decoding side. Transmitting the effectively used size just helps the decoder reduce its memory commitment for the header table.

I agree than the context update in HPACK is not always necessary. It's probably simpler to generate it for each received SETTINGS_HEADER_TABLE_SIZE change.
However, it's not fully coherent with allowing to fold several changes received between the sending of two header blocks.

This may be improved, but I'm not sure the improvement in term of bytes not transmitted is worth it.

Hervé.

> -----Original Message-----
> From: K.Morgan@iaea.org [mailto:K.Morgan@iaea.org]
> Sent: jeudi 31 juillet 2014 13:34
> To: OSAMAM@microsoft.com; ietf-http-wg@w3.org
> Subject: RE: Why "MUST" encoder emit Context Update
> 
> On Thursday,31 July 2014 01:42, OSAMAM@microsoft.com wrote:
> >    After applying an updated value of the HTTP/2 setting
> >    SETTINGS_HEADER_TABLE_SIZE that changes the maximum size of the
> >    header table used by the encoder, the encoder MUST signal this change
> >    via an encoding context update (see Section 7.3). ...
> >
> > Why is it a 'MUST' for the encoder to emit a Context Update opcode?  ...
> 
> I agree this is confusing.
> 
> For example, suppose the encoder is only using 512 for the table size out of the
> 4096 default value for SETTINGS_HEADER_TABLE_SIZE.
> 
> Now suppose the decoder lowers SETTINGS_HEADER_TABLE_SIZE to 1024, why
> 'MUST' the encoder emit a Context Update opcode since the new setting
> doesn't force the encoder to lower the table size and therefore should have no
> effect?
> 
> 
> 
> 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 Thursday, 31 July 2014 12:19:25 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 30 March 2016 09:57:09 UTC