-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
add BBR congestion algorithm from quiche #1888
Conversation
…0 to 2000 as the same value from chromium.
…ace, call the OnCongestionEvent() instead of OnPacketAcked/Lost().
Thanks for your pull request. It looks like this may be your first contribution to a Google open source project (if not, look below for help). Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). 📝 Please visit https://cla.developers.google.com/ to sign. Once you've signed (or fixed any issues), please reply here (e.g. What to do if you already signed the CLAIndividual signers
Corporate signers
ℹ️ Googlers: Go here for more info. |
Codecov Report
@@ Coverage Diff @@
## master #1888 +/- ##
==========================================
- Coverage 86.43% 80.27% -6.17%
==========================================
Files 98 102 +4
Lines 6701 7231 +530
==========================================
+ Hits 5792 5804 +12
- Misses 651 1164 +513
- Partials 258 263 +5
Continue to review full report at Codecov.
|
CLAs look good, thanks! ℹ️ Googlers: Go here for more info. |
Is that possible to merge this PR? Do you have any comments on that? |
Wow this is exciting to see! I'm going to try this on one of our LTE links tomorrow. |
Did some quic(k) testing on an LTE link:
Looks a little choppy... I'm running TCP BBR and it's achieving roughly the same throughput as the cubic flow from quic-go. |
Hi @jared2501 , Thanks for testing. I did same test before, it has better performance when transfer data from two different region, from Tokyo to US West. Any comments or suggestion, pls let me know. I want more people helping me to make this better. |
Hello @fbzhong, thank you for this PR! BBR has been on our TODO list for a long time already. However, at this moment, we're in the process of getting Reno right first, which takes a lot of effort. I started working on a benchmarking suite for quic-go, but it doesn't include a lot of scenarios yet, and will need A LOT more work. Congestion control is complicated and far from straightforward to test. There are a lot of corner cases which are difficult to simulate, but which have to be included in any fair comparison between different congestion control algorithms. I'd therefore like to focus on getting one congestion control algorithm up to speed. Adding additional congestion controllers at this point would just increase our technical debt, so I hope you can understand that we're not going to merge your PR. |
Hi @marten-seemann, Good to know. Let me know if I could help. And I will keep sync my BBR repo, I am using it now :) |
@fbzhong Looks a little choppy +1 , any sync from ur BBR repo so far ? it's make sense of data transfer under high latency/ high loss may be upgrade to BBR2 alpha? |
@Zeymo So far no plan to keep sync with latest quic-go. |
@fbzhong duplicate variable of |
Hi,
I am trying to implement bbr algorithm support from chromium to quic-go. Currently I migrated the current bbr src (bbr_sender.cc) to quic-go.
Which version of BBR?
https://quiche.googlesource.com/quiche.git/+/66dea072431f94095dfc3dd2743cb94ef365f7ef/quic/core/congestion_control/bbr_sender.cc
How to enable BBR?
set GODEBUG=bbr=1 to enable, otherwise cubic will be the default congestion algorithm.
Sorry, so far there is no unit tests. However I already used the BBR version in my own private project. It works well, significantly faster than cubic.
For an instance, I try send data from AWS US server to AWS JP server, both servers are t2.small. The rate of Cubic is 75Mbps, and the rate of BBR is 85Mbps.
According to the src from Chromium, those developers are experiencing different configs of BBR. I'd like to try those different configs. However right now it looks hard to pass config values to congestion algorithm. I hope we may find a way to do that.
Any comments, please let me know.