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

Managing ACK and repeat of PATH_CID_BLOCKED frame #485

Open
huitema opened this issue Feb 2, 2025 · 5 comments · May be fixed by #486
Open

Managing ACK and repeat of PATH_CID_BLOCKED frame #485

huitema opened this issue Feb 2, 2025 · 5 comments · May be fixed by #486
Labels

Comments

@huitema
Copy link
Contributor

huitema commented Feb 2, 2025

Suppose that the packet carrying a PATH_CID_BLOCKED frame is lost. How does the implementation decide whether that frame should be repeated?

For the paths blocked frame, we have a good logic: if a the packet containing a path blocked frame is lost, compared the "pax path id" in the blocked frame to the highest value of the max path id in a PATHS_BLOCKED frame acknowledged by the peer. If the value is higher than the retained value, repeat. Otherwise, don't. But we don't have anything like that for the PATH_CID_BLOCKED blocked frame.

One possibility is to repeat it no matter what, but this may create extra traffic. Another is to never repeat it, but that means losing the signal. Yet another would be to remember if the PATH_CID_BLOCKED frame for that path was already acknowledged, but what if we need to send several such frames for the same path over time? We could also test whether the path is still blocked.

I think this is a bit under-specified.

@huitema
Copy link
Contributor Author

huitema commented Feb 2, 2025

The way I implemented it is as follow:

  1. when the application sends a PATH_CID_BLOCKED frame, set a flag in the path context, "currently sending a path CID blocked frame"

  2. When an ACK for the packet carrying the frame is received, clear that flag.

  3. If a packet carrying a PATH_CID_BLOCKED frame is lost, check whether the path still exists (it may have been abandoned and deleted) and whether the flag is set. If both conditions are true, repeat the frame, otherwise just forget it.

@mirjak
Copy link
Collaborator

mirjak commented Feb 3, 2025

Actually we don't even say that PATH_CID_BLOCKED and PATHS_BLOCKED (as well as MAX_PATH_ID btw) are ack-eliciting. So we should fix that.

Not sure we need to specify the retransmission behavior in detail but probably need to say something, maybe just like: MAY retransmit if still blocked. (For MAX_PATH_ID it's probably a SHOULD or even MUST retransmit?)

@mirjak
Copy link
Collaborator

mirjak commented Feb 4, 2025

I created PR #486. Please review if this is sufficient.

@mirjak mirjak added the has PR label Feb 4, 2025
@gloinul
Copy link

gloinul commented Feb 6, 2025

I can see that one could trip over the uncertainty with Path_CID_BLOCKED. I would think that including in addition to the path ID also the highest current CID sequence number would resolve the uncertainty for the receiver.

@mirjak
Copy link
Collaborator

mirjak commented Feb 19, 2025

I also created PR #492 to add a Maximum Sequence Number field. In case people think this is a good idea.

However, I also discussed this a bit further with Magnus and we were less sure if this frame is really needed. Any other thought on this after people have implemented it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants