-
Notifications
You must be signed in to change notification settings - Fork 17
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
Conversation
There was a problem hiding this 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
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 |
There was a problem hiding this comment.
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?
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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 :-)
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
Co-authored-by: Quentin De Coninck <quentin.deconinck@uclouvain.be>
After author discussion: we need to also add a sentence about control frames |
draft-ietf-quic-multipath.md
Outdated
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. |
There was a problem hiding this comment.
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.
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 |
There was a problem hiding this comment.
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...
There was a problem hiding this 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.
Co-authored-by: Quentin De Coninck <quentin.deconinck@uclouvain.be>
This seems ready to merge. Plan is to merge end of tomorrow (Friday). |
There was a problem hiding this 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.
No description provided.