Subject: Re: [quicwg/base-drafts] Separate instruction sets for QCRAM (#1141)

From: Mike Bishop <[email-masked]>
Date: Tue, 17 Apr 2018 21:55:18 +0000 (UTC)

@MikeBishop pushed 1 commit.

2e0403f  Get with the rename

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

---

From: Kazuho Oku <[email-masked]>
Date: Sat, 21 Apr 2018 04:44:02 +0000 (UTC)

kazuho commented on this pull request.

> +An addition to the header table where the header field name matches the header
+field name of an entry stored in the static table or the dynamic table starts
+with the '1' one-bit pattern.  The `S` bit indicates whether the reference is to
+the static (S=1) or dynamic (S=0) table. The header field name is represented
+using the index of that entry, which is represented as an integer with a 6-bit
+prefix (see Section 5.1 of [RFC7541]). Table indices are always non-zero; a zero
+index MUST be treated as a decoding error.
+
+The header name reference is followed by the header field value represented as a
+string literal (see Section 5.2 of [RFC7541]).
+
+~~~~~~~~~~ drawing
+     0   1   2   3   4   5   6   7
+   +---+---+---+---+---+---+---+---+
+   | 1 | S |    Name Index (6+)    |
+   +---+---+-----------------------+

May I ask why we need to define the index as a tuple of `S` bit and an 6+ index, rather than just a 7+ index?

I am not sure why doing `(octet & 0x40) != 0` is better than `index > 62`, and IIUC splitting the index into two by `S` reduces the number of dynamic table indexes that can be crammed into a single octet from 65 to 62.

Other than that, I think that this is a fantastic PR.

-- 
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/1141#pullrequestreview-114162761

---

From: Dmitri Tikhonov <[email-masked]>
Date: Sat, 21 Apr 2018 07:11:10 -0700

dtikhonov commented on this pull request.

IIRC, the idea is to be able to grow the static table -- or even to switch it for an alternative.  For example, a static table ID could be sent as transport parameters.

-- 
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/1141#discussion_r183210659

---

From: Mike Bishop <[email-masked]>
Date: Mon, 23 Apr 2018 16:02:07 +0000 (UTC)

MikeBishop commented on this pull request.

Basically.  #904 tracks improvements to the static table, which could be as simple as defining a new one (probably based on some httparchive data discussed on that issue) or as complex as a negotiation scheme to permit selecting one on each connection.  By moving to the bit, we insulate the dynamic table performance from the possibility that the future static table will be larger.

It also permits us to simplify processing by removing sentinel values (index zero is special).  For the moment, it also allows us to drop the static bit in the Duplicate instruction, but #1314 improves on that further, so I wouldn't count that a large benefit unless we don't take that PR.

-- 
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/1141#discussion_r183449271

---

From: afrind <[email-masked]>
Date: Mon, 23 Apr 2018 16:39:04 +0000 (UTC)

Merged #1141.

-- 
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/1141#event-1589621985

---

From: Kazuho Oku <[email-masked]>
Date: Tue, 24 Apr 2018 00:08:37 +0000 (UTC)

@dtikhonov @MikeBishop Thank you for the answers.

While I do not think that hard-coding the split the space into two using a single bit is ideal (ideally I think all static indexes should be given greater values (which are probably encoded longer) than the dynamic ones considering the fact that a static table is a pre-learnt dictionary), I can see that such encoding is hard to handle especially in case of QPACK.

I now agree that using a single bit is a nice compromise between simplicity, efficiency, extensibility.

-- 
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/1141#discussion_r183572949