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

How to recover from loss of 3 Handshake packets without receiving PATH_RESPONSE #1257

Closed
tatsuhiro-t opened this issue Mar 31, 2018 · 8 comments
Labels
-transport editorial An issue that does not affect the design of the protocol; does not require consensus.

Comments

@tatsuhiro-t
Copy link
Contributor

Draft 10 introduces PATH_CHALLENGE and PATH_RESPONSE, and it imposes a restriction on server that it cannot send more than 3 Handshake packets without receiving a packet from a verified source address. The guidance is include PATH_CHALLENGE in each packets and wait for PATH_RESPONSE from client.
What if all 3 Handshake packets are lost? ACK is also lost, client just keeps re-sending its Initial packet (note that Initial packet cannot include PATH_RESPONSE). Server has sent 3 Handshake packets, so it cannot send any more packets.

@martinthomson martinthomson added editorial An issue that does not affect the design of the protocol; does not require consensus. -transport labels Apr 2, 2018
@martinthomson
Copy link
Member

The intent, as I understand it, was 3 packets out for every 1 in. Is that the understanding?

@ianswett
Copy link
Contributor

ianswett commented Apr 2, 2018

Martin's correct, that was the intent.

@tatsuhiro-t
Copy link
Contributor Author

I think it would be nice to clarify this by explicitly saying that it is per received packet.

@martinduke
Copy link
Contributor

Please do so, and make it clear that it's a decryptable packet with a unique packet number (assuming that's correct)

@ianswett
Copy link
Contributor

To be maximally correct, I believe it should be per new packet that's received and processed, not just decrypted.

@martinthomson
Copy link
Member

This was addressed in the stream0 design team changes. Don't send more than 3 datagrams without receiving acknowledgments, and any acknowledgment is enough to provide address validation, after which any number is OK (short of limits on congestion control, etc...). Reopen if you think we need more words.

@MikeBishop
Copy link
Contributor

Any acknowledgement? That seems odd, given how easy it would be to forge an acknowledgement of Initial packets with easily-guessed sequence numbers. Clearly receiving anything under Handshake keys verifies actual receipt, though.

@martinthomson
Copy link
Member

Imprecision in my comment only. The text in the draft is clearer. It says any acknowledgment with Handshake keys.

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

5 participants