Subject: [quicwg/base-drafts] HTTP/2 Guidance and Extensions (#363)

From: Mike Bishop <[email-masked]>
Date: Mon, 06 Mar 2017 17:54:04 -0800

Collates the HTTP/2 migration guidance from various places into a single section, and expands on details about how HTTP/2 extensions can be used/ported.  In the process, I added more IANA stuff, which should address the HTTP portion of #359.

Builds on #274; Closes #242.
You can view, comment on, or merge this pull request online at:

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

-- Commit Summary --

  * Restrict RST to data streams, require replay
  * Remove replay requirement; add YOU_SCREWED_UP error code
  * Merge branch 'dont_reset_me' into http_extensions
  * Move content to HTTP/2 Considerations section, discuss extensions
  * Merge remote-tracking branch 'origin/master' into http_extensions
  * Add IANA Error section

-- File Changes --

    M draft-ietf-quic-http.md (244)

-- Patch Links --

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

---

From: Lucas Pardue <[email-masked]>
Date: Wed, 08 Mar 2017 03:54:28 -0800

This looks pretty good, I have a comment about ALTSVC that I will make on #242.

-- 
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/363#issuecomment-285021887

---

From: Mike Bishop <[email-masked]>
Date: Wed, 08 Mar 2017 11:32:13 -0800

@MikeBishop pushed 1 commit.

dfdb34e  Merge remote-tracking branch 'origin/master' into http_extensions

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/363/files/12bcab7b759d00d2a6a6c11debaa2ab513255be2..dfdb34e918b60295a392e3beef7128689680132d

---

From: Mike Bishop <[email-masked]>
Date: Wed, 08 Mar 2017 15:59:38 -0800

5a93487  Missed a merge conflict instance

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/363/files/77aec4850c47462eb7aabf83df0c10f9beeb914c..5a93487f7d807e704af9d6e44789804930d04675

---

From: Martin Thomson <[email-masked]>
Date: Wed, 08 Mar 2017 16:37:25 -0800

martinthomson approved this pull request.

> @@ -782,7 +758,86 @@ HTTP_MULTIPLE_SETTINGS (0x10):
 HTTP_RST_CONTROL_STREAM (0x11):
 : A message control stream closed abruptly.
 
-## Mapping HTTP/2 Error Codes
+
+# Considerations for Transitioning from HTTP/2
+
+HTTP/QUIC is strongly informed by HTTP/2, and bears many similarities.  This
+section points out useful differences from HTTP/2 and describes how to map

Not all the differences are useful.  I would use the word "important".

> +
+Many framing concepts from HTTP/2 can be elided away on QUIC, because the
+transport deals with them. Because frames are already on a stream, they can omit
+the stream number. Because frames do not block multiplexing (QUIC's multiplexing
+occurs below this layer), the support for variable-maximum-length packets can be
+removed. Because stream termination is handled by QUIC, an END_STREAM flag is
+not required.
+
+Frame payloads are largely drawn from {{!RFC7540}}. However, QUIC includes some
+features (e.g. flow control) which are also present in HTTP/2. In these cases,
+the HTTP mapping does not re-implement them. As a result, some frame types are
+not required in HTTP/QUIC. Where an HTTP/2-defined frame is no longer used, the
+frame ID has been reserved in order to maximize portability between HTTP/2 and
+HTTP/QUIC implementations. However, equivalent frames between the two mappings
+are not identical.
+

Another important difference is that while there is an absolute ordering between every frame in h2, this is not true for frames on different streams in QUIC.  You mention this below, but only obliquely.  I think that it's important enough for a paragraph.

> +- If there are assumptions that frames from different streams will still be
+  received in the order sent, HTTP/QUIC will break them.  (This is most easily
+  solved by sending all frames on the connection control stream and including
+  the affected stream number, but could also be solved in a frame-local method.)
+
+The IANA registry of frame types has been updated in {{iana-frames}} to include
+references to the definition for each frame type in HTTP/2 and in HTTP/QUIC.
+Frames not defined as available in HTTP/QUIC SHOULD NOT be sent and SHOULD be
+ignored as unknown on receipt.
+
+## HTTP/2 SETTINGS Parameters
+
+Some transport-level options that HTTP/2 specifies via the SETTINGS frame are
+superseded by QUIC transport parameters in HTTP/QUIC. The HTTP-level options
+that are retained in HTTP/QUIC have the same value as in HTTP/2.
+

Another important difference: settings can't change.

-- 
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/363#pullrequestreview-25922920

---

From: Mike Bishop <[email-masked]>
Date: Wed, 08 Mar 2017 17:50:49 -0800

@MikeBishop pushed 2 commits.

e621b65  Martin's feedback
0736bf4  Consolidating more HTTP/2 text into the h2-considerations section

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/363/files/5a93487f7d807e704af9d6e44789804930d04675..0736bf41d4e93a56fc11c88adf988272f847ba35

---

From: Mike Bishop <[email-masked]>
Date: Wed, 08 Mar 2017 17:51:34 -0800

Addressed Martin's feedback, and consolidated more text into the new section.  If we want to switch to a new IANA registry, it's a fairly small step from here.

-- 
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/363#issuecomment-285229838

---

From: Mike Bishop <[email-masked]>
Date: Thu, 09 Mar 2017 17:56:58 -0800

8920788  Merge remote-tracking branch 'origin/master' into http_extensions
f3259b4  Change log for HTTP/2 Considerations

-- 
You are receiving this because you are subscribed to this thread.
View it on GitHub:
https://github.com/quicwg/base-drafts/pull/363/files/0736bf41d4e93a56fc11c88adf988272f847ba35..f3259b42ca4a47358a30391b1b9c073e339f7700

---

From: Mike Bishop <[email-masked]>
Date: Fri, 10 Mar 2017 09:46:30 -0800

Merged #363.

-- 
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/363#event-995281211