QPACK and the Static Table

Mike Bishop <mbishop@evequefou.be> Wed, 23 May 2018 23:16 UTC

Return-Path: <mbishop@evequefou.be>
X-Original-To: quic@ietfa.amsl.com
Delivered-To: quic@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 3BBF012D871 for <quic@ietfa.amsl.com>; Wed, 23 May 2018 16:16:25 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.91
X-Spam-Level:
X-Spam-Status: No, score=-1.91 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, T_DKIMWL_WL_MED=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=evequefou.onmicrosoft.com
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 RBlUvyTJPbtL for <quic@ietfa.amsl.com>; Wed, 23 May 2018 16:16:21 -0700 (PDT)
Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0107.outbound.protection.outlook.com [104.47.37.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B7D6C12D86D for <quic@ietf.org>; Wed, 23 May 2018 16:16:21 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=evequefou.onmicrosoft.com; s=selector1-evequefou-be; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=I2ZgeKKzYSaAoR+Lu5twlousLUaM5tyb4qTcEwU549Q=; b=MXFHh/J8KBrp5SnThjp2n2mUScuF1G/LHeQ2rBsc6zSn1g5d2nQZ8qQycl+E7qiNLJ1fh84DCpRB+L6BxQ6iUtWbqk4ebemFqsjoPpuhSiqdaKVY87E61AXIe8kyKX6xqtvplWA61ultPL1FQs9eURXuZ3U4LB11e+66DeFpImI=
Received: from SN1PR08MB1854.namprd08.prod.outlook.com (10.169.39.8) by SN1PR08MB1439.namprd08.prod.outlook.com (10.162.1.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.797.11; Wed, 23 May 2018 23:16:19 +0000
Received: from SN1PR08MB1854.namprd08.prod.outlook.com ([fe80::3c18:f60d:11c1:143d]) by SN1PR08MB1854.namprd08.prod.outlook.com ([fe80::3c18:f60d:11c1:143d%13]) with mapi id 15.20.0776.015; Wed, 23 May 2018 23:16:18 +0000
From: Mike Bishop <mbishop@evequefou.be>
To: HTTP Working Group <ietf-http-wg@w3.org>, "quic@ietf.org" <quic@ietf.org>
Subject: QPACK and the Static Table
Thread-Topic: QPACK and the Static Table
Thread-Index: AdPy6/ObcVQE/1QBQB2X+UF0YtinwQ==
Date: Wed, 23 May 2018 23:16:18 +0000
Message-ID: <SN1PR08MB1854395A2875541C4DC0673DDA6B0@SN1PR08MB1854.namprd08.prod.outlook.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach:
X-MS-TNEF-Correlator:
authentication-results: spf=none (sender IP is ) smtp.mailfrom=mbishop@evequefou.be;
x-originating-ip: [2601:600:8080:5a28:4940:a32d:2658:89dc]
x-ms-publictraffictype: Email
x-microsoft-exchange-diagnostics: 1; SN1PR08MB1439; 7:HDmlhFtjwA2bji60/CbpvJ655Yuto4FcTD63UzQv1bGQWrl5cyadNblDVWA0uN2RMHsMp1LmtGZQ0yMDxn2HA6oVuddMhoCCqRG0mbuz/09Qy6Zn+PpmdBVB8AX03Rko14tG0hqb8zyoCfUcYAFh5dxuC6TZK/GMc4YD2XFrBOFYeOBi8Ng76iuBfcuRX8GD5/1NEFXKMgCHB+7BWd0U4NH5DCUAH9SuAN4fyGgUgpWRA2ahYUXtcRPxiZbsCcjF
x-ms-exchange-antispam-srfa-diagnostics: SOS;
x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(4652020)(7021125)(5600026)(4534165)(7022125)(4603075)(4627221)(201702281549075)(7048125)(7024125)(7027125)(7028125)(7023125)(2017052603328)(7153060)(7193020); SRVR:SN1PR08MB1439;
x-ms-traffictypediagnostic: SN1PR08MB1439:
x-microsoft-antispam-prvs: <SN1PR08MB1439A8B8325E593AD2459BCEDA6B0@SN1PR08MB1439.namprd08.prod.outlook.com>
x-exchange-antispam-report-test: UriScan:(28532068793085)(158342451672863)(166708455590820)(86561027422486)(21748063052155)(64217206974132);
x-ms-exchange-senderadcheck: 1
x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(10201501046)(3002001)(3231254)(944501410)(52105095)(149027)(150027)(6041310)(2016111802025)(20161123562045)(20161123558120)(20161123560045)(20161123564045)(6072148)(6043046)(201708071742011)(7699016); SRVR:SN1PR08MB1439; BCL:0; PCL:0; RULEID:; SRVR:SN1PR08MB1439;
x-forefront-prvs: 06818431B9
x-forefront-antispam-report: SFV:NSPM; SFS:(10019020)(396003)(39830400003)(346002)(376002)(39380400002)(366004)(199004)(189003)(7736002)(2900100001)(5250100002)(86362001)(790700001)(97736004)(74316002)(6116002)(2501003)(486006)(478600001)(68736007)(46003)(966005)(81156014)(81166006)(8676002)(6436002)(8936002)(14454004)(106356001)(105586002)(476003)(316002)(6506007)(3280700002)(74482002)(5660300001)(99286004)(606006)(55016002)(110136005)(9686003)(6306002)(54896002)(53936002)(236005)(7696005)(25786009)(59450400001)(2906002)(102836004)(33656002)(3660700001)(186003); DIR:OUT; SFP:1102; SCL:1; SRVR:SN1PR08MB1439; H:SN1PR08MB1854.namprd08.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:0; MX:1;
received-spf: None (protection.outlook.com: evequefou.be does not designate permitted sender hosts)
x-microsoft-antispam-message-info: 4vobyqk0bc0uxMd1vrjIlHIrPYaxx6sVO/m/2lSrVWoa/WW/KKh8GEIjdkBdeNinvH4vFvzC/jxrYBTSwZ4FLahuKIuawOyEhtTWoxq1WxkEr0GNlJYl9sEmGrSDuG1F34hmqJNX4PhIRMpPIUwP98QLyb63l6UHnD1vlQ+X2AqXDk42/s2GPPHiMEATz0e0
spamdiagnosticoutput: 1:99
spamdiagnosticmetadata: NSPM
Content-Type: multipart/alternative; boundary="_000_SN1PR08MB1854395A2875541C4DC0673DDA6B0SN1PR08MB1854namp_"
MIME-Version: 1.0
X-MS-Office365-Filtering-Correlation-Id: 52322018-a1b3-4f20-5a0f-08d5c10330c1
X-OriginatorOrg: evequefou.be
X-MS-Exchange-CrossTenant-Network-Message-Id: 52322018-a1b3-4f20-5a0f-08d5c10330c1
X-MS-Exchange-CrossTenant-originalarrivaltime: 23 May 2018 23:16:18.8427 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 41eaf50b-882d-47eb-8c4c-0b5b76a9da8f
X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN1PR08MB1439
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic/SiDTgKSv2Nv5bgtlCaGlNs5czZ4>
X-BeenThere: quic@ietf.org
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <quic.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic>, <mailto:quic-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic/>
List-Post: <mailto:quic@ietf.org>
List-Help: <mailto:quic-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic>, <mailto:quic-request@ietf.org?subject=subscribe>
X-List-Received-Date: Wed, 23 May 2018 23:16:25 -0000

Wanted to get a sense of the affected working groups on two issues in QPACK (header compression for HTTP/QUIC).

Rather than indexing the tables together and having the static table at 1-61, QPACK uses a bit to indicate static vs. dynamic.  Since the field is seven bits long, the performance is comparable for the dynamic table (you can access 63 entries in one byte, 190 in two), but you can increase the size of the static table without hurting the dynamic table.  As a result, we're building a fresh static table<https://github.com/quicwg/base-drafts/pull/1355> based on queries against HTTPArchive data.

The key question that has come up in a couple venues:  What real-world headers do we want to artificially remove from what the data shows, and what headers not seen by HTTP Archive do we want to force in anyway?

So far, we've:

  *   forced in pseudo-headers because the Archive doesn't capture them and they would otherwise be absent
     *   :path, :authority, :method
  *   deleted values presumed biased by the test configuration:
     *   Server: (various vendors)
     *   User-Agent
     *   Accept-Language: en-us, en;q=0.9
     *   Content-Length: 531
        *   I still wonder exactly why that's so common....
     *   P3p: policyref="https://www.googleadservices.com/..."....
     *   Origin: https://www.facebook.com
     *   Alt-Svc for various versions of gQUIC
     *   ...the list goes on
  *   deleted headers prohibited by HTTP/QUIC and HTTP/2
     *   Transfer-Encoding: chunked
  *   Reordered to put headers you're likely to name-reference at the front, especially if you're unlikely to add them to the dynamic table

The question is whether we should also backfill headers which HTTP Archive wouldn't see, delete headers we wish people wouldn't use, and/or insert the ones we hope they eventually will.  Some candidates:

  *   Add Alt-Svc entry for HTTP/QUIC with QUIC v1
  *   Add X-Forwarded-For
  *   Don't add X-Forwarded-For, but do add Forwarded
  *   Remove Expires to incent the use of Cache-Control
  *   Collapse the "Content-Type: <thingey>" and "Content-Type: <thingey>; charset=utf-8" entries together
     *   ...but which one to keep?
  *   Add Content-Encoding and/or Accept-Encoding entries for zstd

There's an endless parade of bikesheds here.  As Martin has pointed out, this will never be perfect, so the goal is "good enough and keep going."  Any strong feelings about any of these before we merge it?

Also, there's been some discussion of a mechanism for selecting one of several static tables at the start of a connection.  In that case, the spec would probably define three tables (client headers, server headers [for servers that don't push], combined [for servers that push]) and enable future RFCs to define others for targeted scenarios (proxies, video playback, IoT, etc.).  How much does that interest folks?