- eliminate 200ms "slop" when calculating RTO
- correct the code so that it accurately reflects the comment and set TCPTV_MIN to 3 ticks not whatever hz/33 happens to be
- per RFC 6298 reduce default RTO TCPTV_RTOBASE 3->1
- reduce delack time to more common 40ms
- track delack separately so that it is at most 1/2 RTO
A couple of comments in-line after a very quick glance. I'll try to take a better look next week.
Thanks for your work.
You may want to remove
#define TCPTV_CPU_VAR ( hz/5 ) /* cpu variance allowed (200ms) */
from tcp_timer.h probably as this was the only reference?
Is tracking this in tcpcb required?
In this and similar instances, replace tp->t_rttmin with max(tp->rttmin, TCPTV_MIN), and initialize tcp_rexmit_min = 10 * TCPTV_MIN for example.
Setting the delayed ack timeout dynamically to a session-specific value should be discussed as a separate topic and not bundled like this.
fixed by D18941
This won't actually change the absolute minimum. Only the default minRTO (which is exposed as sysctl nowadays).
Still valuable to make sure minrto doesn't fall below 2 or 3 ticks (there are no such precautions in the current stack, other than rto_slop)
Taking this out into D23281