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
Define requirements for handling packets #724
Changes from 2 commits
7e5281b
de2821f
0d0f98d
a9c6512
39ea0bb
cec3573
9d7cdb1
e5fb23b
aa50d14
d816e03
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -911,9 +911,10 @@ For servers, packets that aren't associated with a connection potentially create | |
a new connection. However, only packets that use the long packet header and | ||
that are at least the minimum size defined for the protocol version can be | ||
initial packets. Unless the server is buffering 0-RTT packets, a server MUST | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The server could be buffering 1-RTT packets as well (consider out-of-band key negotiation). |
||
discard packets that cannot be associated with a connection if they use the | ||
short header form, or they are smaller than the smallest minimum size for any | ||
version that the server supports. | ||
either discard a packet or generate a stateless reset ({{stateless-reset}}) if | ||
the packet cannot be associated with a connection if they use the short header | ||
form, or they are smaller than the smallest minimum size for any version that | ||
the server supports. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This sentence needs work. It's a run-on and confusing. |
||
|
||
This version of QUIC defines a minimum size for initial packets of 1200 octets. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. What has to be 1200 bytes? Is this including or excluding IP + UDP overhead? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. That is defined elsewhere. I'm starting to think that we need to consolidate that text, it's all over the place. (Another patch though.) There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. SG |
||
Versions of QUIC that define smaller minimum initial packet sizes need to be | ||
|
@@ -964,8 +965,9 @@ successfully receives a response or it abandons the connection attempt. | |
### Handling Version Negotiation Packets {#handle-vn} | ||
|
||
When the client receives a Version Negotiation packet, it first checks that the | ||
packet number and connection ID match the values it sent in a Client Initial | ||
packet. If this check fails, the packet MUST be discarded. | ||
packet number and connection ID match the values the client sent in a previous | ||
packet on the same connection. If this check fails, the packet MUST be | ||
discarded. | ||
|
||
Once the Version Negotiation packet is determined to be valid, the client then | ||
selects an acceptable protocol version from the list provided by the server. | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It seems worth mentioning packet type as well here, since there are only two packet types that carry client hellos.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There is only one type of packet that could be an initial packet. However... this allows for the possibility of defining a new version of the protocol that has more than one type. We decided not to make the initial packet type something that is invariant across versions though.
If you want to make it an invariant (and potentially prevent new versions from defining multiple opening packet types), then it's probably best to open an issue for that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fair point, I'm happy with this as is.