-
Notifications
You must be signed in to change notification settings - Fork 244
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
Added several congestion control algorithms #402
Conversation
I really appreciate the work that has gone into this! However it's a HUGE pull request, and I think we should focus on adding one new CC method at a time, with extensive unit tests. From what you've observed what would be the best algorithm to add first? |
Hi, From what I have seen, cubic should be the first to be included according to me. BBR and BBRv2 are mostly experimental, and there isn’t really any tests that can be performed to check if it behaves as it should (at least for the moment). Cubic seems thus to be the best choice, as it is much simpler, as well as being easier to test (actually, a test was already implemented to see if the growth of the cwnd correspond to the W function of the mathematical model). Apart from that, I didn’t find any test to perform, as this field of research (verification of congestion control) isn’t much developed from what I’ve heard. |
Great, let's focus on |
I’ve opened a new PR (#415) with the needed changes normally |
Hi @Aperence, if it's OK with you I suggest we close this PR and if you want to add another algorithm you open a specific PR? |
Yes, it seems fine to me 👍 |
Hi,
I've added the following congestion control algorithms to aioquic : cubic, bbrv1, bbrv2.
Cubic was tested, while bbrv1/2 was only implemented, and verified graphically, but no formal verification was done.
I also ran an interop test with cubic to ensure that the implementation wasn't broken after my modifications, here are the results. Overall, an average gain of 67kbps was observed for crosstraffic, and the implementation seemed to work still fine (Note: quinn seems to have a problem with cubic, but it is surely due to the way they handle the acks that doesn't work well with cubic).
Also I added hystart++ as a choice for the slow start algorithm.
To choose a congestion control algorithm, just fill the parameter in the config with the congestion control you want to use. For example:
Here are example on how cubic and bbr perform for the growth of cwnd: