天天看點

《高性能Linux伺服器建構實戰:系統安全、故障排查、自動化運維與叢集架構》——2.3 網絡性能評估工具iperf

本節書摘來自華章計算機《高性能linux伺服器建構實戰:系統安全、故障排查、自動化運維與叢集架構》一書中的第2章,第2.3節,作者:高俊峰著, 更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

網絡性能評估主要是監測網絡帶寬的使用率,将網絡帶寬利用最大化是保證網絡性能的基礎,但是由于網絡設計不合理、網絡存在安全漏洞等原因,都會導緻網絡帶寬使用率低。要找到網絡帶寬使用率低的原因,可以對網絡傳輸進行監控,此時就需要用到一些網絡性能評估工具,而iperf就是這樣一個網絡帶寬測試工具,本節将詳細介紹iperf的使用方式。

2.3.1 iperf能做什麼

iperf是一個基于tcp/ip和udp/ip的網絡性能測試工具,它可以用來測量網絡帶寬和網絡品質,還可以提供網絡延遲抖動、資料包丢失率、最大傳輸單元等統計資訊。網絡管理者可以根據這些資訊了解并判斷網絡性能問題,進而定位網絡瓶頸,解決網絡故障。

下面介紹iperf的主要功能。

(1)tcp方面

測試網絡帶寬。

支援多線程,在用戶端與伺服器端支援多重連接配接。

報告mss/mtu值的大小。

支援tcp視窗值自定義并可通過套接字緩沖。

(2)udp方面

可以設定指定帶寬的udp資料流。

可以測試網絡抖動值、丢包數。

支援多點傳播測試。

2.3.2 iperf的安裝與使用

iperf可以運作在任何ip網絡上,包括本地以太網、接入網際網路、wi-fi網絡等。在工作模式上,iperf運作于伺服器端、用戶端模式下,其伺服器端主要用于監聽到達的測試請求,而用戶端主要用于發起連接配接會話,是以要使用iperf,需要兩台伺服器,一台運作在伺服器模式下,另一台運作在用戶端模式下。

1 . 安裝iperf

iperf支援win32、linux、freebsd、mac os x、openbsd和solaris等多種作業系統平台。讀者可以從iperf官方網站:<code>http://iperf.fr/</code>下載下傳各種版本,目前最新的版本是iperf3.0,這裡下載下傳的軟體包為iperf-3.0.tar.gz,安裝過程如下:

這樣,iperf就安裝完成了。

2 . iperf參數介紹

在完成iperf安裝後,執行“iperf3 -h”即可顯示iperf的詳細用法。iperf的指令行選項共分為三類,分别是用戶端與伺服器端公用選項、伺服器端專用選項和用戶端專用選項,下面對常用的選項進行介紹。

伺服器端專用選項的含義如表2-4所示。

《高性能Linux伺服器建構實戰:系統安全、故障排查、自動化運維與叢集架構》——2.3 網絡性能評估工具iperf

用戶端專用選項的含義如表2-5所示。

《高性能Linux伺服器建構實戰:系統安全、故障排查、自動化運維與叢集架構》——2.3 網絡性能評估工具iperf

用戶端與伺服器端公用選項的含義如表2-6所示。

《高性能Linux伺服器建構實戰:系統安全、故障排查、自動化運維與叢集架構》——2.3 網絡性能評估工具iperf

2.3.3 iperf應用執行個體

要使用iperf,首先啟動一個伺服器端,這裡假定伺服器端的ip位址為192.168.12.168,在此伺服器上運作“iperf3 -s”即可開啟iperf的伺服器端模式。在預設情況下,iperf3将在伺服器端打開一個5201監聽端口,此時就可以将另一台伺服器作為用戶端執行iperf功能測試。

1 . 測試tcp吞吐量

為了确定網卡的最大吞吐量,可以在任意用戶端運作iperf指令,iperf将嘗試從用戶端盡可能快地向伺服器端發送資料請求,并且會輸出發送的資料量和網卡平均帶寬值。圖2-14展示了通過一個最簡單的帶寬測試指令的輸出結果。

《高性能Linux伺服器建構實戰:系統安全、故障排查、自動化運維與叢集架構》——2.3 網絡性能評估工具iperf

從圖2-14可以看出,iperf預設的運作時間是10s,每隔1s輸出一次傳輸狀态,同時還可以看到每秒傳輸的資料量在112mb左右,剛好與“bandwidth”列的值對應起來,網卡的帶寬速率維持在941mbits/sec左右,而測試的伺服器是千兆網卡,這個測試值也基本合理。在輸出的最後,iperf還給出了總的資料發送、接收量,以及帶寬速率平均值,通過這些值,基本可以判斷網絡帶寬是否正常,網絡傳輸狀态是否穩定。

