Bug 1506

Summary: data segment which is piggybacking acknowledgement should not be considered to be a duplicate ack.
Product: ns-3 Reporter: Brian Swenson <bswenson3>
Component: tcpAssignee: Brian Swenson <bswenson3>
Status: RESOLVED FIXED    
Severity: normal CC: bswenson3, ns-bugs
Priority: P5    
Version: ns-3.15   
Hardware: All   
OS: All   

Description Brian Swenson 2012-09-18 12:42:50 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.
Comment 1 Brian Swenson 2012-09-20 10:20:05 UTC
fixed:  changeset 9078:11ac313c0610