Header compression: header set diff

A difference between Delta and HeaderDiff is the choice of the initial state for a new set of headers. Delta starts from the previous set of headers (or from one of the previous sets, as it can support remembering several sets of headers) describing the differences with the new set. HeaderDiff starts from a blank state, describing the whole new set.

To better understand the impact of this choice of persisting the header set, we tested it inside HeaderDiff and saw a slight improvement of compaction for requests but also a slight(er) decrease of compaction for responses.

Implementing the persistence of the header set has a few subtleties: a literal header that is not added to the buffer must be added to the current set of headers, but must not be kept in the persisted set (which will be used as an initial state for the next set of headers).
But the main difficulty comes from the interaction with the management of the buffer: for example, an entry should not be removed from the buffer if it's in the persisted set of header.

We are wondering if the complexity of the implementation of header set persistence is worth the benefit. We think that most of the compaction improvements could be obtained by allowing to encode a group of indexed headers in one operation (this is what the *trang opcodes of Delta does).

Do you have any insight on this feature, or any data helping to understand its effects?

Hervé.

Received on Thursday, 21 March 2013 12:51:32 UTC