Huge thanks to our Platinum Members Endace and LiveAction,
and our Silver Member Veeam, for supporting the Wireshark Foundation and project.

Wireshark-users: [Wireshark-users] TCP Upload: Slowstart, then strange stop-and-wait...Huh?

From: "Robert Hoffmann" <robert@xxxxxxxxxxxxxxxx>
Date: Sat, 8 Dec 2007 16:22:40 +0100
Title: TCP Upload: Slowstart, then strange stop-and-wait...Huh?

Hello,

When uploading data with a HTTP POST to a server, traces of the TCP communication look curious from my point of view.
After initiation, my computer (WinXP) does a proper slowstart, increasing the congestion window by 1 every received ACK. At a certain value (which might be threshold), my computer shows a strange stop-and-wait behaviour:

1.) It stops sending TCP segments until all outstanding ACKs from slowstart have been received.
2.) It sends 6-20 segments (static value that seems to change with bandwidth; 6 segments on a connection with very small upload, 20 on a 1MBit upload.) in row.

3) It waits until all ACKs for the segements sent in 2.) have been received (often that's 250 ms doing nothing at all!).

4) It sends 6-20 segments and so on until the file has been sent completely.

Now what's that? During slowstart, sending data and receiving ACKs happens at the same time which makes sense since it improves throughput. But once we leave slowstart, my computer sends spikes of data with great wait times between. Where's the sense in that? As far as I learned it at university, my computer should act like during slowstart; just the way the congestion window size is determined changes.

I see this happen on two different computers with different internet connections. In additon, the congestion window itself never changes beyond those 6-20 packets so I wonder why it is stopping at that specific value (who or what determines that?). Shouldn't we expect it to increase until there are segement losses?

I'd greatly appreciate it if anyone had an explanation for that!

Thanks in advance!

Regards,


Robert