iperf提供很多參數,可以多角度、全方位地測試網絡帶寬使用率,例如,要改變iperf運作的時間和輸出頻率,可以通過“-t”和“-i”參數來實作,如圖2-15所示。

《高性能Linux伺服器建構實戰:系統安全、故障排查、自動化運維與叢集架構》——2.3 網絡性能評估工具iperf

從圖2-15可以看出,輸出狀态的間隔變為每5s一次,總共執行測試時間為20s,測試的帶寬速率仍然保持在941mbits/sec左右,唯一變化的是失敗重傳次數增加了。

為了模拟大量的資料傳輸,也可以指定要發送的資料量,這可以通過“-n”參數來實作。在指定“-n”參數後,“-t”參數失效,iperf在傳輸完畢指定大小的資料包後,自動結束,如圖2-16所示。

《高性能Linux伺服器建構實戰:系統安全、故障排查、自動化運維與叢集架構》——2.3 網絡性能評估工具iperf

圖2-16的例子是指定發送一個5gb左右的資料包,并且每隔10s輸出一次傳輸狀态,從這個輸出可以看出,當失敗重傳次數較多時,傳輸速率急速下降。

有時候,為了模拟更真實的tcp應用,iperf用戶端允許從一個特定的檔案發送資料,這可以通過“-f”參數實作,如圖2-17所示。

《高性能Linux伺服器建構實戰:系統安全、故障排查、自動化運維與叢集架構》——2.3 網絡性能評估工具iperf

在圖2-17的例子中,通過“-f”參數指定了一個webdata.tar.gz檔案作為iperf要傳輸的資料。在使用此參數時,需要同時指定一個“-t”參數來設定要測試傳輸的時間,這個時間盡量設定長一些,因為在預設傳輸時間10s内,這個檔案可能還沒有傳完。

在使用iperf進行網絡帶寬測試時,如果沒有指定發送方式,iperf用戶端隻會使用單一的線程,而iperf是支援多線程的,可以使用iperf提供的“-p”參數來設定多線程的數目,通過使用多線程,可以在一定程度上增加網絡的吞吐量。

下面通過兩個例子進行簡單對比,圖2-18是iperf使用單線程傳輸1.86gb資料所消耗的時間和帶寬使用情況。為了速率機關統一,這裡使用“-f”參數将輸出結果都通過mbytes/sec來顯示。

《高性能Linux伺服器建構實戰:系統安全、故障排查、自動化運維與叢集架構》——2.3 網絡性能評估工具iperf

從圖2-18中可以看出,傳輸1.86gb的資料消耗了17s的時間,平均帶寬速率為112mbytes/sec(注意機關)。下面再看看使用多線程後,iperf傳輸同樣大小資料量所消耗的時間和平均帶寬速率,如圖2-19所示。

《高性能Linux伺服器建構實戰:系統安全、故障排查、自動化運維與叢集架構》——2.3 網絡性能評估工具iperf

這裡通過“-p”參數開啟了2個多線程,從傳輸時間上看,傳輸1.86gb的資料,消耗時間為10.79s,比之前單線程的傳輸時間少了近7s,在平均帶寬速率上,從之前單線程的112mbytes/sec提高到177mbytes/sec,從這個結果可以看出,多線程對網絡傳輸性能的提高不小。

2 . 測試udp丢包和延遲

iperf也可以用于udp資料包吞吐量、丢包率和延遲名額,但是由于udp協定是一個非面向連接配接的輕量級傳輸協定,并且不提供可靠的資料傳輸服務,是以對udp應用的關注點不是傳輸資料有多快,而是它的丢包率和延時名額。通過iperf的“-u”參數即可測試udp應用的傳輸性能,圖2-20測試的是在iperf用戶端傳輸100mb的udp資料包的輸出結果。

《高性能Linux伺服器建構實戰:系統安全、故障排查、自動化運維與叢集架構》——2.3 網絡性能評估工具iperf

在圖2-20中,重點關注虛線下的一段内容,在這段輸出中,“jitter”清單示抖動時間,或者稱為傳輸延遲,“lost/total”清單示丢失的資料包和總的資料包數量,後面的0.33%是平均丢包的比率,“datagrams”列顯示的是總共傳輸資料包的數量。

這個輸出結果過于簡單,要了解更詳細的udp丢包和延時資訊,可以在iperf服務端檢視,因為在用戶端執行傳輸測試的同時,伺服器端也會同時顯示傳輸狀态,如圖2-21所示。

《高性能Linux伺服器建構實戰:系統安全、故障排查、自動化運維與叢集架構》——2.3 網絡性能評估工具iperf

在這個輸出中,詳細記錄了在傳輸過程中,每個階段的傳輸延時和丢包率,在udp應用中随着傳輸資料的增大,丢包率和延時也随之增加。對于延時和丢包可以通過改變應用程式來緩解或修複,例如視訊流應用,通過緩存資料的方式可以容忍更大的延時。

繼續閱讀