smp_86112
Aug 21, 2008Cirrostratus
LTM TCP Window Size behavior
I have been battling with TCP window sizes for some time now in an effort to improve HTTP application responsiveness, especially for those on higher-latency networks (~100-300ms RTT). Just by trial and error, I was able to DRASTICALLY reduce the response time of a single operation in one of our apps from 10 minutes to 8 seconds - simply by tweaking a couple of parameters in the TCP profiles used by the Virtual Server.
So here I am battling another report of slow response in an application. I began by taking a tcpdump of a LAN-connected client and looking closer at the TCP windows sizes used by the LTM. The send and receive window sizes of the Client TCP Profile on the VS is 65535.
However in the trace, it is obvious that the LTM starts off with a VERY small window (~4K). I guess that in itself didn't strike me as unusual, since the window size increases as the conversation moves forward. What did surprise me is that the server sent almost 2 megabytes of data (~100 seconds into the conversation) before the window was fully opened. The receive window of the client was wide open from start to finish.
I have been tinkering with the TCP profile parameters in an effort to either force the window to be fully-open right from the start, or to at least increase it faster than it did in this case. But I haven't had any success.
Is this normal TCP behavior for TCP on an LTM?
The top pic is a comparision of the LTM window size (black) and the client (red) window size. The bottom chart is a graph of the amount of data (in bytes) sent from the server to the client.