Subject: [quicwg/base-drafts] QPACK: Updated Static Table (#1355)

From: Mike Bishop <[email-masked]>
Date: Tue, 15 May 2018 11:18:53 -0700

Fixes #904.

Takes a snapshot of the current draft on the wiki and turns it into a PR.

One open issue:  The txt output squeezes the "index" column enough that three-digit indices wrap the third digit.  If anyone knows how to coerce the table layout in kramdown-rfc2629, that would be great.
You can view, comment on, or merge this pull request online at:

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

-- Commit Summary --

  * Current draft of static table

-- File Changes --

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

-- Patch Links --

https://github.com/quicwg/base-drafts/pull/1355.patch
https://github.com/quicwg/base-drafts/pull/1355.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/1355

---

From: Dmitri Tikhonov <[email-masked]>
Date: Tue, 15 May 2018 11:45:57 -0700

dtikhonov requested changes on this pull request.

Other than "chunked," looks good to me.

> +| 96    | access-control-allow-headers     | dnt,x-mx-reqtoken,keep-alive,user-agent,x-requested-with,if-modified-since,cache-control,content-type  |
+| 97    | access-control-allow-methods     | options                                                                                                |
+| 98    | access-control-allow-methods     | get                                                                                                    |
+| 99    | access-control-allow-methods     | get, post, options                                                                                     |
+| 100   | access-control-allow-methods     | get, head, options                                                                                     |
+| 101   | access-control-allow-methods     | get, options                                                                                           |
+| 102   | origin                           |                                                                                                        |
+| 103   | x-frame-options                  | sameorigin                                                                                             |
+| 104   | x-frame-options                  | deny                                                                                                   |
+| 105   | timing-allow-origin              | \*                                                                                                     |
+| 106   | access-control-expose-headers    | content-length                                                                                         |
+| 107   | access-control-allow-credentials | TRUE                                                                                                   |
+| 108   | access-control-allow-credentials | FALSE                                                                                                  |
+| 109   | expect-ct                        |                                                                                                        |
+| 110   | content-security-policy          | script-src 'none'; object-src 'none'; base-uri 'none'                                                  |
+| 111   | transfer-encoding                | chunked                                                                                                |

"chunked" is prohibited by the protocol.  From [draft-ietf-quic-http-11]:

```
   The "chunked" transfer encoding defined in Section 4.1 of [RFC7230]
   MUST NOT be used.
```

-- 
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/1355#pullrequestreview-120365321

---

From: Mike Bishop <[email-masked]>
Date: Tue, 15 May 2018 11:55:03 -0700

@MikeBishop pushed 1 commit.

7c2b5e1  Remove T-E: chunked

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/1355/files/f5614a6c163530e01b65f3385c07bbfa985c35af..7c2b5e1e50fa29ec1fa7bd89571b6e516e265033

---

From: Lucas Pardue <[email-masked]>
Date: Tue, 15 May 2018 11:58:33 -0700

Is there a strong case for the CONNECT method? I'd be intrigued to know how many deployed HTTP proxies support connect over H2 let alone HTTP/QUIC. 

I guess one argument for is that it can reduce the handshake overhead, dynamic table is of less use here because many times the CONNECT call is only used once?

-- 
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/1355#issuecomment-389276495

---

From: Mike Bishop <[email-masked]>
Date: Tue, 15 May 2018 19:01:10 +0000 (UTC)

CONNECT is defined in the draft, and we know that HTTP/2 and gQUIC proxies exist (though they are rare).  However, we could certainly follow 7541's example and keep only the most common methods.

-- 
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/1355#issuecomment-389277318

---

From: Lucas Pardue <[email-masked]>
Date: Tue, 15 May 2018 12:23:19 -0700

> CONNECT is defined in the draft, and we know that HTTP/2 and gQUIC proxies exist (though they are rare). However, we could certainly follow 7541's example and keep only the most common methods.

I'd assumed methods were included for their prevalence in HTTP archive analysis, although I know that the table has also been hand crafted.

One argument in favor of keeping CONNECT is @mcmanus Bootstrapping WebSockets, which might help make HTTP/QUIC an attractive option.

-- 
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/1355#issuecomment-389283702

---

From: Dmitri Tikhonov <[email-masked]>
Date: Tue, 15 May 2018 19:31:15 +0000 (UTC)

dtikhonov 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/1355#pullrequestreview-120381972

---

From: Lucas Pardue <[email-masked]>
Date: Tue, 15 May 2018 12:41:53 -0700

Aside from CONNECTION discussion the PR LGTM, be great to close out #904 after all this time. Thanks for the work!

-- 
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/1355#issuecomment-389289106

---

From: Lucas Pardue <[email-masked]>
Date: Tue, 15 May 2018 12:42:03 -0700

LPardue 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/1355#pullrequestreview-120385773

---

From: Lucas Pardue <[email-masked]>
Date: Tue, 15 May 2018 12:43:18 -0700

LPardue commented on this pull request.

Link missing?

> @@ -215,8 +215,7 @@ and follows the definitions in [RFC7541] without modification.
 Entries in the QPACK static and dynamic tables are addressed separately.
 
 Entries in the static table have the same indices at all times.  The static
-table is defined in Appendix A of {{!RFC7541}}. Note that because HPACK did not
-use zero-based references, there is no value at index zero of the static table.
+table is defined in {{static-table}}.

I think {{static-table}} might be missing...

-- 
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/1355#pullrequestreview-120386158

---

From: MikkelFJ <[email-masked]>
Date: Tue, 15 May 2018 13:18:52 -0700

I still don't see any x-forwarded-for and friends - when used they are used a lot, even if it might not be visible in the studied dataset.

-- 
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/1355#issuecomment-389299650

---

From: Mike Bishop <[email-masked]>
Date: Tue, 15 May 2018 13:55:26 -0700

MikeBishop commented on this pull request.

Implicit anchor on the title of the section; turns into "Appendix A" in the rendered document.

-- 
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/1355#discussion_r188433089

---

From: Lucas Pardue <[email-masked]>
Date: Tue, 15 May 2018 13:56:42 -0700

Cool!

-- 
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/1355#discussion_r188433443

---

From: drwilco <[email-masked]>
Date: Tue, 15 May 2018 15:04:21 -0700

drwilco commented on this pull request.

+| 111   | upgrade-insecure-requests        | 1                                                                                                      |
+| 112   | x-served-by                      |                                                                                                        |

While a very common header, it doesn't serve any purpose other than debugging. Maybe scrap it from here to encourage people to stop using it?

-- 
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/1355#pullrequestreview-120432128

---

From: drwilco <[email-masked]>
Date: Tue, 15 May 2018 15:05:24 -0700

> @@ -715,6 +714,132 @@ None.
 
 --- back
 
+# Static Table
+
+| Index | Name                             | Value                                                                                                  |
+| ----- | -------------------------------- | ------------------------------------------------------------------------------------------------------ |
+| 0     | :path                            | /                                                                                                      |
+| 1     | referer                          |                                                                                                        |
+| 2     | content-length                   | 0                                                                                                      |
+| 3     | date                             |                                                                                                        |
+| 4     | last-modified                    |                                                                                                        |
+| 5     | :authority                       |                                                                                                        |
+| 6     | expires                          |                                                                                                        |

Considering `Expires` is HTTP/1.0, maybe don't include it to encourage people to start using `Cache-Control: max-age`?

-- 
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/1355#pullrequestreview-120432383

---

From: Martin Thomson <[email-masked]>
Date: Tue, 15 May 2018 18:52:19 -0700

Good enough.  Editors discussed this and for some reason I don't understand would prefer not to have this change in the -12 drafts.  Something about the potential for churn here being hard to deal with.  I don't buy that argument, we're still making major structural changes, so a little churn is expected.  @MikeBishop and @afrind merge at your discretion.

-- 
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/1355#issuecomment-389369295

---

From: Mike Bishop <[email-masked]>
Date: Tue, 15 May 2018 19:59:51 -0700

My comment was that I'm not certain we'll have sufficient review for consensus before we drop -12, which isn't quite the same statement.  If we do, fantastic.

-- 
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/1355#issuecomment-389379525

---

From: Mark Nottingham <[email-masked]>
Date: Wed, 23 May 2018 16:34:38 -0700

mnot commented on this pull request.

+| 2     | content-length                   | 0                                                                                                      |
+| 3     | date                             |                                                                                                        |
+| 4     | last-modified                    |                                                                                                        |
+| 5     | :authority                       |                                                                                                        |
+| 6     | expires                          |                                                                                                        |
+| 7     | cookie                           |                                                                                                        |
+| 8     | etag                             |                                                                                                        |
+| 9     | location                         |                                                                                                        |
+| 10    | if-modified-since                |                                                                                                        |
+| 11    | if-none-match                    |                                                                                                        |
+| 12    | if-range                         |                                                                                                        |
+| 13    | set-cookie                       |                                                                                                        |
+| 14    | age                              | 0                                                                                                      |
+| 15    | link                             |                                                                                                        |
+| 16    | content-disposition              | attachment; filename="f.txt"                                                                           |

drop the value

-- 
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/1355#pullrequestreview-122803424

---

From: Mark Nottingham <[email-masked]>
Date: Wed, 23 May 2018 16:35:18 -0700

+| 9     | location                         |                                                                                                        |
+| 10    | if-modified-since                |                                                                                                        |
+| 11    | if-none-match                    |                                                                                                        |
+| 12    | if-range                         |                                                                                                        |
+| 13    | set-cookie                       |                                                                                                        |
+| 14    | age                              | 0                                                                                                      |
+| 15    | link                             |                                                                                                        |
+| 16    | content-disposition              | attachment; filename="f.txt"                                                                           |
+| 17    | range                            | bytes=0-                                                                                               |
+| 18    | authorization                    |                                                                                                        |
+| 19    | :scheme                          | https                                                                                                  |
+| 20    | :scheme                          | http                                                                                                   |
+| 21    | :status                          | 200                                                                                                    |
+| 22    | :status                          | 304                                                                                                    |
+| 23    | :path                            | /index.html                                                                                            |

We already have /, this seems vaguely implementation-specific

-- 
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/1355#pullrequestreview-122803552

---

From: Mark Nottingham <[email-masked]>
Date: Wed, 23 May 2018 16:35:58 -0700

+1

-- 
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/1355#discussion_r190429889

---

From: Mark Nottingham <[email-masked]>
Date: Wed, 23 May 2018 16:38:35 -0700

> +| 71    | :status                          | 400                                                                                                    |
+| 72    | :status                          | 403                                                                                                    |
+| 73    | :status                          | 404                                                                                                    |
+| 74    | :status                          | 421                                                                                                    |
+| 75    | :status                          | 500                                                                                                    |
+| 76    | :status                          | 503                                                                                                    |
+| 77    | p3p                              |                                                                                                        |
+| 78    | content-encoding                 | gzip                                                                                                   |
+| 79    | content-encoding                 | br                                                                                                     |
+| 80    | accept-ranges                    | bytes                                                                                                  |
+| 81    | alt-svc                          | clear                                                                                                  |
+| 82    | x-xss-protection                 | 1; mode=block                                                                                          |
+| 83    | host                             |                                                                                                        |
+| 84    | pragma                           | no-cache                                                                                               |
+| 85    | pragma                           | public                                                                                                 |
+| 86    | x-powered-by                     |                                                                                                        |

Same as @drwilco 's comment below

-- 
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/1355#pullrequestreview-122804147

---

From: Mark Nottingham <[email-masked]>
Date: Wed, 23 May 2018 16:38:42 -0700

> +| 70    | :status                          | 302                                                                                                    |
+| 71    | :status                          | 400                                                                                                    |
+| 72    | :status                          | 403                                                                                                    |
+| 73    | :status                          | 404                                                                                                    |
+| 74    | :status                          | 421                                                                                                    |
+| 75    | :status                          | 500                                                                                                    |
+| 76    | :status                          | 503                                                                                                    |
+| 77    | p3p                              |                                                                                                        |

No.

-- 
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/1355#pullrequestreview-122804165

---

From: Mark Nottingham <[email-masked]>
Date: Wed, 23 May 2018 16:45:25 -0700

> +| 44    | content-type                     | text/javascript; charset=utf-8                                                                         |
+| 45    | content-type                     | application/x-javascript                                                                               |
+| 46    | server                           |                                                                                                        |
+| 47    | user-agent                       |                                                                                                        |
+| 48    | accept                           | \*/\*                                                                                                  |
+| 49    | cache-control                    | max-age=0                                                                                              |
+| 50    | cache-control                    | no-cache                                                                                               |
+| 51    | cache-control                    | max-age=2592000                                                                                        |
+| 52    | cache-control                    | public, max-age=31536000                                                                               |
+| 53    | cache-control                    | no-cache, no-store, must-revalidate                                                                    |
+| 54    | cache-control                    | max-age=604800                                                                                         |
+| 55    | accept-encoding                  | gzip, deflate, br                                                                                      |
+| 56    | accept-encoding                  | gzip, deflate                                                                                          |
+| 57    | vary                             | accept-encoding                                                                                        |
+| 58    | vary                             | origin                                                                                                 |
+| 59    | vary                             | accept-encoding,user-agent                                                                             |

There's no space after the comma. I know that we're basing this on traffic currently seen, but once this is the static table, implementations are going to adjust what they emit to match, making this a pseudo-standard. So I'd suggest either adding a space or dropping this one.

-- 
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/1355#pullrequestreview-122805327

---

From: Mike Bishop <[email-masked]>
Date: Wed, 23 May 2018 16:46:14 -0700

+| 71    | :status                          | 400                                                                                                    |
+| 72    | :status                          | 403                                                                                                    |
+| 73    | :status                          | 404                                                                                                    |
+| 74    | :status                          | 421                                                                                                    |
+| 75    | :status                          | 500                                                                                                    |
+| 76    | :status                          | 503                                                                                                    |
+| 77    | p3p                              |                                                                                                        |

To `pragma` entirely, or this particular value?  It's outside spec, but it's commonly used.

-- 
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/1355#discussion_r190431477

---

From: Mark Nottingham <[email-masked]>
Date: Wed, 23 May 2018 16:48:53 -0700

+| 71    | :status                          | 400                                                                                                    |
+| 72    | :status                          | 403                                                                                                    |
+| 73    | :status                          | 404                                                                                                    |
+| 74    | :status                          | 421                                                                                                    |
+| 75    | :status                          | 500                                                                                                    |
+| 76    | :status                          | 503                                                                                                    |
+| 77    | p3p                              |                                                                                                        |

This particular value definitely, but probably 84 too. We shouldn't be encouraging HTTP/1.0 semantics and this isn't going to result in any real-world perceivable performance benefit.

-- 
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/1355#discussion_r190431807