Re: Header Compression

James M Snell <> Sun, 09 June 2013 20:29 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 0579721F8AF4 for <>; Sun, 9 Jun 2013 13:29:13 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -10.599
X-Spam-Status: No, score=-10.599 tagged_above=-999 required=5 tests=[BAYES_00=-2.599, RCVD_IN_DNSWL_HI=-8]
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id uQNXhjWGOAxJ for <>; Sun, 9 Jun 2013 13:29:08 -0700 (PDT)
Received: from ( []) by (Postfix) with ESMTP id 23F0821F8AF7 for <>; Sun, 9 Jun 2013 13:29:07 -0700 (PDT)
Received: from lists by with local (Exim 4.72) (envelope-from <>) id 1UlmCo-0008TH-0w for; Sun, 09 Jun 2013 20:27:14 +0000
Resent-Date: Sun, 09 Jun 2013 20:27:14 +0000
Resent-Message-Id: <>
Received: from ([]) by with esmtp (Exim 4.72) (envelope-from <>) id 1UlmCc-0008SW-B6 for; Sun, 09 Jun 2013 20:27:02 +0000
Received: from ([]) by with esmtps (TLS1.0:RSA_ARCFOUR_SHA1:16) (Exim 4.72) (envelope-from <>) id 1UlmCb-0000Vt-98 for; Sun, 09 Jun 2013 20:27:02 +0000
Received: by with SMTP id xk17so9085667obc.10 for <>; Sun, 09 Jun 2013 13:26:35 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20120113; h=mime-version:in-reply-to:references:from:date:message-id:subject:to :cc:content-type:content-transfer-encoding; bh=/JXd6+oZI8RHjM8NISZ9Q6ziym7XoGMrh2IJ8w6V1Kk=; b=NEAFYDzPdYNcnjPwHDn+GgU7vmDJRGCBbP3nN+Ng2fFq1/Vtb2kQ/1KVsEJP1u1lhq Vs+GW9fpmwMH6ExE5Zos8jt/QdmurRLXUd+P95gqNU4yFuuhaz7+rUBDf5xQaVYQdcoY guCyeK1Job6j+qqfXXiNYcJY0oi0Af/TQtUGvQLPdDG5TqOtx/aILE6VNiwQba6yNLv9 Lc74959H9EY2lPT2OtcL3kxJiemAstKHlVcFU0DVXqTcu72hWge9Fjyf3XRobFasAPBM IXGEzut9O5eQCat03AmIvsSpvdw+Dt/dU2/1kDGVEF8OJgkP1Bd3/7kxD5vq2dSj8rMa bHqA==
X-Received: by with SMTP id ed8mr5735617oeb.96.1370809595130; Sun, 09 Jun 2013 13:26:35 -0700 (PDT)
MIME-Version: 1.0
Received: by with HTTP; Sun, 9 Jun 2013 13:26:15 -0700 (PDT)
In-Reply-To: <>
References: <> <>
From: James M Snell <>
Date: Sun, 9 Jun 2013 13:26:15 -0700
Message-ID: <>
To: RUELLAN Herve <>
Cc: "" <>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable
Received-SPF: pass client-ip=;;
X-W3C-Hub-Spam-Status: No, score=-4.5
X-W3C-Hub-Spam-Report: AWL=-1.753, BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001
X-W3C-Scan-Sig: 1UlmCb-0000Vt-98 1f8d7ca6c7336dec6e71496d48c8a7e7
Subject: Re: Header Compression
Archived-At: <>
X-Mailing-List: <> archive/latest/18206
Precedence: list
List-Id: <>
List-Help: <>
List-Post: <>
List-Unsubscribe: <>

All, I've updated the Stored Header Encoding (aka bohe) draft...

The main change is to the typed value encoding (switch to a 3-bit
identifier rather than 2-bit), and a few examples.

This draft ought to be viewed as an alternative to the joint header
compression draft Herve and Roberto have proposed (still waiting on
the I-D to be published for that one tho). There are a number of
distinct differences between the approaches:

1. This approach does not have the "differential encoding". This means
that the compression ratio is slightly worse but is far less
complicated to implement.
2. This approach includes the typed value codecs. Yes, the typed
values have not been considered to be a priority thus far but they are
built in to this approach and offer significant improvements to
encoding size independent of the compression ratio.
3. This approach includes a Huffman-encoding for text headers that
supports arbitrary UTF-8 codepoints
4. This approach uses a smaller dynamic storage range than the
alternative which trades slightly less compression efficiency for
fewer (and easier) state management requirements by the endpoints.
5. Of much lower priority at this point in time, but worth noting...
As part of the typed value codecs, this naturally provides for
multiple values per header, allowing for interesting new possibilities
such as

- James

On Wed, Jun 5, 2013 at 12:31 PM, James M Snell <> wrote:
> At first read, this definitely looks like an improvement. I will be
> taking another pass over the bohe draft before next week and will be
> working on side-by-side implementations of both bohe and this updated
> proposal in time for next weeks face to face.
> On Wed, Jun 5, 2013 at 12:17 PM, RUELLAN Herve
> <> wrote:
>> Roberto and I have been discussing for some time and we have created a joint proposal for Header Compression.
>> The resulting spec is available at:
>> The main features of this proposal are:
>> - One single table for indexing headers as (name, value) pairs.
>> - HeaderDiff-based serialization (indexed header, literal header with either no indexing, addition indexing, or replacement indexing).
>> - Delta2-based diff between two successive header sets.
>> - Possibility of bounding table size.
>> - Least recently written eviction strategy when an insertion cause table size limit to be reached.
>> We will present it in details at the next interim meeting. Until then, all questions and comments are welcome.
>> Hervé.