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

CANCEL_PUSH, MAX_PUSH_ID and GOAWAY specify the length of the ID twice #1620

Closed
afrind opened this issue Jul 31, 2018 · 4 comments
Closed

CANCEL_PUSH, MAX_PUSH_ID and GOAWAY specify the length of the ID twice #1620

afrind opened this issue Jul 31, 2018 · 4 comments
Labels
-http design An issue that affects the design of the protocol; resolution requires consensus.

Comments

@afrind
Copy link
Contributor

afrind commented Jul 31, 2018

From #1556:

CANCEL_PUSH, MAX_PUSH_ID and GOAWAY have a variable length frame length but the frame contains only a single variable length integer, so its length is effectively specified twice.

@martinthomson martinthomson added design An issue that affects the design of the protocol; resolution requires consensus. -http labels Jul 31, 2018
@martinthomson
Copy link
Member

The advantage of having that redundancy is consistency. All frame types have a length, which allows us to send frames of unknown types.

It seems that QUIC-the-transport leans more heavily toward the schema-aware grammar than hq or TLS, which both have redundant lengths. The transport therefore needs prior agreement for every extension - which is fitting for something at that layer.

hq has just two instances of this sort of redundancy that I can identify: frames and settings. I don't think that either is particularly problematic, especially in light of existing needs. That is, you need to be able to send either without knowing that your peer will understand it.

I don't think that this needs to change.

@afrind
Copy link
Contributor Author

afrind commented Aug 2, 2018

I think what I'm asking about, for both frames and SETTINGS in the linked issue, is whether QUIC varints are the best choice for representing integers in HQ.

@MikeBishop
Copy link
Contributor

I think that's a fair question, and I'm coming around to the idea of length-prefixed non-varint values for SETTINGS. It's a level of complexity that seemed like we might need it coming out of HTTP/2, and a few years later that need hasn't proven itself out.

For these frames, we're referencing Stream IDs / Push IDs. Stream IDs are a transport layer concept and I'm reluctant to introduce an alternative encoding. We already have at least one place (PRIORITY) where Push and Stream IDs are encoded in the same field, which argues for using the same encoding for both. If not varint, what?

@martinthomson martinthomson added the needs-discussion An issue that needs more discussion before we can resolve it. label Sep 14, 2018
@mnot
Copy link
Member

mnot commented Sep 19, 2018

Discussed in NYC; comfort with closing with no action.

@mnot mnot closed this as completed Sep 19, 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 design An issue that affects the design of the protocol; resolution requires consensus.
Projects
None yet
Development

No branches or pull requests

4 participants