Re: Straw Poll: Restore Header Table and Static Table Indices

Willy Tarreau <w@1wt.eu> Tue, 21 October 2014 14:14 UTC

Return-Path: <ietf-http-wg-request@listhub.w3.org>
X-Original-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Delivered-To: ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 0CBC51A6F7F for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Tue, 21 Oct 2014 07:14:24 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -6.912
X-Spam-Level:
X-Spam-Status: No, score=-6.912 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id uZZSXZLVperP for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Tue, 21 Oct 2014 07:14:15 -0700 (PDT)
Received: from frink.w3.org (frink.w3.org [128.30.52.56]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id DF8A11A6F5A for <httpbisa-archive-bis2Juki@lists.ietf.org>; Tue, 21 Oct 2014 07:14:05 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1Xga92-000532-H2 for ietf-http-wg-dist@listhub.w3.org; Tue, 21 Oct 2014 14:10:40 +0000
Resent-Date: Tue, 21 Oct 2014 14:10:40 +0000
Resent-Message-Id: <E1Xga92-000532-H2@frink.w3.org>
Received: from maggie.w3.org ([128.30.52.39]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <w@1wt.eu>) id 1Xga8v-00052J-7K for ietf-http-wg@listhub.w3.org; Tue, 21 Oct 2014 14:10:33 +0000
Received: from 1wt.eu ([62.212.114.60]) by maggie.w3.org with esmtp (Exim 4.72) (envelope-from <w@1wt.eu>) id 1Xga8r-0003mg-9u for ietf-http-wg@w3.org; Tue, 21 Oct 2014 14:10:33 +0000
Received: (from willy@localhost) by mail.home.local (8.14.4/8.14.4/Submit) id s9LE8hY8032539; Tue, 21 Oct 2014 16:08:43 +0200
Date: Tue, 21 Oct 2014 16:08:43 +0200
From: Willy Tarreau <w@1wt.eu>
To: Greg Wilkins <gregw@intalio.com>
Cc: Roberto Peon <grmocg@gmail.com>, Mark Nottingham <mnot@mnot.net>, RUELLAN Herve <Herve.Ruellan@crf.canon.fr>, Amos Jeffries <squid3@treenet.co.nz>, "ietf-http-wg@w3.org" <ietf-http-wg@w3.org>
Message-ID: <20141021140843.GI30397@1wt.eu>
References: <20141015201540.GB980@1wt.eu> <6C71876BDCCD01488E70A2399529D5E53BF5F842@ADELE.crf.canon.fr> <20141016091626.GC3079@1wt.eu> <34008D72-5800-412E-A276-81C6C7BFA9E2@mnot.net> <20141020165353.GA25743@1wt.eu> <8F120E2F-704E-44CB-ACF2-C743B870B2B6@mnot.net> <CAP+FsNdOHVj=YTE35Vj7mbED0OKghd-mpnFZSMcZNBM3JybJDg@mail.gmail.com> <20141021092505.GA30397@1wt.eu> <20141021094032.GB30397@1wt.eu> <CAH_y2NFmmky-jTrjnAEDN751WGUJqX80mufJaJ2YtvQ-05JoGg@mail.gmail.com>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <CAH_y2NFmmky-jTrjnAEDN751WGUJqX80mufJaJ2YtvQ-05JoGg@mail.gmail.com>
User-Agent: Mutt/1.4.2.3i
Received-SPF: pass client-ip=62.212.114.60; envelope-from=w@1wt.eu; helo=1wt.eu
X-W3C-Hub-Spam-Status: No, score=-3.8
X-W3C-Hub-Spam-Report: AWL=-2.332, RP_MATCHES_RCVD=-1.43, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001
X-W3C-Scan-Sig: maggie.w3.org 1Xga8r-0003mg-9u 24c6362796eec1469d767707fef53f1c
X-Original-To: ietf-http-wg@w3.org
Subject: Re: Straw Poll: Restore Header Table and Static Table Indices
Archived-At: <http://www.w3.org/mid/20141021140843.GI30397@1wt.eu>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/27663
X-Loop: ietf-http-wg@w3.org
Resent-Sender: ietf-http-wg-request@w3.org
Precedence: list
List-Id: <ietf-http-wg.w3.org>
List-Help: <http://www.w3.org/Mail/>
List-Post: <mailto:ietf-http-wg@w3.org>
List-Unsubscribe: <mailto:ietf-http-wg-request@w3.org?subject=unsubscribe>

Hi Greg,

On Wed, Oct 22, 2014 at 12:36:30AM +1100, Greg Wilkins wrote:
> Willy,
> 
> I actually think that literal without/never indexed should be favoured over
> literal indexed or at least on event footing, because by nature the literal
> indexed headers are sent only once and then used by index, while the
> literal without/never indexed headers are sent literally every time they
> are used.

OK, thanks for explaining.

> Thus I would think something like:
> 
> Indexed Header:
>    +---+---+---+---+---+---+---+---+
>    | 1 | D |    Index (6+)         |
>    +---+---------------------------+

Here we still have the 20% waste I wanted to address : ~48/256 values
will never be sent (those for static entries >16). That's where I
wanted to recover that many values (5.5 bits) which are clearly
missing from other encodings.

> Literal Never Indexed:
>    +---+---+---+---+---+---+---+---+
>    | 0 | 0 | 0 | D | Index (4+)    |
>    +---+---------------------------+
> 
> Literal Not Indexed:
>    +---+---+---+---+---+---+---+---+
>    | 0 | 0 | 1 | D | Index (4+)    |
>    +---+---------------------------+
> 
> Literal Indexed:
>    +---+---+---+---+---+---+---+---+
>    | 0 | 1 | 0 | D | Index (4+)    |
>    +---+---------------------------+

Two of them can then be increased by 1..1.5 bit by recovering
the unused encoding above.

> Max Dynamic Table size change:
>    +---+---+---+---+---+---+---+---+
>    | 0 | 1 | 1 |  Index (5+)       |
>    +---+---------------------------+

And this one looks like a huge waste to me, it only happens
once in a long while and kills 32 possible values that we'd
better use for each individual header. In practice, 80/256
code points are unusable for each header, that's roughly 33%
wasted encoding space :-/.

> I believe that most 62 static slots can easily be filled with values that
> will be used.

That's where I'm really doubting to be honnest.

> I'll come up with a suggestion for this tomorrow.

OK great!

Cheers,
Willy