Network and Storage Protocols

TCP Window Sizes


Has anyone had experience changing the various TCP Window Sizes (NDMP, CIFS, NFS, Snapmirror)? Were there any performance differences? Will increasing the NDMP TCP Window Size help with backups via Netbackup? Are there adverse affects to making the snapmirror window size too large? Are there adverese affects to making ANY of the window sizes too large?



We've been wondering about the same thing recently.

Disadvantages of large window sizes are the same on all systems, windows, linux, etc. NetApp is no different: Larger window means more data to retransmit on a lost packet for example since the full window needs to be resent. Also, it *might* make it easier to OOM the filer (out-of-memory) since every packet sent through the net has to reserve a full window, so I wouldn't make it too big, even on a perfectly reliable network.

The default window sizes have changed in recent OnTap versions. We don't have any performance measurements yet, but we prefer to not touch them unless we have a specific issue which we're trying to debug...

some official insight in these values would be nice



Selective acknowledge (SACK) may help with retransmits.


It depends if your back is across the wan. In that case, you need to use MTU path discovery mechanism on routers so that they can adjust packet size and tcp windows size. By default, it starts as slow start and uses sliding window mechanism, if there is congession, it will slow down. On LAN, you should not worry about, it only matters when you send data across WAN. You could use write accelators feature in some SAN Switches for backuo.



If MTU size is set to 9000 on the FAS side, but window clients (desktops) are set to 1500 will the FAS accept ONLY 9000 frame sizes or can it scale downward?


FAS will accept all frame sizes up to maximum, but your clients may reject large frames from filer. In general, MTU must be the same on all devices along the path (including all switches in between).


I found this article under the System Performance chapter of 7.3.3.

It says that increasing the window size to the maximum can increase performance as long as there is no current packet loss on the network. Would a 6080 with a PAMII card be in danger of OOM? Can it be larger than a host tcp window size? Would changing the window size improve Windows Server connectivity but hamper windows desktop connectivity? I wish there was better documentation on this.


TCP window size is amount of unacknowledged data host is willing to accept from partner. So it is set independently on both sides of connection.

You should be careful with word “performance” because it is meaningless by itself. Before evaluating any setting for mythical “performance impact” you need to define your objectives (speed, amount of data, response time). TCP window size helps with bandwidth (i.e. – amount of data that can be transmitted in given time) on high latency links. It usually has little impact on LAN except when set to ridiculously small value.