Page MenuHomeFreeBSD

cc_cubic: sync to the new specification of RFC9438 for TCP CUBIC.
Needs ReviewPublic

Authored by cc on Mar 27 2025, 5:20 PM.
Tags
None
Referenced Files
Unknown Object (File)
Mon, May 12, 5:06 AM
Unknown Object (File)
Mon, May 5, 8:33 PM
Unknown Object (File)
Tue, Apr 29, 5:53 AM
Unknown Object (File)
Sat, Apr 26, 9:30 AM
Unknown Object (File)
Fri, Apr 25, 1:52 PM
Unknown Object (File)
Fri, Apr 25, 7:31 AM
Unknown Object (File)
Tue, Apr 22, 7:14 AM
Unknown Object (File)
Mon, Apr 21, 4:58 PM
Subscribers

Details

Reviewers
glebius
rrs
rscheff
tuexen
Group Reviewers
transport
Summary

highlighted changes

  1. change the type of these CUBIC windows to uint32_t from uint64_t
  2. sync to the updated formulas in RFC9438 and carefully handles these units (segments or bytes)
  3. remove un-used function reno_cwnd()

change detail in cc_cubic.h

  1. Updated cubic_k with the new formula in the RFC. It additionally uses cwnd_epoch for calculating K.
  2. Also updated these theoretical formula functions in userland.

change detail in cc_cubic.c

  1. cubic_cong_signal() now just flag the event and let the epoch start/re-start at the beginning of the current congestion avoidance phase in cubic_ack_received().
  2. Increase the cwnd only by (target - cwnd) / cwnd with a restrictive target formula from the RFC. This shall further smooth the cwnd growth, as observed in the default stack.
  3. Remove the obsolete hack for probing W_max in early congestion avoidance phase if used an old ssthresh from hostcache.
  4. Also remove the obsolete hack that aligns the concave region after the first congestion event.

reference: https://reviews.freebsd.org/D41715

Test Plan

Tests coverage is in this wiki page. testD49540

No performance regression is found yet. Further tests about performance improvement is still under discovery.

Please let me know if I missed anything or any additional test case to cover.

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 63158
Build 60042: arc lint + arc unit