Subject: [quicwg/base-drafts] QPACK One-Pass Indexing, Redux (#1320)

From: Mike Bishop <[email-masked]>
Date: Mon, 23 Apr 2018 19:41:35 +0000 (UTC)

Closes #1239, which it was rebased from.  Builds on #1314.  **DO NOT MERGE** until the PR has been retargeted to master.

Includes Alan's sample one-pass encoding algorithm with ability to encode without knowing largest-referenced entry.  Integrates post-base references into #1314's discussion of indexing and #1141's instruction space.
You can view, comment on, or merge this pull request online at:

  https://github.com/quicwg/base-drafts/pull/1320

-- Commit Summary --

  * QPACK single pass encoding
  * Collapse post-base instructions into existing sections

-- File Changes --

    M draft-ietf-quic-qpack.md (213)

-- Patch Links --

https://github.com/quicwg/base-drafts/pull/1320.patch
https://github.com/quicwg/base-drafts/pull/1320.diff

-- 
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/pull/1320

---

From: Mike Bishop <[email-masked]>
Date: Wed, 25 Apr 2018 12:34:54 -0700

@MikeBishop pushed 1 commit.

4c335b2  Merge branch 'qpack_indexing' into qpack-onepass2

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/1320/files/48b71349a57ce311d06669b5540ee663cb445537..4c335b2752de4f459ddefb8c6add5bbed10521f9

---

From: afrind <[email-masked]>
Date: Wed, 25 Apr 2018 23:31:16 +0000 (UTC)

afrind commented on this pull request.

> @@ -206,11 +207,30 @@ d = count of entries dropped
 ~~~~~
 {: title="Example Dynamic Table Indexing - Request Stream"}
 
-Entries with an absolute index greater than a frame's Base Index cannot be
-referenced by that frame.  If the decoder encounters a reference to an entry
-which has already been dropped from the table, this MUST be treated as a stream
-error of type `HTTP_QPACK_DECOMPRESSION_FAILED`.  If this reference occurs on
-the control stream, this MUST be treated as a connection error.
+Entries with an absolute index greater than a frame's Base Index can be
+referenced using specific Post-Base instructions.  The relative indices of
+Post-Base references count in the opposite direction from Base Index.

Is 'count up from Base index' more clear than 'opposite direction'?  It's opposite of the direction of pre-base relative indexes but that may not be obvious from the text.

> -which has already been dropped from the table, this MUST be treated as a stream
-error of type `HTTP_QPACK_DECOMPRESSION_FAILED`.  If this reference occurs on
-the control stream, this MUST be treated as a connection error.
+Entries with an absolute index greater than a frame's Base Index can be
+referenced using specific Post-Base instructions.  The relative indices of
+Post-Base references count in the opposite direction from Base Index.
+
+~~~~~ drawing
+    +---+-----+-----+-----+-----+
+    | n | n-1 | n-2 | ... | d+1 |  Absolute Index
+    +---+-----+-----+-----+-----+
+    | 1 |  0  |                    Post-Base Index
+    +---+-----+
+                 ^
+                 |
+             Base Index

Put this on top so it's not pointing at nothing

> @@ -381,32 +417,46 @@ decoded header list, as described in Section 3.2 of [RFC7541].
 ~~~~~~~~~~
 {: title="Indexed Header Field"}
 
-An indexed header field starts with the '1' 1-bit pattern, followed by the `S`
-bit indicating whether the reference is into the static (S=1) or dynamic (S=0)
-table. Finally, the relative index of the matching header field is represented
-as an integer with a 6-bit prefix (see Section 5.1 of [RFC7541]).
+If the entry is in the static table, or in the dynamic table with an absolute
+index less than Base Index, this representation starts with the '1' 1-bit

less than or equal to Base Index

-- 
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/pull/1320#pullrequestreview-115383653

---

From: Mike Bishop <[email-masked]>
Date: Wed, 25 Apr 2018 23:33:23 +0000 (UTC)

@MikeBishop pushed 2 commits.

e4137e1  Merge branch 'qpack_indexing' into qpack-onepass2
2ed78fd  Alan's feedback

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/1320/files/d2583c5570372a4f27fed703d4103bbd1156b261..2ed78fd10d5e0879ad6d8afd42f0a941d48f6e0a

---

From: afrind <[email-masked]>
Date: Wed, 25 Apr 2018 16:37:10 -0700

afrind approved this pull request.

-- 
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/pull/1320#pullrequestreview-115390206

---

From: afrind <[email-masked]>
Date: Thu, 26 Apr 2018 08:52:42 -0700

Merged #1320.

-- 
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/pull/1320#event-1596883873