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

Remove incorrect spurious migration handling #1144

Merged
merged 1 commit into from
Jun 14, 2021
Merged

Conversation

Ralith
Copy link
Collaborator

@Ralith Ralith commented Jun 13, 2021

This case is handled by the usual path validation timeout, and by the ACK elicited from the peer by a PATH_CHALLENGE on a legitimate path.

Context:
§9.3.2:

To protect the connection from failing due to such a spurious
migration, an endpoint MUST revert to using the last validated peer
address when validation of a new peer address fails.

§9.3.3:

In response to an apparent migration, endpoints MUST validate the
previously active path using a PATH_CHALLENGE frame. This induces
the sending of new packets on that path.

§1.2:

Ack-eliciting packet: A QUIC packet that contains frames other than
ACK, PADDING, and CONNECTION_CLOSE.

§9.1

PATH_CHALLENGE, PATH_RESPONSE, NEW_CONNECTION_ID, and PADDING frames
are "probing frames", and all other frames are "non-probing frames".

§9.2

An endpoint can migrate a connection to a new local address by
sending packets containing non-probing frames from that address.

So if a spurious migration occurs, we (already) send a PATH_CHALLENGE on the previous path, the peer ACKs it, and that non-probing packet triggers a new migration back to the legitimate path. Or, alternatively, the path validation timer expires for the new path and we revert to the legitimate one.

Thanks to @Matthias247 for helping identify this!

This case is handled by the usual path validation timeout, and by the
ACK elicited from the peer by a PATH_CHALLENGE on a legitimate path.
@djc djc merged commit ab9794a into main Jun 14, 2021
@djc djc deleted the tweak-spurious-migration branch June 14, 2021 05:16
@djc
Copy link
Member

djc commented Jun 14, 2021

Nice work!

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

Successfully merging this pull request may close these issues.

2 participants