Recommended TCP/IP settings

Software-based VM-centric and flash-friendly VM storage + free version

Moderators: anton (staff), art (staff), Max (staff), Anatoly (staff)

Constantin (staff)

Thu Dec 09, 2010 1:07 pm

1) Enabling JumboFrames
Enable 9K Jumbo Frames for all your NICs either on target as on initiator side. Also Jumbo Frames should be enabled on all switches. Please note, that in some cases JumboFrames can only hurt performance, and you`ll have to shut them down.

How to enable Jumbo Frames in
Microsoft Windows 2003-2008R2
Control Panel - System - Device Manager - Your NIC - Advanced.

Microsoft Windows 2008 Server Core, 2008 R2 Server Core, Hyper-V Server
To enable Jumbo Frames on Server Core editions of Windows run following commands:

Code: Select all

netsh int show int
This command will list names of NICs. Now run for each NIC following command:

Code: Select all

netsh int ipv4 set subint “<Name of NIC>” mtu=9000 store=persistent
VmWare ESX(i)
Note, that ESXi officially supports Jumbo Frames only since version 4.1, and ESX - since version 4.0. ESX 3.5 supports Jumbo Frames in experimental mode.
To set up Jumbo Frames for vSwitch run in console following command:

Code: Select all

esxcfg-vswitch -m 9000 <vSwitch>
To create VMKernel with support of Jumbo Frames run following commands. Note that if you change JumboFrames on existing vSwitch it doesn`t change packet size for VMKernel, so they way out is to delete existing VMKernel and create new one:

Code: Select all

esxcfg-vswitch -d
esxcfg-vswitch -A vmkernel# vSwitch#
esxcfg-vmknic -a -i <ip address> -n <netmask> -m 9000 <portgroup name>
According to VmWare KB article 1007654

Citrix Xen Server
Xen Server officially supports Jumbo Frames since version 5.6 Feature Pack 1 only, according to XenServer 5.6 FP1 Release Notes

To enable Jumbo Frames first you need to download vSwitch Controller Virtual Appliance from My Citrix Page, import it to your XenServer and run it. After performing abovementioned actions go to XenServer host console and type following:

Code: Select all

xe-switch-network-backend openvswitch
xe vif-param-set uuid=<vif_uuid> other-config:mtu=9000
To get <vif_uuid> you can use xe vif-list command

For more detailed information you can read XenServer 5.6 Feature Pack 1 Administrator's Guide and XenServer 5.6 Feature Pack 1 vSwitch Controller User Guide

2) Windows tweaks
Windows Server 2003, Widnows Server 2003 R2:
Go to

Code: Select all

And create following DWORD keys:

Code: Select all

GlobalMaxTcpWindowSize = 0x01400000
TcpWindowSize = 0x01400000
Tcp1323Opts = 3
SackOpts = 1
Windows Server 2008, Windows Server 2008 R2.
This commands should be run from command prompt with admin rights

Code: Select all

netsh int tcp set heuristics disabled - disables Windows scaling heuristics
netsh int tcp set global autotuninglevel=normal - turns-on TCP auto-tuning
netsh int tcp set global congestionprovider=ctcp - turns on using Compound TCP
netsh int tcp set global ecncapability=enabled - enables ECN
netsh int tcp set global rss=enabled - enables Receive-side Scaling (RSS). Note, that you should enable it only if your NIC supports it!
netsh int tcp set global chimney=enabled - enables TCP Chimney offload
netsh int tcp set global dca=enabled - enables Direct Access cache (should be supported by CPU, chipset and NIC)
For testing bandwidth of your network we recommend to use NTTTCP or iPerf.

Windows Server 2012
Server 2012 handles the settings by using different templates, template contents can be viewed by using Get-NetTCPSetting.

Code: Select all

netsh int tcp set supplemental template=datacenter
netsh int tcp set global rss=enabled
netsh int tcp set global chimney=enabled
netsh int tcp set global dca=enabled