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

What happens when a CID is retired and no new CID is available anymore #171

Merged
merged 7 commits into from
Mar 10, 2023

Conversation

mirjak
Copy link
Collaborator

@mirjak mirjak commented Feb 21, 2023

No description provided.

draft-ietf-quic-multipath.md Outdated Show resolved Hide resolved
Copy link
Contributor

@qdeconinck qdeconinck left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We definitely need to add some text to better explain what happens in such cases, but I think we need to be a bit clearer on the implicit path closure case (as we may want to explicitly close an available path before idle timeout).

draft-ietf-quic-multipath.md Outdated Show resolved Hide resolved
draft-ietf-quic-multipath.md Outdated Show resolved Hide resolved
E.g this can happen if the Connection ID issuer requests retirement of a
Connection ID using the Retire Prior To field in the NEW_CONNECTION_ID Frame.
If no new connection ID is available anymore, the endpoint cannot send on
this path anymore but has to wait for the idle time-out before closing
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure that the endpoint "has to wait" the idle timeout to close the path. I could also send a PATH_ABANDON to explicitly close the path, right? Instead, do we want to state here that an inactivity larger than the idle timeout implies an implicit path closure?

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Currently it can't send an PATH_ABANDON because if we don't have a CID we don't have a valid path ID.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh indeed, I went too quick on this one :-)

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do mention this issue in #169

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually we could say that the endpoint should first send the path abandoned frame and then the retire CID frame. However, those frames probably don't have to be processed in order and we need to address issue #137 properly. Or alternative you have to wait until the path abandoned frame is ack'ed and then send the retire CID frame but that would introduce a delay. Not sure how bad that is.

draft-ietf-quic-multipath.md Outdated Show resolved Hide resolved
draft-ietf-quic-multipath.md Outdated Show resolved Hide resolved
Co-authored-by: Quentin De Coninck <quentin.deconinck@uclouvain.be>
@mirjak
Copy link
Collaborator Author

mirjak commented Mar 3, 2023

After author discussion: we need to also add a sentence about control frames

draft-ietf-quic-multipath.md Outdated Show resolved Hide resolved
draft-ietf-quic-multipath.md Outdated Show resolved Hide resolved
This can happen if, e.g., the Connection ID issuer requests retirement of a
Connection ID using the Retire Prior To field in the NEW_CONNECTION_ID frame.
If no new connection ID is available anymore, the endpoint cannot send on
this path and is not able to send control frames associated to this path anymore.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given the clarification in #185, Multipath control frames include the DCID sequence number used by their peer. So if an endpoint sends a RETIRE_CONNECTION_ID, it cannot send on that path anymore if it does not have spare CIDs anymore. But when the receiver receives the RETIRE_CONNECTION_ID (which may have issued the NEW_CONNECTION_ID with the increased Retire Prior To beforehand), it cannot send control frames related to that path anymore. I think there is a difference here w.r.t. the current text.

qdeconinck and others added 2 commits March 7, 2023 11:08
note that there is one more paragraph in this section that I didn't update. That paragraph is still correct but might need some rewording given the new text.
by its peer over another path, the endpoint can re-activate the path by
sending a packet with a new Connection ID on that path.

If the sender retires a Connection ID that is still used by
in-flight packets, it may receive ACK_MP frames referencing the retired
Connection ID. If the sender stops tracking sent packets with retired
Connection ID, these would be spuriously marked as lost. To avoid such
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This paragraph is still correct but doesn't fit perfectly anymore. I guess we could try to reword now or later...

@mirjak mirjak requested a review from qdeconinck March 8, 2023 17:35
Copy link
Contributor

@qdeconinck qdeconinck left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we are nearly good, I just suggest to remove a (maybe wrong) precision.

draft-ietf-quic-multipath.md Outdated Show resolved Hide resolved
draft-ietf-quic-multipath.md Outdated Show resolved Hide resolved
draft-ietf-quic-multipath.md Outdated Show resolved Hide resolved
Co-authored-by: Quentin De Coninck <quentin.deconinck@uclouvain.be>
@mirjak
Copy link
Collaborator Author

mirjak commented Mar 9, 2023

This seems ready to merge. Plan is to merge end of tomorrow (Friday).

Copy link
Contributor

@huitema huitema left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, this looks good.

@qdeconinck qdeconinck merged commit b167a40 into main Mar 10, 2023
@mirjak mirjak deleted the mirjak-patch-15 branch March 12, 2024 16:18
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.

None yet

4 participants