Page MenuHomeFreeBSD

TCP Cubic: Have Fast Convergence Heuristic work for ECN, and align concave region

Authored by rscheff on Aug 6 2020, 3:20 PM.
Referenced Files
Unknown Object (File)
Tue, Jan 10, 3:35 PM
Unknown Object (File)
Wed, Jan 4, 1:24 AM
Unknown Object (File)
Sun, Jan 1, 5:16 PM
Unknown Object (File)
Thu, Dec 29, 11:33 PM
Unknown Object (File)
Dec 13 2022, 12:51 AM



While looking closely at the behavior with D25746, we found
that cubic would regularly burst out new data at line rate right
after the very first time, slow-start ends at the start of a session.

This was due to the cubic concave region not being aligned nicely when
setting ssthresh to 50% rather than 70%, and retaining the higher prior
cwnd as max_cwnd. Adjusting max_cwnd by 70% aligns the cubic concave
region nicely.

Minor improvements include retaining the cubic t_last_cong during ECN
as when the ECN was processed, rather than when congestion recovery (of ECN)
finishes, and moving the Fast Convergence Heuristic from post_recovery
into when ssthresh is recalculated at the beginning of the congestion.

Thanks to Cheng Cui for finding these issues and providing necessary fixes.

Test Plan

Performed multiple unit tests and inspected the evolution
of the cubic-internal state across packet loss scenarios.

Diff Detail

rS FreeBSD src repository - subversion
Lint Not Applicable
Tests Not Applicable