-
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
Should active_connection_id_limit be per path or per connection? #332
Comments
I would be inclined to mint a separate transport parameter here. The number of CIDs an endpoint is committing to manage is |
To give a bit more detail: active_connection_id_limit controls the maximum number of CIDs to ensure that the other end cannot force you to allocate a huge amount of memory to store the CIDs. This is still the same with use of a path ID; the only thing that is different is that you have to store a path ID in addition to the CID. However, controlling the max number of CIDs is still the way to control how much memory needs to be allocated. Additional path state beyond the CIDs only need to be created when a path is actually opened. An endpoint needs to also control the maximum number of open paths, however, first of all active_connection_id_limit give a maximum for that as well and second when the same path ID is used in both direction each endpoint can control the number of maximum path individually without the need to communicate this to the other end by not issuing more path IDs. In practice we should recommend that each endpoint locally decides how many paths it is willing to maintain at max and then we recommend to set the active_connection_id_limit parameter to local_max_path * 2 to still allow for migration on each path. Similarly the other end can look at the active_connection_id_limit parameter from the other peer and issue at least active_connection_id_limit/2 path ID if its own local limit allows that. About @MikeBishop point, I don't think it's really needed to control the active_connection_id_limit value very tightly. It's more important to have a limit at all. So if you select a value for multipath support and only get single path, you might get more CIDs then you need to but its the same amount of ressources you committed to. I don't think that is really a problem. Note that in this case it would maybe also make sense to maintain only one sequence number space for all CIDs instead of per path. This question can be decided independently, even though it supports the same idea, I opened issue #371 for the this. |
I think it's clear that the active_connection_id_limit need to be per path. We've already discussed this issue in PR #292 and I'd like to provide more details about this issue:
On conclusion, it's simple and clear to use the TP active_connection_id_limit for per path. We could add more editorial texts to explain this part of design if needed. |
Discussed during interim: general sense that its ok to leave things as is. CID allocations strategirs came up, see minutes and chat for more details. Outcome: issue consensus call to close this issue with no action |
With PR #292 we changed the active_connection_id_limit to be now per path. Is that really necessary or the correct thing to do?
If we can keep active_connection_id_limit to limit the total numbers of CID an endpoint is willing to maintain (because maintaining with or without a path ID associated to the CID is not really a difference), each endpoint can still control the maximum number of paths by announcing CIDs respectively.
The text was updated successfully, but these errors were encountered: