Re: [quicwg/base-drafts] QPACK could use some examples (#1454)

afrind <notifications@github.com> Fri, 14 September 2018 23:27 UTC

Return-Path: <noreply@github.com>
X-Original-To: quic-issues@ietfa.amsl.com
Delivered-To: quic-issues@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id AE734130DC3 for <quic-issues@ietfa.amsl.com>; Fri, 14 Sep 2018 16:27:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -8.01
X-Spam-Level:
X-Spam-Status: No, score=-8.01 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, HTML_MESSAGE=0.001, MAILING_LIST_MULTI=-1, RCVD_IN_DNSWL_HI=-5, SPF_PASS=-0.001, T_DKIMWL_WL_HIGH=-0.01] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (1024-bit key) header.d=github.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 RL-arK2OOAMp for <quic-issues@ietfa.amsl.com>; Fri, 14 Sep 2018 16:27:25 -0700 (PDT)
Received: from out-1.smtp.github.com (out-1.smtp.github.com [192.30.252.192]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id B8D3E12426A for <quic-issues@ietf.org>; Fri, 14 Sep 2018 16:27:25 -0700 (PDT)
Date: Fri, 14 Sep 2018 16:27:24 -0700
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=github.com; s=pf2014; t=1536967644; bh=HArC95LoPaSkRVK01Vrnr4P4rGnoGdsru5R8J39EwFY=; h=Date:From:Reply-To:To:Cc:In-Reply-To:References:Subject:List-ID: List-Archive:List-Post:List-Unsubscribe:From; b=WK8hqAi05Lycc1c3seugxSWG+NxVeZIhsdIBmgW03TDa2bQGuDPR62ik4t3r7K70x 1xjJvr9HH2fq3dhxLejoIveW0f0FzjtlcSJQaRaqxYaJxx1h4TkjqMQXtf6MvYvCCh M8bwUvaUh1UNyC0DlAmsG01tIln5knWMGePgfADg=
From: afrind <notifications@github.com>
Reply-To: quicwg/base-drafts <reply+0166e4ab4d0c23e9c2f86ad3b7923ceaf1a3207da6089f8692cf0000000117b405dc92a169ce13d80c39@reply.github.com>
To: quicwg/base-drafts <base-drafts@noreply.github.com>
Cc: Subscribed <subscribed@noreply.github.com>
Message-ID: <quicwg/base-drafts/issues/1454/421509364@github.com>
In-Reply-To: <quicwg/base-drafts/issues/1454@github.com>
References: <quicwg/base-drafts/issues/1454@github.com>
Subject: Re: [quicwg/base-drafts] QPACK could use some examples (#1454)
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="--==_mimepart_5b9c43dcd914a_50093f9f312d45b44974d"; charset="UTF-8"
Content-Transfer-Encoding: 7bit
Precedence: list
X-GitHub-Sender: afrind
X-GitHub-Recipient: quic-issues
X-GitHub-Reason: subscribed
X-Auto-Response-Suppress: All
X-GitHub-Recipient-Address: quic-issues@ietf.org
Archived-At: <https://mailarchive.ietf.org/arch/msg/quic-issues/aT1mBXZBPmy1GYnAxr_GNerJEVQ>
X-BeenThere: quic-issues@ietf.org
X-Mailman-Version: 2.1.29
List-Id: Notification list for GitHub issues related to the QUIC WG <quic-issues.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/quic-issues/>
List-Post: <mailto:quic-issues@ietf.org>
List-Help: <mailto:quic-issues-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/quic-issues>, <mailto:quic-issues-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 14 Sep 2018 23:27:28 -0000

For reference, there is now this repo: https://github.com/qpackers/qifs, which contains example encodings.  We could brush this up and have some semi-canonical encodings there.  That said, I kind of liked having a few concrete examples in the HPACK specification that you can refer back to.

Just reviewing HPACK's examples, it has:

3 Integer encoding examples
An example encoding of each instruction
A sequence of three requests and one with three responses, each encoded both with and without Huffman 

For each of the request/response examples it has a block that shows the decoding process - which octets produce which decoder actions (insert, evict, emit, etc). 

I'm not sure how much of this ground we need to retread in QPACK.  Since we use the same integer and Huffman encoding, we could probably skip those.  

So maybe we should have

1. One String literal example
2. One Example of each instruction (4 encoder, 3 decoder, 5 request)
3. An encoding that does not use the dynamic table/control stream at all
4. An encoding that uses the control stream
5. An encoding that uses the control stream and post-base instructions
6. An encoding that makes a duplicate on the control stream and references it

I think 1 and 2 are more to be consistent with what HPACK did and shouldn't really be required.  Even so, this might be a long section.

I'd like to avoid anything that involves decoder->encoder feedback since it can get hairy pretty quickly.  I'm less inclined to include the decoding process diagrams since decoding is pretty simple - it only emits.

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/quicwg/base-drafts/issues/1454#issuecomment-421509364