Hi We have been troubleshooting download speed issues for a client of ours. they are using Windows Server 2003 (with Window scaling & Selective ACK turned on). & the client is either Windows XP or Windows 7. We have been carrying out tests by running a test script that downloads a file from one of our Web Servers multiple times & we note the time taken to download the file each time. We have also captured the traffic on the Server & the client during this testing. We can see in the captures that every so often the sending Server waits for approx 5 seconds before continuing to send data. Can anyone explain why this would be? Also, if the Receiver announces a TCP Window Size of Zero, apparently the sender should send a very small packet to prompt the receiver to re-announce the Window size. how long does it wait before sending this packet? Many thanks Ian asked 01 Jul '11, 07:45 ipittam |
2 Answers:
Ian, My understanding is that when a NIC announces TCP Windows Size of Zero then the recieve buffer is full and it can no longer accept data. The sending computer then sends windows probes to see when the recieve buffer can accept more data. The recieve computer sends a tcp windows update to receive more data. You could identify more of what is happening as the buffer fills up and releases using the filter: "tcp.window_size < == 65535" By using the Time Display of View Packets Since Last Captured Packet, you can see the time between window zero condition and the tcp window update. You could also create an Advanced I/O graph of avg(*)tcp.len to depict the payload size. Or another graph which depicts the tcp.len and tcp.window_size to see the window zero condition and the tcp window update. Hope this is somewhat helpful, John answered 01 Jul '11, 09:10 John_Modlin |
Do the 5-second pauses correspond with Zero Window announcements from the client? If so, the server is pausing because the client can't keep up. If not, then it's something on the server. Could the server be overloaded? Per RFC 1122, The first Zero Window Probe should be sent when the zero window condition has existed for the retransmission timeout period. The transmitting host should increase the interval between successive zero window probes exponentially. Usually, you'll see the interval between zero window probes doubling with each probe. As always, the exact details are somewhat implementation dependent. answered 01 Jul '11, 11:32 Jim Aragon |