Skip to content

BBRv2 #2619

@JavaPerformance

Description

@JavaPerformance

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions