windows vista 网络性能参数调优
Windows Vista引进了许多新的特性到TCP/IP栈,包括CTCP和TCP 窗口自动调整。这种新的实现相比较于以前windows的默认设置在更宽的internet连接会有更好的效果。并且能够运行中调整TCP接受窗口(RWIN)的值,取决于BDP(带宽时延产品)。然而,这导致许多老的路由器的问题并且限制用户调整许多TCP/IP参数,但仍然有许多调整的空间。本文解释知名的可调整的TCP/IP参数。
检查TCP/IP状态
为了检查当前Vista TCP/IP可调整参数,在命令行输入下面的命令:
netsh int tcp show global
你可以得到如下显示:
这些设置的默认值和推荐状态下面将介绍,两个最重要的参数是 "Auto-Tuning Level" 和 "Congestion Control Provider".
TCP Auto-Tuning Level
为了关闭默认的RWIN自动调整行为,在命令行type:
netsh int tcp set global autotuninglevel=disable
默认auto-tuning level是正常,并且上面命令的可能设置是:
disabled:使用固定的TCP接受窗口。限制在64KB
highlyrestricted;允许接受窗口增加超过默认值,非常保守
restricted:在TCP接受窗口超过默认值的时候稍微控制其增长。
normal:默认值,允许RWIN与许多条件一起增长
experimental:允许RWIN增加在极端的情况下(不推荐,它可能降低通常情况下的性能,仅仅为了研究的目的。这会是RWIN超过16MB)。
我们的推荐:normal(除非你碰到问题)
如果你碰到问题,例如NAT路由和SPI防火墙,尝试restricted,highlyrestricted或diabled状态。
注意:
1.据报道,许多家庭的带有SPI防火墙的NAT路由器在normal状态下会有问题,降低速度,丢包并且总体降低网络的性能。
2.自动调整和老的router之间会有问题,他们不支持TCPwindow的scaling
3.netsh命令执行后理解起作用,不要重新启动
复合TCP-提高吞吐量
传统的慢启动和拥塞避免算法会帮助避免网络拥塞,其在连接建立的开始通过逐渐增加TCP窗口,直到达到TCP接受窗口的边界或者丢包,对于宽带宽internet连接,高的TCP窗口和高的latency(高BDP),这种算法不能足够快的增加TCP窗口而最终利用连接的带宽。
复合TCP(CTCP)是一个新的方法,在Vista和Server 2008中可用(也有一个hotfix在XP/2003中可用)。CTCP主动在宽连接时增加TCP发送窗口(大的RWIN和BDP)。CTCP尝试通过监视delay的变化情况和丢包情况来最大化吞吐量。其也确保它的行为并不消极地影响其他TCP连接。
默认,Vista是CTCP关闭的,server2008是打开的,打开这个选项能显著增加吞吐量。
为了enable CTCP,命令行输入:
netsh int tcp set global congestionprovider=ctcp
diable CTCP,输入:netsh int tcp set global congestionprovider=none
可能的选项是:ctcp, none,default(恢复系统默认值)
推荐使用ctcp
对于大多数宽连接使用这个新的CTCP拥塞控制算法会更好,强烈建议打开这个选项。
ECN Capability
ECN(明确地拥塞通知)是一种提供给路由器用一种可选的交流网络拥塞方法的机制。在于降低重传,ECN假定任何丢包都是由于router拥塞造成。其允许正在拥塞的router标记包并允许client自动降低传输速率来阻止更多的包丢失。ECN在Vista默认是diable的,由于其可能导致某些老router不支持这个特性的问题。
为了检查你的router是否支持ECN,你可以使用Microsoft的Internet Connectivity Evaluation Tool,结果显示 Traffic Congestion Test.
为了enable ECN,在命令行输入:
netsh int tcp set global ecncapability=enabled
可能的设置是:enabled,diabled,default(恢复系统默认的状态)
默认状态是:disabled
推荐状态:disabled.
更多ECN信息在:explicit congestion notification(ECN) for TCP/IP.
RSS-接收端scaling
RSS设置使在多个处理器上平行处理接收到的包可能,当然需要避免包重组顺序。其避免包重组分割的包为flows,使用单独的一个处理器来处理所有包为指定的flow。包按照指定字段hash值来分割到流中,并且结果的hash值用来选择处理器处理流。这个方法确保所有指定TCP连接的包在同一个处理器中,按照相同的顺序被接受。
可能的RSS设置:disabled,enabled,default(恢复到系统默认值)。
默认状态:enabled
推荐:enabled
TCP Chimney Offload
TCP Chimney Offload是window能将一个连接上的所有TCP处理offload给一个网卡。Offload是基于每个连接的,与任务offload比较,TCP chimney offload更减少网络相关的CPU负载,将CPU时间free出来从而促进整体的性能。
The possible states are: disabled, enabled, default (restores chimney offload state to the system default)
Default state: enabled
Recommended: enabled
手动调整注册表参数
许多关于TCP/IP参数注册表项的调整在以前的window有效,但在Vista和Server2008上不再有效了。下面是那些已经确认仍然有效的参数列表。注意为了改变这些设置并且使其有效,需要重新启动计算机。同样,任何改变推荐备份注册表。
在regedit(启动图标->Run->输入:regedit 系统管理员的身份),你可以看到这些keys:
MTU (最大传输单元) - 最大的包大小。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{...}\
MTU=1500 (DWORD, entry does not exist by default)
{....} 中的是你网卡的唯一标识。你可以通过IP地址来识别,如果IP地址被表示为DhcpIPAddress=192.168.x.x 文本值。
推荐使用默认值,除非你想缩小。Vista默认使用下面网络最大可能的包。
注意:在有些测试环境中,正确的MTU 项可能有8的偏移,8偏移与PPPOE头的大小一致,使用TCP Analyzer来检查结果。
TCP 1323 Options
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\
Tcp1323Opts=1 (DWORD, 这个项在你使用 "netsh int tcp set global autotuninglvl=..." 命令时创建, 默认设置0).
设置这项似乎没有作用,由于auto-tuning 使用TCP 1323 scale 因子 并运行时改变, 不用管这个设置. 宽连接的时候最好设置该项为1。