Windows Vista引進(jìn)了許多新的特性到TCP/IP棧,包括CTCP和TCP 窗口自動(dòng)調(diào)整。這種新的實(shí)現(xiàn)相比較于以前windows的默認(rèn)設(shè)置在更寬的internet連接會(huì)有更好的效果。并且能夠運(yùn)行中調(diào)整TCP接受窗口(RWIN)的值,取決于BDP(帶寬時(shí)延產(chǎn)品)。然而,這導(dǎo)致許多老的路由器的問題并且限制用戶調(diào)整許多TCP/IP參數(shù),但仍然有許多調(diào)整的空間。本文解釋知名的可調(diào)整的TCP/IP參數(shù)。
檢查TCP/IP狀態(tài)
為了檢查當(dāng)前Vista TCP/IP可調(diào)整參數(shù),在命令行輸入下面的命令:
netsh int tcp show global
你可以得到如下顯示:

這些設(shè)置的默認(rèn)值和推薦狀態(tài)下面將介紹,兩個(gè)最重要的參數(shù)是 "Auto-Tuning Level" 和 "Congestion Control Provider".
TCP Auto-Tuning Level
為了關(guān)閉默認(rèn)的RWIN自動(dòng)調(diào)整行為,在命令行type:
netsh int tcp set global autotuninglevel=disable
默認(rèn)auto-tuning level是正常,并且上面命令的可能設(shè)置是:
disabled:使用固定的TCP接受窗口。限制在64KB
highlyrestricted;允許接受窗口增加超過默認(rèn)值,非常保守
restricted:在TCP接受窗口超過默認(rèn)值的時(shí)候稍微控制其增長。
normal:默認(rèn)值,允許RWIN與許多條件一起增長
experimental:允許RWIN增加在極端的情況下(不推薦,它可能降低通常情況下的性能,僅僅為了研究的目的。這會(huì)是RWIN超過16MB)。
我們的推薦:normal(除非你碰到問題)
如果你碰到問題,例如NAT路由和SPI防火墻,嘗試restricted,highlyrestricted或diabled狀態(tài)。
注意:
1.據(jù)報(bào)道,許多家庭的帶有SPI防火墻的NAT路由器在normal狀態(tài)下會(huì)有問題,降低速度,丟包并且總體降低網(wǎng)絡(luò)的性能。
2.自動(dòng)調(diào)整和老的router之間會(huì)有問題,他們不支持TCPwindow的scaling
3.netsh命令執(zhí)行后理解起作用,不要重新啟動(dòng)
復(fù)合TCP-提高吞吐量
傳統(tǒng)的慢啟動(dòng)和擁塞避免算法會(huì)幫助避免網(wǎng)絡(luò)擁塞,其在連接建立的開始通過逐漸增加TCP窗口,直到達(dá)到TCP接受窗口的邊界或者丟包,對(duì)于寬帶寬internet連接,高的TCP窗口和高的latency(高BDP),這種算法不能足夠快的增加TCP窗口而最終利用連接的帶寬。
復(fù)合TCP(CTCP)是一個(gè)新的方法,在Vista和Server 2008中可用(也有一個(gè)hotfix在XP/2003中可用)。CTCP主動(dòng)在寬連接時(shí)增加TCP發(fā)送窗口(大的RWIN和BDP)。CTCP嘗試通過監(jiān)視delay的變化情況和丟包情況來最大化吞吐量。其也確保它的行為并不消極地影響其他TCP連接。
默認(rèn),Vista是CTCP關(guān)閉的,server2008是打開的,打開這個(gè)選項(xiàng)能顯著增加吞吐量。
為了enable CTCP,命令行輸入:
netsh int tcp set global congestionprovider=ctcp
diable CTCP,輸入:
netsh int tcp set global congestionprovider=none
可能的選項(xiàng)是:ctcp, none,default(恢復(fù)系統(tǒng)默認(rèn)值)
推薦使用ctcp
對(duì)于大多數(shù)寬連接使用這個(gè)新的CTCP擁塞控制算法會(huì)更好,強(qiáng)烈建議打開這個(gè)選項(xiàng)。
ECN CapabilityECN(明確地?fù)砣ㄖ┦且环N提供給路由器用一種可選的交流網(wǎng)絡(luò)擁塞方法的機(jī)制。在于降低重傳,ECN假定任何丟包都是由于router擁塞造成。其允許正在擁塞的router標(biāo)記包并允許client自動(dòng)降低傳輸速率來阻止更多的包丟失。ECN在Vista默認(rèn)是diable的,由于其可能導(dǎo)致某些老router不支持這個(gè)特性的問題。
為了檢查你的router是否支持ECN,你可以使用Microsoft的Internet Connectivity Evaluation Tool,結(jié)果顯示 Traffic Congestion Test.
為了enable ECN,在命令行輸入:
netsh int tcp set global ecncapability=enabled
可能的設(shè)置是:enabled,diabled,default(恢復(fù)系統(tǒng)默認(rèn)的狀態(tài))
默認(rèn)狀態(tài)是:disabled
推薦狀態(tài):disabled.
更多ECN信息在:explicit congestion notification(ECN) for TCP/IP.
RSS-接收端scalingRSS設(shè)置使在多個(gè)處理器上平行處理接收到的包可能,當(dāng)然需要避免包重組順序。其避免包重組分割的包為flows,使用單獨(dú)的一個(gè)處理器來處理所有包為指定的flow。包按照指定字段hash值來分割到流中,并且結(jié)果的hash值用來選擇處理器處理流。這個(gè)方法確保所有指定TCP連接的包在同一個(gè)處理器中,按照相同的順序被接受。
可能的RSS設(shè)置:disabled,enabled,default(恢復(fù)到系統(tǒng)默認(rèn)值)。
默認(rèn)狀態(tài):enabled
推薦:enabled
TCP Chimney OffloadTCP Chimney Offload是window能將一個(gè)連接上的所有TCP處理offload給一個(gè)網(wǎng)卡。Offload是基于每個(gè)連接的,與任務(wù)offload比較,TCP chimney offload更減少網(wǎng)絡(luò)相關(guān)的CPU負(fù)載,將CPU時(shí)間free出來從而促進(jìn)整體的性能。
The possible states are: disabled, enabled, default (restores chimney offload state to the system default)
Default state: enabled
Recommended: enabled
手動(dòng)調(diào)整注冊(cè)表參數(shù)許多關(guān)于TCP/IP參數(shù)注冊(cè)表項(xiàng)的調(diào)整在以前的window有效,但在Vista和Server2008上不再有效了。下面是那些已經(jīng)確認(rèn)仍然有效的參數(shù)列表。注意為了改變這些設(shè)置并且使其有效,需要重新啟動(dòng)計(jì)算機(jī)。同樣,任何改變推薦備份注冊(cè)表。
在regedit(啟動(dòng)圖標(biāo)->Run->輸入:regedit 系統(tǒng)管理員的身份),你可以看到這些keys:
MTU (最大傳輸單元) - 最大的包大小。
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces\{...}\
MTU=1500 (DWORD, entry does not exist by default)
{....} 中的是你網(wǎng)卡的唯一標(biāo)識(shí)。你可以通過IP地址來識(shí)別,如果IP地址被表示為DhcpIPAddress=192.168.x.x 文本值。
推薦使用默認(rèn)值,除非你想縮小。Vista默認(rèn)使用下面網(wǎng)絡(luò)最大可能的包。
注意:在有些測(cè)試環(huán)境中,正確的MTU 項(xiàng)可能有8的偏移,8偏移與PPPOE頭的大小一致,使用TCP Analyzer來檢查結(jié)果。
TCP 1323 Options
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\
Tcp1323Opts=1 (DWORD, 這個(gè)項(xiàng)在你使用 "netsh int tcp set global autotuninglvl=..." 命令時(shí)創(chuàng)建, 默認(rèn)設(shè)置0).
設(shè)置這項(xiàng)似乎沒有作用,由于auto-tuning 使用TCP 1323 scale 因子 并運(yùn)行時(shí)改變, 不用管這個(gè)設(shè)置. 寬連接的時(shí)候最好設(shè)置該項(xiàng)為1。