高時延帶寬的網絡環境下使用Iperf測試網絡性能

先梳理兩個概念:

什麼是高時延帶寬乘積的網絡環境(帶寬(Byte/s)*時延>64k字節):

1)衛星傳輸(時延550ms),帶寬1Mbps以上。(1024*1024)/8 *0.6=72090字節。

2)跨國internet訪問或國際電路(時延200ms),帶寬超過2.6Mbps以上。

3)千兆網絡已經很流行了,時延>=1ms,都算。更不要說萬兆網絡

 

TCP滑動窗口如何進行流量控制及64K概念。

TCP是一種可靠的面向連接的協議,TCP滑動窗口兩作用:提供可靠性,流量控制。這裏我們關心的是流量控制。tcp滑動窗口控制在收到確認包前能夠最大發送多少字節的TCP數據包,如果收到了將再發送下一組數據。在TCP包頭裏描述TCP滑動窗口占了16位,剛好是65535也就是64K。默認最大允許發送64K字節的數據包就必須有迴應包,否則就等。

 

 

在高時延帶寬的網絡環境下,會有什麼問題,如何解決?

TCP這樣的特點就導致,雖然帶寬富裕,但是單個TCP線程不能把帶寬佔滿。

解決辦法:TCP包頭裏最後一部分是選項字段,當kind=3時,用來給出TCP窗口擴大因子。當新建立TCP連接時,會查找這個選項參數,如果設置了TCP窗口因子(取值範圍0~14),就可以突破默認TCP窗口限制,使其支持更大的窗口.相當於2的(16+擴展值)次方,最大2的30次方。

這樣在高帶寬時延的網絡環境下,單TCP會話對帶寬利用率將明顯改善。


測試環境A103.38.X.X 主機

                  B103.16.X.X主機

兩主機之間的帶寬大於100M,時延200ms左右

wKiom1eZj42gJsYuAAEzSVZhR_o940.png


UDP 100M測試:達到預期結果

服務端iperf-u -s

客戶端iperf -c 103.16.X.X -b 100M -i 5 -t 60

wKioL1eZj47DPaRiAAETrTXGYuM099.png

wKiom1eZj46iL8o_AAHrM3cXkXE452.png



TCP單線程測試:默認64K窗口,只能達到 2.5Mbps

服務端iperf-s

客戶端iperf -c 103.16.X.X -i 5 -t 60

wKioL1eZj4ugi4OcAAFonDc7tB4802.png

wKiom1eZj4vwdmAOAAGYGr901-k081.png


TCP單線程測試:默認2M窗口,可達到 70Mbps

服務端iperf-s -w 2M

客戶端iperf -c 103.16.X.X -w 2M -i 5 -t 60

wKioL1eZj4yDlJjjAAFeKal7c1w254.png

wKioL1eZj42Qf3YQAAF1P8jYOLY387.png



利用TCP擴大因子,不光系統要支持,應用軟件也要給力。

linux 2.6.9以上內核, windows vista/2008以上默認支持,只需要關心應用軟件即可。


早期版本系統優化:

linux

echo 'net.ipv4.tcp_window_scaling = 1'>>/etc/sysctl.conf

sysctl -p


windows XP/2003優化

打開註冊表,進入如下位置

wKiom1eZj47AEukJAAAU3TMWRMA946.jpg

添加鍵值

wKioL1eZj4_wmhA5AAAV5N1QAGI747.jpg



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章