Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Split from HTTP/2 framing? #81

Closed
MikeBishop opened this issue Dec 9, 2016 · 6 comments
Closed

Split from HTTP/2 framing? #81

MikeBishop opened this issue Dec 9, 2016 · 6 comments
Labels
-http editorial An issue that does not affect the design of the protocol; does not require consensus.

Comments

@MikeBishop
Copy link
Contributor

Because of a stated goal from some implementers to reuse HTTP/2 framing as much as possible, the draft currently augments the HTTP/2 Frame Type Registry with a "Supported Protocol" column, allowing a frame to be defined for HTTP/2, HTTP/QUIC, or both. A specification is required for each supported protocol.

However, in the current draft, all but one "Both" frames are different between HTTP/2 and HTTP/QUIC. Small or large, nearly every frame has required some modification to work over QUIC. If we accept #80 , all frames will be different between HTTP/2 and HTTP/QUIC.

At that point, is there really a point in continuing to define HTTP/QUIC in relation to HTTP/2, or should we just admit that it's a new, separate thing that's heavily inspired by HTTP/2? Separate registry, etc., and future extensions can register themselves with both if appropriate? Or do we keep the same registry anyway to enforce that you'll never wind up with totally unrelated frames sharing the same value across the two protocols?

@MikeBishop MikeBishop added editorial An issue that does not affect the design of the protocol; does not require consensus. -http labels Dec 9, 2016
@martinthomson
Copy link
Member

It seems like we have a protocol that is inspired and informed by HTTP/2, not congruent with it.

@mcmanus
Copy link
Contributor

mcmanus commented Dec 9, 2016 via email

@martinthomson
Copy link
Member

I think that if we have so many differences, and they are so fundamental, then we're really building a new protocol. I had hoped that we wouldn't be doing that, but it seems like it's unavoidable.

@ianswett
Copy link
Contributor

Agreed, I very much hoped it would not require such substantial changes, but If every frame is different, it is a new thing. It sounds like there are sound reasons for making every frame different.

In that case, this sounds like HTTP/2.1. I say that because I believe the featureset(ie: priorities) is identical between it and HTTP/2, but the framing is very different. In which case, it seems the next question is whether it needs to exist for TCP as well, or is it QUIC only?

@MikeBishop
Copy link
Contributor Author

  • EXTENDED_SETTINGS was a proposed extension to HTTP/2 the WG decided to defer to the next protocol update. Clearly not worth a protocol rev by itself.
  • PRIORITY needs to be off-stream because frames from different stream can be reordered with respect to each other and priority changes aren't commutative, plus needs some rearranging to accommodate QUIC's larger stream space. Doesn't apply to TCP, since frames can't be reordered.
  • HEADERS change is the sequence number, which isn't needed in TCP because of ordering. (Plus padding is redundant and the embedded PRIORITY is subject to the previous bullet.) Modulo any changes we make to HPACK in the future.
  • PUSH_PROMISE is the same as HEADERS, plus needs an extra bit to accommodate QUIC's larger stream space.

So no, I don't think there's currently a need to backport any of this into a mapping over TCP. Now if we modify HPACK to include new features, not just reordering-resiliency, those might be worth backporting. My inclination is to finalize QPACK or whatever, then maybe define HTTP/2.1 with QPACK and maybe EXTENDED_SETTINGS.

@janaiyengar janaiyengar added the needs-discussion An issue that needs more discussion before we can resolve it. label Jan 14, 2017
@martinthomson martinthomson removed the needs-discussion An issue that needs more discussion before we can resolve it. label Feb 21, 2017
@martinthomson martinthomson added the needs-discussion An issue that needs more discussion before we can resolve it. label Mar 10, 2017
@martinthomson
Copy link
Member

Marking as of interest for discussion in Chicago, if the mailing list discussion doesn't resolve before then.

@mnot mnot added this to Backwards Compatibility in HTTP Apr 28, 2017
@mnot mnot removed this from HTTP/2 Compatibility in HTTP Mar 6, 2018
@mnot mnot removed needs-discussion An issue that needs more discussion before we can resolve it. labels Mar 5, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-http editorial An issue that does not affect the design of the protocol; does not require consensus.
Projects
None yet
Development

No branches or pull requests

6 participants