RFR: 8371475: HttpClient: Implement CUBIC congestion controller [v3]
Daniel Jeliński
djelinski at openjdk.org
Wed Nov 12 15:13:18 UTC 2025
>> CUBIC is a standard TCP congestion control algorithm that uses a cubic function instead of a linear congestion window increase function to improve scalability and stability over fast and long-distance networks. CUBIC has been adopted as the default TCP congestion control algorithm by the Linux, Windows, and Apple stacks.
>
> This PR adds a new congestion controller algorithm. It reuses a large part of the QuicRenoCongestionController, which was refactored to two classes - QuicBaseCongestionController, containing the shared code, and QuicRenoCongestionController, containing only the code that is unique to Reno.
>
> CUBIC is now the default congestion controller. Reno can still be selected by setting the system property `jdk.httpclient.quic.congestionController` to `reno`.
>
> A new test was added to exercise the new congestion controller. Existing tests continue to pass.
Daniel Jeliński has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 24 commits:
- Update test comments
- Convert CubicTest to JUnit
- Merge declaration and assignment
- More aggressive target growth
- Merge remote-tracking branch 'origin/master' into quic-cubic
- Make classes final
- Rename system property to internal
- Add a system property to select congestion controller
- Implement fast convergence
- Add comments
- ... and 14 more: https://git.openjdk.org/jdk/compare/1f1f7bb4...195b0f89
-------------
Changes: https://git.openjdk.org/jdk/pull/28195/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=28195&range=02
Stats: 970 lines in 6 files changed: 709 ins; 254 del; 7 mod
Patch: https://git.openjdk.org/jdk/pull/28195.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/28195/head:pull/28195
PR: https://git.openjdk.org/jdk/pull/28195
More information about the net-dev
mailing list