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

New test: stateless reset #15

Closed
ghedo opened this issue Oct 31, 2019 · 4 comments
Closed

New test: stateless reset #15

ghedo opened this issue Oct 31, 2019 · 4 comments

Comments

@ghedo
Copy link
Contributor

ghedo commented Oct 31, 2019

The idea would be to create a connection to the server, close it, wait a bit, then send a Short header packet using the encryption keys and connection IDs from the closed connection. If the server sends something back in response, check that is matches the stateless reset token from the previous connection.

Not sure how feasible this is though...

@mpiraux
Copy link
Member

mpiraux commented Nov 5, 2019

I was always wondering how to test Stateless Reset. Is there more text now that impose the server to send a SS in such cases ? It could also send back the packet with the Connection Close instead of an SS, right ?

@ghedo
Copy link
Contributor Author

ghedo commented Nov 6, 2019

The server doesn't need to do anything, but when receiving a packet that it can't associate with a connection it MAY send stateless reset https://quicwg.org/base-drafts/draft-ietf-quic-transport.html#rfc.section.10.4

Sending connection close is not really an option, because the server wouldn't have the required encryption keys (as there is no connection state), but it could do nothing (i.e. stateless reset is not mandatory).

Though I think it would still be useful for quic-tracker to have a test for this, for the servers that do implement SS.

@mpiraux
Copy link
Member

mpiraux commented Apr 28, 2020

Sending connection close is not really an option, because the server wouldn't have the required encryption keys (as there is no connection state), but it could do nothing (i.e. stateless reset is not mandatory).

The spec allows you to buffer and retransmit the last packet containing a CC frame as is. But doing nothing is also valid indeed. I have a test on the way that should be part of tonight's run!

@mpiraux
Copy link
Member

mpiraux commented Apr 28, 2020

It turned out to be very easy to implement. It goes:

  • Handshake
  • Waits 2 sRTT
  • Closes the connection
  • Waits 8 sRTT
  • Sends 3 pings, spaced by 3 sRTT each

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants