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

HTTP extension mechanisms #242

Closed
LPardue opened this issue Jan 26, 2017 · 11 comments
Closed

HTTP extension mechanisms #242

LPardue opened this issue Jan 26, 2017 · 11 comments
Labels
-http design An issue that affects the design of the protocol; resolution requires consensus. has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list.

Comments

@LPardue
Copy link
Member

LPardue commented Jan 26, 2017

The HTTP/QUIC mapping document is missing consideration for HTTP/2 extension mechanisms. This is part of the charter text:

This mapping will accommodate the extension mechanisms defined in the HTTP/2 specification.

RFC 7540 (https://tools.ietf.org/html/rfc7540#section-5.5) defines three extension mechanisms, lets order these as:

  1. New frame types
  2. New error codes
  3. New settings

I can see how 1 and 2 might work out, following Mike's example of augmenting existing definitions and allowing for things that exist in the HTTP/2 and HTTP/QUIC spaces to be managed somewhat independently. A concrete use case I have is the ALTSVC frame (especially when used on stream 0), so I'm happy to contribute towards this issue with some guidance.

3 has some problems related to proposed SETTINGS changes.

Finally, extensions that could change of semantics are a bit problematic (does it change the HTTP or the QUIC semantic, if that either of those is even possible). Additionally, the negotiation of these is trickier given the additional negotation concerns of QUIC (0-RTT etc).

@MikeBishop
Copy link
Contributor

I don't read the charter text as requiring that every individual extension work unmodified in HTTP/QUIC, simply that equivalent extension mechanisms exist. If people feel differently, we may need broader discussion to reach consensus on that part first.

I suspect 3 will work out the same way that 1 already works -- modify the registry to have additional columns saying whether the setting is supported in HTTP/2 or HTTP/QUIC, and if so, the specification that describes how it works. That will take some text.

For 2, an extension can define new error codes, but we're currently making no guarantees that the same error code can be applied in both places. We'll have to think about how much consistency we want. HTTP/QUIC will probably accommodate semantic-changing extensions the same way HTTP/2 did -- by stating that peers can implement whatever modifications they want via explicit agreement.

@MikeBishop MikeBishop added design An issue that affects the design of the protocol; resolution requires consensus. -http labels Jan 27, 2017
@LPardue
Copy link
Member Author

LPardue commented Jan 28, 2017 via email

@MikeBishop
Copy link
Contributor

MikeBishop commented Jan 28, 2017 via email

@LPardue
Copy link
Member Author

LPardue commented Feb 1, 2017

Thanks for the illumination. I'll put a pin in my ALTSVC thoughts for now, more important things to focus on.

It seems like there is some text to add around HTTP extensions, should we keep this issue open to track that?

@LPardue
Copy link
Member Author

LPardue commented Mar 8, 2017

(Edit: fix broken hyperlinks and wrong RFC ref)

I've reread the section "Existing Frame Types" and have been left a bit muddled.

The intent seems to be to redefine the the Frame Type Registry table defined in RFC7540. However, the IANA managed Frame Type Registry includes the additional ALTSVC frame, that was registered in RFC7838.

Although Alt-Svc is a HTTP/2 extension, it seems a bit unfair to leave it out at this stage. Doing so would mean we need an RFC7838 "Update" doc in order to support its use with QUIC. Perhaps that was the intent?

@MikeBishop
Copy link
Contributor

Yeah, I've debated whether to include that here. It's a dead simple mapping -- 0=>3, everything else the same. But updating 7838 in the HTTP/QUIC spec feels a bit weird, too. Maybe I should just spin up a separate I-D for ALTSVC frames.

@MikeBishop MikeBishop mentioned this issue Mar 8, 2017
@martinthomson
Copy link
Member

I think that it's past time to acknowledge that this isn't anything like h2. We should do two things:

  1. port h2 extensions that matter (like ALTSVC)

  2. provide advice for porting h2 extensions

Yeah, that sucks, but we can't provide the same guarantees for extensions, so we can't guarantee that extensions will be be the same.

@MikeBishop
Copy link
Contributor

That's more or less the direction I'm heading in #363, though I've still got the joint IANA frame type / setting registry. Have a section that talks about where we're similar and where we're different. There's already advice on porting extensions, though it could probably be expanded.

Are you advocating we simply leave the HTTP/2 registry alone and start fresh?

@martinthomson
Copy link
Member

That's what I'm advocating :) But I've been advocating that for a while.

@mnot
Copy link
Member

mnot commented Mar 23, 2017

+1 to starting fresh from me.

Is this really closed?

@MikeBishop
Copy link
Contributor

Closed because there's text addressing it in -02. The "split registries" has a separate issue, which is not closed.

@mnot mnot added the has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list. label Apr 19, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-http design An issue that affects the design of the protocol; resolution requires consensus. has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list.
Projects
None yet
Development

No branches or pull requests

4 participants