Page MenuHomeFreeBSD

tcp: fix RTO ssthresh for non-6675 pipe calculation
ClosedPublic

Authored by rscheff on Feb 14 2024, 12:40 PM.
Tags
None
Referenced Files
F171070763: D43876.id134297.diff
Tue, Sep 8, 12:57 PM
F170992707: D43876.diff
Tue, Sep 8, 1:43 AM
F170923111: D43876.id134296.diff
Mon, Sep 7, 3:17 PM
Unknown Object (File)
Mon, Sep 7, 1:53 PM
Unknown Object (File)
Sat, Sep 5, 1:10 PM
Unknown Object (File)
Sat, Sep 5, 12:21 PM
Unknown Object (File)
Sat, Sep 5, 5:05 AM
Unknown Object (File)
Sat, Sep 5, 2:23 AM

Details

Summary

D43768 has two oversights, affecting the non-default pipe calculation
when RFC6675 (net.inet.tcp.sack.revised) is not active.

  • by the time CC_RTO is processed, the timeout processing routing

already will have pulled back snd_nxt from whereever it was, down
to snd_una.

  • snd_fack is not consistently pulled forward, only during SACK loss

recovery.

While these oversights have the opposite effect (snd_nxt == snd_una
would shrink the pipe, but leaving snd_fack aging (below snd_una),
would increase the non-6675 pipe, the general effect appears to be
an unintended inflated ssthresh.

When the (default) net.inet.tcp.sack.revised pipe calculation is
used, ssthresh will have the intended value (Flight Size * beta)

Diff Detail

Repository
rG FreeBSD src repository
Lint
Lint Not Applicable
Unit
Tests Not Applicable