一、簡介:
iperf3是一個網絡速度測試工具,支持IPv4與IPv6,支持TCP、UDP、SCTP傳輸協議,可在Windows、Mac OS X、Linux、FreeBSD等各種平台使用,是一個簡單又實用的小工具。因我已配置好yum源,因此執行yum install iperf3即可安裝。安裝好后,我已看一下iperf的使用參數,如圖:
二、實驗環境:
在實際測試中我的服務器有萬兆網卡,IP如下所示:
Host177:100.192.168.177
Host178:100.192.168.178
Host179:100.192.168.179
Host186:100.192.168.186
三、測試過程
在這次測試中主要進行tcp與udp的對比測試,在測試前先說明一下在iperf3中有幾個參數在tcp環境與udp環境中的區別,也就是在測試中需要對此參數要給定內容,避免iperf工具使用其默認的值,主要幾項如下:
如圖,參數若不指定-b帶寬值會造成極大的區別,在測試環境中發現 -l 默認就使用128數值。
接下來首先以Host179為服務器端(服務器端啟動參數是沒有區別的):
以Host178為客戶端進行tcp的測試(暫時不指定-l參數即緩沖區大小):
因測試環境有萬兆網卡,於是我在這里指定了帶寬-b 為萬兆(后面還會進行千兆測試,會出現一個較為奇怪的現象),傳輸內容大小為100G。
再進行udp測試(暫時不指定-l參數即緩沖區大小):
進行udp測試時候,僅是多了一個參數-u即可。
下面進行千兆的測試,如下:
將-b后面跟着的值調小,這里udp的測試同樣進行此操作,這里就不列出圖片了,接下來我們關注一下測試結果。
四、測試結果
經測試后,可觀察客戶端下方的打印結果,如下:
tcp下以萬兆帶寬測試結果:
ucp下以萬兆帶寬測試結果:
tcp下以千兆帶寬測試結果:
ucp下以千兆帶寬測試結果:
通過觀察此類結果可以清楚的發現在設定 –b 1000M (千兆)的時候,tcp和udp的傳輸100G文件所需時間相差不是很多,但當設定–b 10000M (萬兆)的時候,兩者相差的還是比較明顯的,這也是前面提出的“奇怪的現象”。給人的感覺就是udp沒有發揮萬兆網卡的全部速率,在圖中也有顯示丟包率為51%。
通過網上的資料查詢得知,udp丟包率高可能為緩沖區buffer有限制導致的,因此我於是進行了如下測試:
將udp緩沖區buffer調高,執行下面命令:
CentOS 7中默認buffer大小為212992,我在后面增加了2個0,約為放大100倍,這兩條命令在服務器端和客戶端都執行,然后下面在執行udp測試命令:
得出結果為:
可以看出丟包率得到了明顯的改善,但識別出的帶寬仍為6500M左右,離萬兆還有一定的距離。
五、結論
經過上網查詢學習得知,在帶寬測試中通常采取udp模式,因為能測出極限帶寬、時延抖動、丟包率。在進行測試時,首先以鏈路理論帶寬(萬兆)作為數據發送速率進行測試,這樣可以大體得出實際帶寬的極限值,在測試環境中的帶寬為6500左右,這也同樣解釋了上文提到的奇怪現象,並且在做實驗中一定要注意測試命令的默認參數值,比如在本次測試中的tcp與udp測試的-b和-l兩個參數,在使用默認參數的時候還是有着巨大的區別。