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

Define requirements for handling packets #724

Merged
merged 10 commits into from Oct 13, 2017
12 changes: 7 additions & 5 deletions draft-ietf-quic-transport.md
Expand Up @@ -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
Copy link
Contributor

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.

Copy link
Member Author

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.

Copy link
Contributor

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.

Copy link
Contributor

Choose a reason for hiding this comment

The 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.
Copy link
Contributor

Choose a reason for hiding this comment

The 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.
Copy link
Contributor

Choose a reason for hiding this comment

The 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?

Copy link
Member Author

Choose a reason for hiding this comment

The 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.)

Copy link
Contributor

Choose a reason for hiding this comment

The 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
Expand Down Expand Up @@ -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.
Expand Down