Page MenuHomeFreeBSD

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

Authored by rrs on Jul 10 2019, 9:13 PM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, Apr 12, 7:40 PM
Unknown Object (File)
Mar 17 2024, 2:59 AM
Unknown Object (File)
Feb 24 2024, 11:03 AM
Unknown Object (File)
Jan 12 2024, 8:47 AM
Unknown Object (File)
Dec 22 2023, 9:38 PM
Unknown Object (File)
Dec 11 2023, 2:55 PM
Unknown Object (File)
Dec 11 2023, 12:14 AM
Unknown Object (File)
Dec 10 2023, 9:08 AM
Subscribers

Details

Summary

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
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.