Windows Server 2012系統(tǒng)的ECS實(shí)例開啟ECN功能后,訪問外部網(wǎng)站較慢或者出現(xiàn)TCP連接重傳問題,如何處理?
本文介紹在Windows Server 2012系統(tǒng)的ECS實(shí)例開啟ECN(Explicit Congestion Notification)功能后,出現(xiàn)訪問外部網(wǎng)站變慢或者TCP連接重傳問題的問題描述、問題原因和解決方案。
問題描述
在Windows Server 2012系統(tǒng)的ECS實(shí)例上使用瀏覽器訪問外部網(wǎng)站時(shí),出現(xiàn)訪問速度較慢或者TCP連接重傳的問題。
TCP連接重傳問題可以通過抓包工具(例如Wireshark)進(jìn)行核實(shí),如圖所示,在抓包結(jié)果的同一個(gè)TCP序列號(hào)(Sequence Number)和確認(rèn)號(hào)(Acknowledgment Number)的Info信息中,出現(xiàn)“TCP Retransmission”信息即為TCP連接重傳。
問題原因
ECS實(shí)例上開啟了ECN功能導(dǎo)致該問題,具體說明如下:
當(dāng)ECS實(shí)例啟用了ECN功能后訪問外部網(wǎng)站時(shí),會(huì)向網(wǎng)站服務(wù)端發(fā)送帶有ECN位的數(shù)據(jù)包,但在傳輸過程中,如果中間鏈路的某個(gè)設(shè)備不支持ECN功能會(huì)直接丟棄帶有ECN位的數(shù)據(jù)包,從而導(dǎo)致該問題發(fā)生。
ECN的作用主要是在網(wǎng)絡(luò)出現(xiàn)擁塞時(shí)通知TCP的傳輸層,減少TCP連接中被丟棄的數(shù)據(jù)包數(shù)量,達(dá)到避免重傳、減少等待時(shí)間、減少網(wǎng)絡(luò)抖動(dòng)的效果。但是有些網(wǎng)絡(luò)設(shè)備的配置規(guī)則不能與ECN兼容,例如打印機(jī)、路由器。這些設(shè)備會(huì)將ECN數(shù)據(jù)包視為非法數(shù)據(jù)包并丟棄,導(dǎo)致網(wǎng)絡(luò)出現(xiàn)問題。
解決方案
您需要在ECS實(shí)例上關(guān)閉ECN功能,具體操作如下:
遠(yuǎn)程連接Windows實(shí)例。
具體操作,請(qǐng)參見連接方式概述。
打開CMD命令提示符。
單擊桌面左下角圖標(biāo),然后單擊圖標(biāo)。
在搜索框輸入
cmd
。單擊命令提示符。
進(jìn)入管理員:命令提示符界面。
執(zhí)行如下命令,查看TCP全局參數(shù)信息。
netsh interface tcp show global
回顯信息如下,ECN 功能參數(shù)的值為enabled,則說明您的ECS實(shí)例操作系統(tǒng)中已開啟了ECN功能。
執(zhí)行如下命令,關(guān)閉ECN功能。
netsh interface tcp set global ecncapability=disabled
執(zhí)行如下命令,查看TCP全局參數(shù)的信息,確認(rèn)ECN 功能為disabled。
netsh interface tcp show global
回顯信息如下,ECN 功能參數(shù)的值為disabled,則說明您的ECS實(shí)例操作系統(tǒng)中已關(guān)閉了ECN功能。
重新訪問外部網(wǎng)站。