On Wed, 12 Nov 2025 15:13:18 GMT, Daniel Jeliński <[email protected]> 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

src/java.net.http/share/classes/jdk/internal/net/http/quic/QuicBaseCongestionController.java
 line 58:

> 56:     private static final int MAX_BYTES_IN_FLIGHT = Math.clamp(
> 57:             Utils.getLongProperty("jdk.httpclient.quic.maxBytesInFlight", 
> 1 << 24),
> 58:             1 << 14, 1 << 24);

Utils#getIntegerNetProperty(String property, int min, int max, int 
defaultValue, boolean log)

does clamping, and supports logging on invalid input. AFAICS, 
`Utils::getLongProperty` was introduced with HTTP/3, yet lacks the versatility 
of `getIntegerNetProperty`. @dfuch, is this a room for improvement, or is it 
not worth the code churn?

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/28195#discussion_r2521788316

Reply via email to