Hi Folks..... and thanks for reading my question. First some background: I have a situation where I have a user in India using RDP to connect to a virtual desktop (VDI on VMWare View) in a data center in the U.S. This works OK. The user then starts a remote control session from the VDI to remote control (via RDP) a Sharepoint server in that same data center. I hope that is clear. On occasion this runs quite slow. I have captured packets on the VDI so I can see both the connection from the user machine to the VDI as well as the VDI to the Sharepoint server. When looking at the packets with Wireshark I can see that on the TCP connection from the VDI to the Sharepoint server the TCP Calculated Window Size often drops to zero or 100 or 200 bytes (that is what the VDI is advertising to the Sharepoint server). Note this is the LAN connection within the data center. On the other RDP/TCP connection, from the client machine to the VDI, the TCP Calculated Window Size stays at about 64k throughout with only minor fluctuations. This is the WAN connection back to India.
Any feedback would be much appreciated. Thanks, F asked 25 Oct '11, 08:34 Fredonians |
One Answer:
A small window size usually indicates a resource shortage on the system advertising the small window. This is one of the best indicators for a network engineer to pin a problem to a certain server. Alas, it's not that easy. Window Scaling often causes a TCP connection to show window sizes of a few hundred byte. If Wireshark sees the 3-way handshake it observes the window scale factor and calculates the correct window size. The next line in the decode shows the scaling factor. If Wireshark does not know about the 3-way handshake you still see the term "calculated window size", but the scaling factor is reported as -1 to show an unknown scale factor. Make sure, that you have recorded the 3-way handshake before interpreting the window size. If you have the 3-way handshake and are still are at 200 byte window size something is wrong. Here are a few reasons that we found when analyzing network traffic:
When analyzing small TCP windows I look at the next few frames in the connection. The system with the small window should send a window update within a few milliseconds, advertising a much bigger receive window. If these window updates are not coming in the sender usually waits several seconds before sending a small packet. Oh, and one more thing: If you are in India and your server is in the US calculate the optimum window size for this link: Calculate your bandwidth in Byte per second and multiply by your round trip time in seconds. If this value is significantly higher than 64k you can get better throughput by activating window scaling. Hope that helps. Keep on hunting! answered 26 Oct '11, 03:16 packethunter edited 26 Oct '11, 03:22 |