Title: implement BBRv3 · Issue #4565 · quic-go/quic-go · GitHub
Open Graph Title: implement BBRv3 · Issue #4565 · quic-go/quic-go
X Title: implement BBRv3 · Issue #4565 · quic-go/quic-go
Description: 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 multi...
Open Graph Description: 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 plugga...
X Description: 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 trul...
Opengraph URL: https://github.com/quic-go/quic-go/issues/4565
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"implement BBRv3","articleBody":"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.\r\n\r\nIn 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.\r\n\r\nUnfortunately, 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.\r\n\r\nImplementing 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:\r\n- A specification. I don't want to just blindly copy-paste Chrome code and translate it to Go.\r\n- A _production_ setup capable of generating meaningful metrics.\r\n \r\nFor 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.\r\n\r\n---\r\n\r\n**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.","author":{"url":"https://github.com/marten-seemann","@type":"Person","name":"marten-seemann"},"datePublished":"2024-06-11T04:58:19.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":6},"url":"https://github.com/4565/quic-go/issues/4565"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:12739bb5-34ca-723e-8672-fca1ff0bde41 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | B9FA:181326:4495090:5A16676:6992EACD |
| html-safe-nonce | 49d1968b6383ec49575c3009f8457cb4a07c6da1afbfcd8f4f52c3fbe65e2cb5 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCOUZBOjE4MTMyNjo0NDk1MDkwOjVBMTY2NzY6Njk5MkVBQ0QiLCJ2aXNpdG9yX2lkIjoiMjM3NTA4MjI5MDQzMjg5NTY5MyIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | ba8e58fb5e863ecb9693443059fb296f6c19b48e2139fe44cdbd0b56e75aec1a |
| hovercard-subject-tag | issue:2345392602 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/quic-go/quic-go/4565/issue_layout |
| twitter:image | https://opengraph.githubassets.com/0d214aafb9d98db7cc30c8ec68d4fad5ba09ee3e0832a53ce8f06b77cbbbdebb/quic-go/quic-go/issues/4565 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/0d214aafb9d98db7cc30c8ec68d4fad5ba09ee3e0832a53ce8f06b77cbbbdebb/quic-go/quic-go/issues/4565 |
| og:image:alt | 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 plugga... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | marten-seemann |
| hostname | github.com |
| expected-hostname | github.com |
| None | 42c603b9d642c4a9065a51770f75e5e27132fef0e858607f5c9cb7e422831a7b |
| turbo-cache-control | no-preview |
| go-import | github.com/quic-go/quic-go git https://github.com/quic-go/quic-go.git |
| octolytics-dimension-user_id | 117172986 |
| octolytics-dimension-user_login | quic-go |
| octolytics-dimension-repository_id | 55637575 |
| octolytics-dimension-repository_nwo | quic-go/quic-go |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 55637575 |
| octolytics-dimension-repository_network_root_nwo | quic-go/quic-go |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 84dcb133269e3cfe6e0296cc85fbacb92cae92bb |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width