Hi all,
My current project relies heavily on Quinn. Thanks for a great library.
Because of a specific WAN bulk-transfer need, I have been experimenting with BBRv2 support in a fork. The prototype currently includes:
- selectable BBRv2 alongside the existing BBR path
- round-bounded loss classification
- inflight_hi / inflight_lo and bw_hi / bw_lo bounds
- packet-derived delivery-rate sampling
- first-class ECN/loss signal plumbing
- a guarded experimental flag for the more aggressive inflight_hi shrink path
- 29 focused BBR unit tests
The branch is here if useful:
https://github.com/JavaPerformance/quinn/tree/bbrv2-prototype
I am not assuming this is PR-ready. Before spending time turning it into upstreamable patches, I wanted to ask about the preferred direction.
One specific API question: current Quinn main exposes ECN through is_ecn: bool on Controller::on_congestion_event. In the prototype I used a typed congestion event enum internally/to the controller because it made BBRv2 loss-vs-ECN handling clearer.
Would you prefer any BBRv2 work to build on the existing is_ecn API, or would a richer typed congestion event be worth discussing?
If there is interest, I am happy to split this into smaller PRs, probably starting with either the congestion-event API question or the sent-packet/rate-sampling pieces.
No pressure either way. If this is out of scope for Quinn right now, I am also happy to keep it fork-local.
Paul
Hi all,
My current project relies heavily on Quinn. Thanks for a great library.
Because of a specific WAN bulk-transfer need, I have been experimenting with BBRv2 support in a fork. The prototype currently includes:
The branch is here if useful:
https://github.com/JavaPerformance/quinn/tree/bbrv2-prototype
I am not assuming this is PR-ready. Before spending time turning it into upstreamable patches, I wanted to ask about the preferred direction.
One specific API question: current Quinn
mainexposes ECN throughis_ecn: boolonController::on_congestion_event. In the prototype I used a typed congestion event enum internally/to the controller because it made BBRv2 loss-vs-ECN handling clearer.Would you prefer any BBRv2 work to build on the existing
is_ecnAPI, or would a richer typed congestion event be worth discussing?If there is interest, I am happy to split this into smaller PRs, probably starting with either the congestion-event API question or the sent-packet/rate-sampling pieces.
No pressure either way. If this is out of scope for Quinn right now, I am also happy to keep it fork-local.
Paul