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

Limit connection drops from Version Negotiation #3533

Merged
merged 2 commits into from Apr 20, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
25 changes: 16 additions & 9 deletions draft-ietf-quic-transport.md
Expand Up @@ -1263,15 +1263,22 @@ expectation that it will eventually receive an Initial packet.

## Handling Version Negotiation Packets {#handle-vn}

When a client receives a Version Negotiation packet, it MUST abandon the
current connection attempt. Version Negotiation packets are designed to allow
future versions of QUIC to negotiate the version in use between endpoints.
Future versions of QUIC might change how implementations that support multiple
versions of QUIC react to Version Negotiation packets when attempting to
establish a connection using this version. How to perform version negotiation
is left as future work defined by future versions of QUIC. In particular,
that future work will need to ensure robustness against version downgrade
attacks; see {{version-downgrade}}.
Version Negotiation packets are designed to allow future versions of QUIC to
negotiate the version in use between endpoints. Future versions of QUIC might
change how implementations that support multiple versions of QUIC react to
Version Negotiation packets when attempting to establish a connection using this
version.

A client that supports only this version of QUIC MUST abandon the current
connection attempt if it receives a Version Negotiation packet, with the
following two exceptions. A client MUST discard any Version Negotiation packet
if it has received and successfully processed any other packet, including an
earlier Version Negotiation packet. A client MUST discard a Version Negotiation
packet that lists the QUIC version selected by the client.

How to perform version negotiation is left as future work defined by future
versions of QUIC. In particular, that future work will ensure robustness
against version downgrade attacks; see {{version-downgrade}}.


### Version Negotiation Between Draft Versions
Expand Down