> Hi Andi,
> Thanks for your comments and your help.
> I'm aware to RFC 793 statement regarding to ACK.
> My problem is that these piggyback ACK can cause duplicate ACK and therefor
> invoke the
> Fast Retransmit mechanism.
> Consider the following situation when the sender send TCP segment and the
> receiver send
> Then the sender send another 3 (or more) segments, and meanwhile it receives 3
> piggyback ACKs that have been sent by the receiver (i.e. the receive send 3
> TCP frame
> before it receives the 3 packets that has been sent by the Sender).
> The sender can assume that these ACKs are duplicate ACK and therefor it
> enters into
> Fast Retransmit although it shouldn't
Fast retransmit is not invoked in that case, since we dont consider it
a duplicate ack if it were piggybacked on data.
When we process an incoming ack (regardless of fast path or slow, we end
up in tcp_ack()). If the incoming frame contained data, or if the ack
was a window update, and of course if the ack acknowledged new data or
a SYN, we wouldnt consider it a dubious ack and wouldnt fall into
some fairly complex processing that leads to fast retransmit...
Are you seeing retransmissions and fast retransmits? You can look at
/proc/net/netstat and see the TCPFastRetrans counter, for example, and
determine if thats happening. There are some other useful counters
in /proc/net/netstat that might be interesting..
Hope that helps,