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

Question about running multiple congestion control algorithms at the same time #96

Closed
BobAnkh opened this issue Aug 2, 2021 · 2 comments

Comments

@BobAnkh
Copy link

BobAnkh commented Aug 2, 2021

About running multiple algorithms at the same time, I have read #85, but I wonder if there is an easier way for me to perform multiple emulation experiments at the same time without modifying the source code?

Algorithms implemented use args like --ipc netlink, does it mean that I cannot run multiple ccp_kernel to perform multiple CCAs at the same time?

Or which file in source code should I modify to support this feature?

@akshayknarayan
Copy link
Member

You are correct that you cannot run multiple instances of ccp_kernel. ccp_kernel is a kernel module that provides (from the kernel's perspective) a congestion control implementation.

There is, however, RunBuilder. Using additional_alg() (https://docs.rs/portus/0.6.1/portus/struct.RunBuilder.html#method.additional_alg), it is possible to register other cc implementations and run them according to the "alg" parameter in the create message: https://github.com/ccp-project/portus/blob/master/src/run.rs#L602.

For ccp-kernel specifically, this field is hard-coded: https://github.com/ccp-project/ccp-kernel/blob/master/tcp_ccp.c#L329. If you have a specific way to assign congestion control algorithms to flows already, then you have two options:

  1. You could modify ccp-kernel to pass the name of a congestion control algorithm to ccp, and register those algorithms with the above additional_alg() method.
  2. You could write a CCA implementation that calls into other algorithms' implementations from the new_flow() method: https://docs.rs/portus/0.6.1/portus/trait.CongAlg.html#tymethod.new_flow. This method gets the following information about the flow: https://docs.rs/portus/0.6.1/portus/struct.DatapathInfo.html which you could use to instantiate a CCA's flow type accordingly.

@BobAnkh
Copy link
Author

BobAnkh commented Aug 6, 2021

Ok, many thanks for your kind help and detailed guidance @akshayknarayan . I will try to see if I can do this later.

@BobAnkh BobAnkh closed this as completed Aug 6, 2021
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

No branches or pull requests

2 participants