Page MenuHomeFreeBSD

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

Authored by rscheff on Aug 6 2020, 3:20 PM.

Details

Summary

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

Lint
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 32811
Build 30227: arc lint + arc unit