Re: QPACK Design Input Needed

Dmitri Tikhonov <> Thu, 29 March 2018 04:04 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 8462C12D72F for <>; Wed, 28 Mar 2018 21:04:15 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -1.899
X-Spam-Status: No, score=-1.899 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, URIBL_BLOCKED=0.001] autolearn=ham autolearn_force=no
Authentication-Results: (amavisd-new); dkim=pass (2048-bit key)
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id kfI5TQ8beGuc for <>; Wed, 28 Mar 2018 21:04:13 -0700 (PDT)
Received: from ( [IPv6:2607:f8b0:400e:c05::22a]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by (Postfix) with ESMTPS id A9DA512778D for <>; Wed, 28 Mar 2018 21:04:13 -0700 (PDT)
Received: by with SMTP id y16so1721624pgv.1 for <>; Wed, 28 Mar 2018 21:04:13 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20150623; h=from:to:subject:thread-topic:thread-index:date:message-id :references:in-reply-to:accept-language:content-language :mime-version; bh=iOR1HZZOwARr7gM6nZ2zV08ioSVngU6N7cTjjOJ/hJs=; b=0tW45tYAuEu4tiPyVt8WvD7liQOcWIZiXNbAAvSVknAJRlkKkfj/p3YepzvENB7wI5 EKFomR+DPUWFhs1CGEZlZTza1iL1HV5SwJya5QhnHOwfoDtahqHytzuRnc8RarFH8vE1 wfY4NNjMwz7M9MGWkzTVDiEbRz7Yv+v/mRKhIKhp1RLBPtMnXQCGw5yHLEKUL4zaLs/y 2QMzzmJPL296UnyMM/BJeAb7HDHj4V5787Y+F2bRc2D1lmjk83XTcnKYm9e9X+8Mg0kO 906Yms4awSrPa5/+DF3YcqjCMS91fm75IwRPJRcpk/0AdzKdxKcG60m2QliuuELGQ8sB SbRg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;; s=20161025; h=x-gm-message-state:from:to:subject:thread-topic:thread-index:date :message-id:references:in-reply-to:accept-language:content-language :mime-version; bh=iOR1HZZOwARr7gM6nZ2zV08ioSVngU6N7cTjjOJ/hJs=; b=YX5Eqrngnhzt3nDH1CIlMh/kEf/9IiR6lIP4td5F20ByMAJ4S2b98Ykn1qvg1RnVUB V2snitvG+/wdn8yG5haCgcvij6uSwjJd/ac8MuBJjQ2KDOPQOHt+u4mrOmUiF06DLIV1 M5AS1JwYaZg9fsXiiMmuQYzhY8QEWl+DnMGyhdqffXysx80EOy4Ffi8PcBqsZWZPMHrB k6qw5AIZvd89H8rNVNABupxI3I2o+TMYG9Mw8f9arlV4YZehAGlIRm/lopdGKvxJxcZg z9d8Wl07wv1Q6zHAj6AbWqgKQmxTQrkr3+FAgXko6PH3RNJ+DfAf1O4c0ZT6CobMrP2f Qm7Q==
X-Gm-Message-State: AElRT7FN3a5+nwvs9tgOE7iYFZ7/7O7tRZPIzAWZXkywoU1UyiaDEtrh sN3RT6fI/1vE/DBaiMvU+ylseNSic6Y=
X-Google-Smtp-Source: AIpwx49mDzyh9OwcZ88DQt7016+QDNESUF+F7GzTEDhPXNrHSUD7eGL0mNlV/aBAK/mbB+Uyb9XoBA==
X-Received: by with SMTP id e7mr5061006pfn.22.1522296253191; Wed, 28 Mar 2018 21:04:13 -0700 (PDT)
Received: from ([]) by with ESMTPSA id u22sm8008957pgv.77.2018. (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 28 Mar 2018 21:04:12 -0700 (PDT)
From: Dmitri Tikhonov <>
To: Alan Frindell <>, QUIC WG <>
Subject: Re: QPACK Design Input Needed
Thread-Topic: QPACK Design Input Needed
Thread-Index: ATYwQTRDbNkalxb82MraCwYuf0zH2rsto5IS
X-MS-Exchange-MessageSentRepresentingType: 2
Date: Thu, 29 Mar 2018 04:04:10 +0000
Message-ID: <>
References: <>
In-Reply-To: <>
Accept-Language: en-US
Content-Language: en-US
X-MS-Exchange-Organization-SCL: -1
X-MS-Exchange-Organization-RecordReviewCfmType: 0
Content-Type: multipart/alternative; boundary="_000_BY2PR0101MB0567D37A24F82E7E2BCFFBDDADA20BY2PR0101MB0567_"
MIME-Version: 1.0
Archived-At: <>
X-Mailman-Version: 2.1.22
Precedence: list
List-Id: Main mailing list of the IETF QUIC working group <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Thu, 29 Mar 2018 04:04:15 -0000

I vote “not important.”

 - Dmitri.

From: QUIC <> on behalf of Alan Frindell <>
Sent: Wednesday, March 28, 2018 7:59:47 PM
Subject: QPACK Design Input Needed

We need input from the working group about the importance of HPACK compatibility versus cleanliness of QPACK.  Mike’s PR (#1141), previously mentioned on list, reorganizes the instruction space, and makes a couple other compatibility-breaking changes.

The new instructions are cleaner[1] than re-using the HPACK instructions, and would allow us (now, or in the future), to increase the size of the static table without any negative compression impacts[2].

Re-using the HPACK instructions makes it easier to share code between an HPACK and QPACK implementation.  It would allow using an HPACK library directly in HTTP over QUIC with a zero byte dynamic table[3].

Which do you prefer?



[1] QPACK has two contexts for instructions, and all HPACK instructions are only valid in one of the contexts.  QPACK makes more efficient use of the instruction space and removes any notion of an “invalid” instruction.  My one-pass encoding PR (#1239) is kind of a hack, re-using some otherwise invalid instructions when a single instruction with a flag would be a cleaner design.

[2] In HPACK all dynamic indexes are serialized on the wire offset by the static table size.  If we increased the static table size, it would cost approximately one byte per dynamic indexed header field.  Mike’s PR replaces offsetting the index with a static bit.

[3] This is not a good idea for compression in general, as it only saves about 30% of header bytes on the wire, but it is nice for anyone trying to get an HTTP over QUIC implementation off the ground.