Page MenuHomeFreeBSD

Don't zero out srtt after excess retransmits
ClosedPublic

Authored by rstone on Feb 9 2017, 6:18 PM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, Mar 29, 10:54 AM
Unknown Object (File)
Mar 11 2024, 4:27 AM
Unknown Object (File)
Dec 20 2023, 2:28 AM
Unknown Object (File)
Oct 20 2023, 8:58 AM
Unknown Object (File)
Oct 19 2023, 9:25 PM
Unknown Object (File)
Oct 19 2023, 5:39 AM
Unknown Object (File)
Oct 19 2023, 2:51 AM
Unknown Object (File)
Aug 4 2023, 10:10 PM
Subscribers

Details

Summary

If the TCP stack has retransmitted more than 1/4 of the total
number of retransmits before a connection drop, it decides that
its current RTT estimate is hopelessly out of date and decides
to recalculate it from scratch starting with the next ACK.

Unfortunately, it implements this by zeroing out the current RTT
estimate. Drop this hack entirely, as it makes it significantly more
difficult to debug connection issues. Instead check for excessive
retransmits at the point where srtt is updated from an ACK being
received. If we've exceeded 1/4 of the maximum retransmits,
discard the previous srtt estimate and replace it with the latest
rtt measurement.

Diff Detail

Lint
Lint Passed
Unit
No Test Coverage
Build Status
Buildable 7360
Build 7526: arc lint + arc unit

Event Timeline

rstone retitled this revision from to Don't zero out srtt after excess retransmits.
rstone edited the test plan for this revision. (Show Details)
rstone updated this object.
gnn added inline comments.
sys/netinet/tcp_input.c
3497

nit pick. I'd like another set of parens here to group the sub-expressions.

sys/netinet/tcp_timer.h
122

Ooops?

rstone edited edge metadata.
  • fixup! Don't zero out srtt after excess retransmits
gnn added a reviewer: gnn.
This revision is now accepted and ready to land.Feb 11 2017, 4:54 PM
This revision was automatically updated to reflect the committed changes.
lstewart added inline comments.
head/sys/netinet/tcp_input.c
3497 ↗(On Diff #25018)

I realise you're just shuffling around the original logic, but I'm curious if, based on the investigation that led you to this nit, you have any data around why updating the smoothed estimate is appropriate when rxtshift <= 3 but not >3?

head/sys/netinet/tcp_input.c
3497 ↗(On Diff #25018)

No, I have no data that justifies this particular value. It's just what we've always done.