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

implement BBRv3 #4565

Open
marten-seemann opened this issue Jun 11, 2024 · 2 comments
Open

implement BBRv3 #4565

marten-seemann opened this issue Jun 11, 2024 · 2 comments

Comments

@marten-seemann
Copy link
Member

It would be nice to (optionally) have a different congestion controller than NewReno available. I'm skeptical if we can actually provide an interface that's general enough to allow for truly pluggable congestion control (#776), but multiple users have expressed interested in BBR in the past.

In terms of BBR versions, we should support BBRv3, since BBRv1 suffered from (under certain circumstances) severe fairness issues, since it completely disregarded packet loss and ECN. BBRv2 was an improvement over that, but it looks like Google has moved on the v3 now.

Unfortunately, the most recent draft describes BBRv2, is more than 2 years old and has expired: https://datatracker.ietf.org/doc/html/draft-cardwell-iccrg-bbr-congestion-control. While the BBR team at Google regularly updates the ICCRG group at IETF about new developments in BBR-land, I'm not aware of any BBRv3 specification.

Implementing a complex congestion controller like BBR is a massive amount of work, both in terms of initial implementation . At the very least, we'll need:

  • A specification. I don't want to just blindly copy-paste Chrome code and translate it to Go.
  • A production setup capable of generating meaningful metrics.

For anyone commenting here, please don't suggest testing with tc / netem, or just run some transfers between two cloud machines. That's by no means sufficient to evaluate the performance of a congestion controller.


Note: The fact that I'm opening this issue doesn't mean that implementation of BBR will happen any time soon, or at all. There's also little point in sending a massive PR that adds BBR support. Merging a new congestion controller is by no means free, as it commits us to supporting it long term.

@380wmda999
Copy link

quiche There is no branch that implements bbr3 yet. Currently, it seems that only tquic implements bbr3.
it implements by rust:
https://github.com/Tencent/tquic/blob/develop/src/congestion_control/bbr3.rs
but I think its implementation is still in the testing stage...

@marten-seemann
Copy link
Member Author

Google deployed it on both TCP and QUIC (as an experiment, as of IETF 119): https://datatracker.ietf.org/meeting/119/materials/slides-119-ccwg-bbrv3-overview-and-google-deployment-00

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

No branches or pull requests

2 participants