Re: 2.4 delayed acks don't work, fixed

kuznet
2003-03-18T18:24:05Z

Hello!

> Apparently linux only waits 0.2 at max,

This is not true, the maximum is 0.5 in your case.

> 1) the delayed ack timer destroy the ato value resetting it to the min
> value (40msec) and the quickack mode is activated (pingpong = 0)

This is not true, delack timer inflates ato. pingpong=0 is not quickack
mode, it means that the session is unidirectional stream, which
is correct in your case.

> 2) the pingpong is never re-activated,

It MUST NOT. It is activated on transactional sessions only.

> 3) the ato averaging logic during the packet reception will not inflate
> the ato if "m > ato" which is obviously the case after a delack timer
> triggered and in turn after the ato is been deflated to its min value

When m > ato, the sample is invalid, apparently it is triggered by
a random delay at sender. When real ato increases, increase
is made in delack timer, not through estimator.

> 4) the logic that bounds the delayed ack to the srtt >> 3 looks also
> risky, using the rto looks much safer to me there, to be sure
> those delacks aren't going to trigger too early

It is necessary to provide more or less sane behaviour on interactive
session when ato > 100msec. Clamping by rto just does not make any sense.

> 5) I suspect the current delack algorithm can wait more than 2 packets,

Yes, when window is not opening, it is not required. Delack is send
when window is advanced.

Shortly, I still do not understand what kind of pathalogy happens in your
case (particularly, difference in adevrtised window before and after
applying your patch is confusing _a_ _lot_, I really would like
to look at larger tcpdump, covering beggining of the sssion),
but all the 5 items are surely wrong.

Unnumbered 6th one may be right, the heuristic with expansion twice
have no explanation, I think it can be relaxed even more.

Alexey