Bugzilla – Bug 1506
data segment which is piggybacking acknowledgement should not be considered to be a duplicate ack.
Last modified: 2012-09-20 10:20:05 UTC
Reported by Ville Saarinen I just compared some live network TCP traffic to my simulated traffic and discovered a weird issue with TCP. It seems that retransmissions are triggered every time three segments with same ack values are received, even if the segment contains data. However, as far as I understood the TCP specifications, data segment which is piggybacking acknowledgement should not be considered to be a duplicate ack. This "feature" causes quite many retransmissions, in case that the data transfer is bidirectional. For example, let's say we have endpoints A and B, and B sends approximately three times more much TCP segments than A. Now, if A sends a data segment to B, B doesn't send individual ack, but instead it acks the packet by sending the acknowledgement piggybacked with the data segments. Now, if B sends 3 data segments with the same ack number, and these segment reach A not until A sends new segment with new sequence number, A thinks that there's a lost packet and triggers a retransmission.
fixed: changeset 9078:11ac313c0610