RFR: 8371475: HttpClient: Implement CUBIC congestion controller [v3]
Daniel Jeliński
djelinski at openjdk.org
Wed Nov 12 15:24:33 UTC 2025
On Wed, 12 Nov 2025 15:13:18 GMT, Daniel Jeliński <djelinski at openjdk.org> wrote:
>>> 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
Thanks @AlanBateman @vy for the reviews.
The property was not meant to be exposed; IMO CUBIC is superior to Reno in all aspects that matter. I renamed it to include `internal`.
We will probably need to revisit the configuration if and when we implement BBR, but we aren't quite there yet.
-------------
PR Review: https://git.openjdk.org/jdk/pull/28195#pullrequestreview-3453025390
More information about the net-dev
mailing list