Page MenuHomeFreeBSD

Don't apply L in congestion avoidance
ClosedPublic

Authored by tuexen on Aug 19 2020, 8:13 AM.

Details

Summary

RFC 3465 defines a limit L used in slow start for limiting the number of acked bytes as described in Section 2.2. This patch ensures that this limit is not also applied in congestion avoidance.
Applying this limit also in congestion avoidance can result in using less bandwidth than allowed.
This issue was reported by l.tian.email@gmail.com on the net mailing list.

Diff Detail

Repository
rS FreeBSD src repository
Lint
Automatic diff as part of commit; lint not applicable.
Unit
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

Looks good - t_bytes_acked is already a "corrected" value to deal with ACK duplication / ACK splitting; During CA, cwnd should grow by 1 MSS every window, and accounting when a window was transferred is t_bytes_acked.

Having had this cap here was certainly not correct, as that prevents proper operation with ACK thinning / ACK suppression (also common in DOCSIS / WLAN environments).

Which makes me wonder, do we have any other aspects of the pluggable congestion control framework, where ACK thinning is not dealt with correctly?

This revision is now accepted and ready to land.Aug 19 2020, 9:06 AM