Page MenuHomeFreeBSD

TCP Dynamic Burst Limit
Needs ReviewPublic

Authored by rscheff_gmx.at on Thu, Jan 31, 6:41 PM.

Details

Reviewers
chengc_netapp.com
Group Reviewers
transport
Summary

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

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 (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5d9f4262b7ea41ca9981cc790e37cca6e37c789e)
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
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 22301
Build 21490: arc lint + arc unit

Event Timeline

rscheff_gmx.at created this revision.Thu, Jan 31, 6:41 PM
Harbormaster completed remote builds in B22301: Diff 53486.

According to this https://www.ietf.org/proceedings/88/slides/slides-88-tcpm-9.pdf Linux - at least at some point - also used a dynamic limit with pipe (inflight) as an input parameter: maxburst = pipe +3.