Page MenuHomeFreeBSD

Stop sending tiny new data segments during SACK recovery
Needs ReviewPublic

Authored by rscheff on Tue, Sep 15, 8:46 PM.

Details

Summary

When processing a partial acknowledgment during SACK
loss recovery, the size of the TCP option (in particular,
the timestamp option) was not considered properly.

This would restict the amount of new data to be injected,
but also could lead to the transmission of segments with
little data (a multiple of 12 bytes).

Considering the currently in-use TCP options when
calculating the amount of new data to be injected will
address this issue.

Reported-by: Liang Tian

Test Plan

Establish a TCP session with both SACK and Timestamps
enabled (the vast majority of all sessions in use today).

Simulate two or more non-consecutive packet drops within
a window and validate that new data is no longer injected
with very small segments, provided that the send buffer
is sufficiently full.

Diff Detail

Lint
Lint OK
Unit
No Unit Test Coverage
Build Status
Buildable 33581
Build 30833: arc lint + arc unit

Event Timeline

rscheff created this revision.Tue, Sep 15, 8:46 PM
rscheff requested review of this revision.Tue, Sep 15, 8:46 PM