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

Response to lost handshake packets #169

Closed
martinduke opened this issue Jan 17, 2017 · 6 comments
Closed

Response to lost handshake packets #169

martinduke opened this issue Jan 17, 2017 · 6 comments
Assignees
Labels
-recovery design An issue that affects the design of the protocol; resolution requires consensus. has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list.

Comments

@martinduke
Copy link
Contributor

I would like to see some language in the loss recovery document about client actions when the first handshake message is lost. We have overloaded this loss signal with multiple meanings/responses:

(1) Retransmit (due to garden-variety network loss)
(2) Change MTU and retransmit (due to MTU problems, though we might see ICMP here?)
(3) Failover to TCP (middleboxes eating QUIC)
(4) Give up (path failure)

If I were implementing a client using these documents, I am not sure how I would handle a CHLO loss given these conflicting imperatives. I could accept having SHOULDs instead of MUSTs, but there ought to be something.

@ianswett ianswett self-assigned this Jan 17, 2017
@mnot mnot added design An issue that affects the design of the protocol; resolution requires consensus. -recovery labels Jan 19, 2017
@martinduke
Copy link
Contributor Author

There is a fifth (extremely improbable) possibility: the chosen connection ID happens to have collided with a connection ID already active on the server, failed decryption, and been dropped. It might be good to change the connection ID on subsequent ClientHellos.

@ianswett
Copy link
Contributor

Changing the connection id has a few negatives. One is that if the first packet isn't lost, it would create two connections. The second is that if the CHLO is lost, and the 0RTT packets are not, the second CHLO is for a different connection, so the 0RTT packets are useless.

@martinduke
Copy link
Contributor Author

Good points, there are various considerations. I know that in some prior iteration Stateless Rejects proposed a new Connection ID, but that doesn't help us here.

Changing it on retransmission #1 is too much, for sure. Perhaps at some later stage, after multiple CHLO retransmissions, the 0RTT data is more or less dead anyway. As the least probable cause, the response can come as a last-ditch effort.

We don't have a multipath draft in scope, but if there was some sort of mechanism to report available addresses, that would allow us to distinguish these packets as bad-luck CHLOs and SREJ them.

@mnot
Copy link
Member

mnot commented Jan 26, 2017

As discussed in Tokyo, (2) is addressed by packet size being 1280, (3) is an application issue, and (1) and (4) should be addressed by retransmitting a number of times and then aborting, a la TCP.

@martinthomson
Copy link
Member

@ianswett, do you consider this to be closed now?

@ianswett
Copy link
Contributor

Yes, I meant to close it with my PR.

@mnot mnot removed the editor-ready label Mar 7, 2017
@mnot mnot added the has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list. label Apr 19, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
-recovery design An issue that affects the design of the protocol; resolution requires consensus. has-consensus An issue that the Chairs have determined has consensus, by canvassing the mailing list.
Projects
None yet
Development

No branches or pull requests

4 participants