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

Version Negotiation and MTU #585

Closed
gloinul opened this issue Jun 6, 2017 · 3 comments
Closed

Version Negotiation and MTU #585

gloinul opened this issue Jun 6, 2017 · 3 comments
Labels
-transport editorial An issue that does not affect the design of the protocol; does not require consensus.

Comments

@gloinul
Copy link
Contributor

gloinul commented Jun 6, 2017

In Section 5.3 of -03 of the draft:

The payload of the Version Negotiation packet is a list of 32-bit
versions which the server supports, as shown below.

As this is an open ended number of versions out of the version number space that actually is very large. Considering that this is an packet sent when no state may exist about MTU, this needs to be limited to keep into safe levels. The general recommendation in later section is to limit full packet to below 1280 bytes. That is 1232 bytes for QUIC headers, and there are 16 bytes before this list. Thus, there is a maximum of 304 versions that fits. Not an immediate problem, but some hint to that there are a limit to N, might be valuable.

@martinthomson martinthomson added design An issue that affects the design of the protocol; resolution requires consensus. -transport labels Jun 6, 2017
@martinthomson
Copy link
Member

To a large extent, I think that this problem solves itself. That is, all the incentives are aligned to keeping the packet small. I see no reason not to mandate a limit on the packet size though (less than the packet size that it is generated in response to would be fine).

@gloinul
Copy link
Contributor Author

gloinul commented Jun 6, 2017

Agree this is more an editorial issue, than actually being a significant design issue. I think there is a point to note that the practical upper limit to N is MTU limitations, and the need to have all the versions implemented.

@martinthomson
Copy link
Member

Yeah, I think that we can solve this easily, but deciding on a size turns out to have interop implications. I'm being cautious.

@martinthomson martinthomson changed the title Transport: Does Version Negotiation Packet needs MTU consideration Does Version Negotiation Packet needs MTU consideration Jun 10, 2017
@mnot mnot changed the title Does Version Negotiation Packet needs MTU consideration Version Negotiation and MTU Jun 20, 2017
martinthomson added a commit that referenced this issue Aug 31, 2017
As discussed, the limits are largely practical, and there should be enough
incentive to avoid inflation, but it pays to be a little more precise when
defining protocols or you can get odd downstream effects.  I've chosen to limit
the size to the CI.  That's 1200 currently (or more) and should be plenty og
space for many versions.

Closes #585.
@martinthomson martinthomson added editorial An issue that does not affect the design of the protocol; does not require consensus. and removed design An issue that affects the design of the protocol; resolution requires consensus. labels Aug 31, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-transport 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

2 participants