Page MenuHomeFreeBSD

TCP Dynamic Burst Limit
Needs ReviewPublic

Authored by on Jan 31 2019, 6:41 PM.


Group Reviewers

A very long time ago, the simplistic Burst mitigation of BSD4.3 was commented out

Details are sketchy, but a properly working client sending out a delayed ACK every
other received segment should be fine with the old burst limit of 4.

However, with IW10, the minimum burst size needs to track this. Furthermore,
ACK compressing (
can result in a single ACK only after a high number of segments.

For TCP to maintain reasonably responsive, a minimum number of 2 ACKs per window
is expected - thus a maximum burst limit of cwnd/2.

This patch makes the minimum maxburst value at least as large as the initial window,
and the largest maxbust values - when pipe is equal to half a window - also to cwnd/2.

ToDo: Discuss if initcwnd should be stored in tcpcb directly, when recalculated frequently
in the transmit path.

Diff Detail

Lint OK
No Unit Test Coverage
Build Status
Buildable 22301
Build 21490: arc lint + arc unit

Event Timeline created this revision.Jan 31 2019, 6:41 PM
Harbormaster completed remote builds in B22301: Diff 53486.

According to this Linux - at least at some point - also used a dynamic limit with pipe (inflight) as an input parameter: maxburst = pipe +3.