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

Willy Tarreau <w@1wt.eu> Mon, 13 October 2014 01:27 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 988C91A914B for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Sun, 12 Oct 2014 18:27:14 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -7.688
X-Spam-Level:
X-Spam-Status: No, score=-7.688 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5, RP_MATCHES_RCVD=-0.786, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] 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 C5bpbhQ6xsgN for <ietfarch-httpbisa-archive-bis2Juki@ietfa.amsl.com>; Sun, 12 Oct 2014 18:27:12 -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 6B36B1A9147 for <httpbisa-archive-bis2Juki@lists.ietf.org>; Sun, 12 Oct 2014 18:27:12 -0700 (PDT)
Received: from lists by frink.w3.org with local (Exim 4.72) (envelope-from <ietf-http-wg-request@listhub.w3.org>) id 1XdUMk-0000yB-Ox for ietf-http-wg-dist@listhub.w3.org; Mon, 13 Oct 2014 01:24:02 +0000
Resent-Date: Mon, 13 Oct 2014 01:24:02 +0000
Resent-Message-Id: <E1XdUMk-0000yB-Ox@frink.w3.org>
Received: from lisa.w3.org ([128.30.52.41]) by frink.w3.org with esmtp (Exim 4.72) (envelope-from <w@1wt.eu>) id 1XdUMd-0000xS-O9 for ietf-http-wg@listhub.w3.org; Mon, 13 Oct 2014 01:23:55 +0000
Received: from 1wt.eu ([62.212.114.60]) by lisa.w3.org with esmtp (Exim 4.72) (envelope-from <w@1wt.eu>) id 1XdUMc-0002tO-HO for ietf-http-wg@w3.org; Mon, 13 Oct 2014 01:23:55 +0000
Received: (from willy@localhost) by mail.home.local (8.14.4/8.14.4/Submit) id s9D1NQaQ015054; Mon, 13 Oct 2014 03:23:26 +0200
Date: Mon, 13 Oct 2014 03:23:26 +0200
From: Willy Tarreau <w@1wt.eu>
To: Mark Nottingham <mnot@mnot.net>
Cc: Roberto Peon <grmocg@gmail.com>, HTTP Working Group <ietf-http-wg@w3.org>, Jeff Pinner <jpinner@twitter.com>
Message-ID: <20141013012326.GD13217@1wt.eu>
References: <CA+pLO_jkN67HLT7oup+FcYVY+RZ7ckhpY2gGy=TAsr2UUMnVVA@mail.gmail.com> <987FB86A-EF8B-4CD1-A9A7-52A9163E8CB3@mnot.net> <EBB30C88-7EBD-400F-9591-B646B4D3687B@mnot.net> <CAP+FsNeJU6aciA+UV3sQ318e4=fXxv9zZbsDZ1jXmYstz6XwaQ@mail.gmail.com> <E465C1C7-20DF-4F78-9936-9C914042920A@mnot.net>
Mime-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Disposition: inline
In-Reply-To: <E465C1C7-20DF-4F78-9936-9C914042920A@mnot.net>
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=-4.0
X-W3C-Hub-Spam-Report: AWL=-2.103, BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_RP_MATCHES_RCVD=-0.01
X-W3C-Scan-Sig: lisa.w3.org 1XdUMc-0002tO-HO 4edfc43fec7af710e5a7a50f0227cc27
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/20141013012326.GD13217@1wt.eu>
Resent-From: ietf-http-wg@w3.org
X-Mailing-List: <ietf-http-wg@w3.org> archive/latest/27589
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 Mark,

On Mon, Oct 13, 2014 at 11:52:43AM +1100, Mark Nottingham wrote:
> Roberto,
> 
> So far, we've had a large number of people -1 any change here. Summarising:
> 
> * It's been asserted that the current approach is "much simpler" to implement
> * The difference is "marginal" 
> * There's concern about "churn" in the spec and implementations
> * There's concern that the proposals are untested 
> 
> You say it's "highly suboptimal", but you don't back this up. Indeed, we've
> long established that the WG is not terribly interested in getting the *most*
> efficient compression available -- especially if it's bought with complexity.

I think the complexity that was lost with the change was the copy from static
to dynamic. In fact, swapping static and dynamic was done only to get smaller
indexes on static that can now be compressed in one byte, possibility that was
previously offered to dynamic headers only. What we really need to satisfy all
users is to be able to encode *most common* static headers with 1 byte, and
a number of dynamic headers with 1 byte as well.

> As Mike said once long ago, the important part is that we get *some*
> compression, and my perception is that there's wide agreement in the WG on
> that point.

I also agree with this.

> In the face of that, a one-byte overhead for dynamic headers is hard to
> characterise as "highly suboptimal."

I wouldn't be as categoric as Roberto here but I understand his point. The
previous design allowed headers not belonging to the static table to be
correctly compressed (whatever X-* headers appearing inside companies).
The new one makes new headers less efficient than the static ones, and I
think Roberto sees less possibilities of future improvements with this
design.

> Other folks have discussed / proposed more elaborate changes than Jeff, but I
> detect very little stomach in the WG for doing so.
> 
> At most, I think we're at a point where the most reasonable thing to do, *if*
> we do anything here, would be to revisit the static table and "make room" for
> more dynamic entries by pruning it some, as per
> <https://github.com/http2/http2-spec/issues/587>.

It's more or less similar to what I suggested as well to what I proposed except
that we don't need to *prune* some entries if the single-byte encoding covers
part of both tables.

> However, as discussed before, we'd need to see broad support for such a
> change; so far, we've held that #587 will only happen if we're making other
> breaking changes.

The problem when there are implementations available is that developers know
what it means for them to have to modify them : modify both encoders and
decoders in multiple products, plan certain outages etc... The problem is
that we need to be careful about future users, not early adopters, and all
of us have to think about how efficient the protocol will be in 1-10 years,
not just right now in implementations that will inevitably evolve in the
following months.

I personally think that the single-byte encoding of *some* dynamic headers
has a real value, and even if people are not pleased with revisiting their
code, we should do something for it.

Best regards,
Willy