Linux網絡性能評估工具 Iperf安裝使用詳解

2.3網絡性能評估工具 Iperf

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

2.3.1Iperf 能做什麼

Iperf 是一款基於 TCP/IP 和 UDP/IP 的網絡性能測試工具,它可以用來測量網絡帶寬和網絡質量,還可以提供網絡延遲抖動、數據包丟失率、最大傳輸單元等統計信息。網絡管理員可以根據這些信息瞭解並判斷網絡性能問題,從而定位網絡瓶頸,解決網絡故障。

下面介紹 Iperf 的主要功能。

(1)TCP 方面

測試網絡帶寬。

支持多線程,在客戶端與服務端支持多重連接。

報告 MSS/MTU 值的大小。

支持 TCP 窗口值自定義並可通過套接字緩衝。

(2)UDP 方面

可以設置指定帶寬的 UDP 數據流

可以測試網絡抖動值、丟包數

支持多播測試

支持多線程,在客戶端與服務端支持多重連接。

2.3.2Iperf 的安裝與使用

iperf 可以運行在任何 IP 網絡上,包括本地以太網、接入因特網、Wi-Fi 網絡等。在工作模式上,iperf 運行於服務器、客戶端模式下,其服務器端主要用於監聽到達的測試請求, 而客戶端主要用於發起連接會話,因此要使用 iperf,需要兩臺服務器,一臺運行在服務器模式下,另一臺運行在客戶端模式下。

1.安裝 iperf

iperf 支持 Win32、Linux、FreeBSD、MacOS X、OpenBSD 和 Solaris 等多種操作系統平臺。讀者可以從 iperf 官方主頁 http://iperf.fr/ 下載各種版本,目前最新的版本是 iperf3.0,這

裡下載的軟件包為 iperf-3.0.tar.gz,安裝過程如下:

[root@ networkserver ~]# tar zxvf iperf-3.0.tar.gz

[root@ networkserver ~]# cd iperf

[root@ networkserver iperf]# make

[root@ networkserver iperf]# make install

這樣,iperf 就安裝完成了。

2.iperf 參數介紹

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

服務器端專用選項的含義如表 2.4 所示。

Linux網絡性能評估工具 Iperf安裝使用詳解

Linux網絡性能評估工具 Iperf安裝使用詳解

Linux網絡性能評估工具 Iperf安裝使用詳解

2.3.3Iperf 應用實例

要使用 iperf,首先要啟用一個服務端,這裡假定服務端的 IP 地址為 192.168.12.168,在此服務器上運行“iperf3 -s”即可開啟 iperf 的服務器模式。在默認情況下,iperf3 將在服務端打開一個 5201 監聽端口,此時就可以將另一臺服務器作為客戶端執行 iperf 功能測試了。

1.測試 TCP 吞吐量

為了確定網卡的最大吞吐量,可以在任意客戶端運行 iperf 命令,iperf 將嘗試從客戶端儘可能快地向服務端發送數據請求,並且會輸出發送的數據量和網卡平均帶寬值。圖 2-14 是一個最簡單的帶寬測試命令。

Linux網絡性能評估工具 Iperf安裝使用詳解

圖 2-14 通過 iperf 測試網絡帶寬利用率

從圖 2-14 可以看出,iperf 默認的運行時間是 10 秒鐘,每隔一秒鐘輸出一次傳輸狀態, 同時還可以看到每秒鐘傳輸的數據量在 112MB 左右,剛好與“Bandwidth”列的值對應起來,網卡的帶寬速率維持在 941Mbits/sec 左右,而測試的服務器是千兆網卡,這個測試值也基本合理。在輸出的最後,iperf 還給出了總的數據發送、接收量,並給出了帶寬速率平均值, 通過這些值,基本可以判斷網絡帶寬是否正常,網絡傳輸狀態是否穩定。

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

Linux網絡性能評估工具 Iperf安裝使用詳解

圖 2-15 添加“-t”和“-i”參數後的 iperf 輸出

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

為了模擬大量的數據傳輸,也可以指定要發送的數據量,這可以通過“-n”參數來實現。

在指定“-n”參數後,“-t”參數失效,iperf 在傳輸完畢指定大小的數據包後,自動結束,如圖 2-16 所示。

Linux網絡性能評估工具 Iperf安裝使用詳解

圖 2-16 iperf 客戶端通過“-n”參數指定要傳輸的數據量

圖 2-16 的例子是指定發送一個 5GB 左右的數據包,並且每隔 10 秒鐘輸出一次傳輸狀態,從這個輸出可以看出,當失敗重傳次數較多時,傳輸速率急速下降。

有時候,為了模擬更真實的 TCP 應用,iperf 客戶端允許從一個特定的文件發送數據, 這可以通過“-F”參數實現,如圖 2-17 所示。

Linux網絡性能評估工具 Iperf安裝使用詳解

圖 2-17 iperf 客戶端通過“-F”參數指定文件來發送數據

在圖 2-17 的例子中,通過“-F”參數指定了一個 webdata.tar.gz 文件作為 iperf 要傳輸的數據,在使用此參數時,需要同時指定一個“-t”參數來設置要測試傳輸的時間,這個時間儘量設置長一些,因為在默認傳輸時間 10 秒內,這個文件可能還沒有傳完。

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

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

Linux網絡性能評估工具 Iperf安裝使用詳解

圖 2-18 iperf 在單線程模式下的傳輸時間和傳輸速率

從圖 2-18 中可以看出,傳輸 1.86GBytes 的數據消耗了 17 秒的時間,平均帶寬速率為112MBytes/sec(注意單位).下面再看看使用多線程後,iperf 傳輸同樣大小數據量所消耗的時間和平均帶寬速率,如圖 2-19 所示。

Linux網絡性能評估工具 Iperf安裝使用詳解

圖 2-19 iperf 使用多線程後的數據傳輸狀態

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

2 . 測試 UDP 丟包和延遲

iperf 也可以用於 UDP 數據包吞吐量、丟包率和延遲指標,但是由於 UDP 協議是一個非面向連接的輕量級傳輸協議,並且不提供可靠的數據傳輸服務,因此對 UDP 應用的關注點不是傳輸數據有多快,而是它的丟包率和延時指標。通過 iperf 的“-u”參數即可測試 UDP 應用的傳輸性能,圖 2-20 測試的是在 iperf 客戶端傳輸 100MB 的 UDP 數據包的輸出結果.:

Linux網絡性能評估工具 Iperf安裝使用詳解

圖 2-20 iperf 傳輸 100MB 的 UDP 數據包的輸出結果

在圖 2-20 中,重點關注虛線下的一段內容,在這段輸出中,“Jitter”列表示抖動時間,或者稱為傳輸延遲,“Lost/Total”列表示丟失的數據報和總的數據報數量,後面的 0.33%是平均丟包的比率,“Datagrams”列顯示的是總共傳輸數據報的數量。

這個輸出結果過於簡單,要了解更詳細的 UDP 丟包和延時信息,可以在 iperf 服務端查看,因為在客戶端執行傳輸測試的同時,服務端也會同時顯示傳輸狀態,如圖 2-21 所示。

Linux網絡性能評估工具 Iperf安裝使用詳解

圖 2-21 iperf 服務端顯示的 UDP 傳輸狀態

在這個輸出中,詳細記錄了在傳輸過程中,每個階段的傳輸延時和丟包率,在 UDP 應用中隨著傳輸數據的增大,丟包率和延時也隨之增加。對於延時和丟包可以通過改變應用程序來緩解或修復,例如視頻流應用,可以通過緩存數據的方式而可以容忍更大的延時。


分享到:


相關文章: