Page MenuHomeFreeBSD

Fixing the DSACK code to properly clean up after sending a DSACK.

Authored by rrs on Jul 10 2019, 9:13 PM.



The DSACK RFC is quite clear that you only send a DSACK block
once for every received packet. The current implementation of DSACK
on FreeBSD has a flaw in that it only uses new data from a client to
drive it to clean up a DSACK block. This is incorrect, and instead
after a successful transmit any DSACK blocks should be purged.

wIthout this fix once you receive (as a server) a DSACK block
you may get it multiple times.

Test Plan

We have been now running with this at NF for at least a week and
validated that we no longer see the same DSACK sent out multiple
times without having received the same data multiple times.

Diff Detail

Lint Skipped
Unit Tests Skipped

Event Timeline

rscheff added a subscriber: rscheff.

Sorry for the oversight; Indeed I tested this with continous data from the receiver only, not when the data direction changes :(

This revision is now accepted and ready to land.Jul 11 2019, 4:18 AM
This revision was automatically updated to reflect the committed changes.