本篇介紹如何使用 iPerf3 這個網路速度測試工具,在各種作業系統與手機上檢測網路的頻寬。

iPerf3 是一個網路頻寬測試指令工具,支援 IPv4 與 IPv6 網路位址與 TCP、UDP、SCTP 傳輸協定,可在 Windows、Mac OS X、Linux、FreeBSD 與手機等各種平台使用,是一個簡單又實用的小工具。

安裝 iPerf3

iPerf3 本身其實只是一個以 C++ 所開發的小程式,在 iPerf3 的官方網站上有提供各種平台的 iPerf3 預先編譯版本,下載下來之後不需要安裝,解壓縮後即可使用。

Debian/Ubuntu Linux

在 Debian 或 Ubuntu Linux 中,可以使用 apt 安裝:

sudo apt-get install iperf3

CentOS Linux

CentOS Linux 中可用 yum 安裝:

sudo yum install epel-release
sudo yum install iperf3

自行編譯安裝

對於沒有提供預先編譯版本的平台(例如樹莓派),也可以自己下載原始碼來編譯安裝:

tar zxvf iperf-3.1.3-source.tar.gz
cd iperf-3.1.3/
./configure
sudo make install

接著將 /usr/local/lib 加入 LD_LIBRARY_PATH 之中:

export LD_LIBRARY_PATH=/usr/local/lib

再測試一下:

iperf3

若可以執行,就表示安裝成功了。

測試網路頻寬

一般在使用 iPerf3 測試時,要同時在 server 端與 client 端都各執行一個 iPerf3 程式,讓它們互相傳送資料進行測試,首先啟動 server 端的 iperf3

# Server 端
iperf3 -s

接著在 client 端執行:

# Client 端
iperf3 -c SERVER_IP

其中 SERVER_IP 要換成 server 的 IP 位址或是主機名稱,在測試時 server 端與 client 端都會出現測試的數據,以下是測試的結果。

Client 端

Server 端

公用伺服器

如果自己手上沒有可用的伺服器,也可以使用公用的伺服器來測試,使用方式都相同:

# 使用公用伺服器
iperf3 -c debit.k-net.fr

測試結果如下:

使用公用伺服器

不管在哪一種平台上,iPerf3 的使用方式都相同,這是在 Windows 命令提示自元中使用 iPerf3 的畫面。

Windows 命令提示自元

Android 與 iOS 手機上也有支援 iperf3 的 app 可以使用,可讓手機當成 client 或 server,用法也都相同。

Magic iPerf

iPerf3 進階指令

iPerf3 所提供的選項非常多,以下介紹一些常用的範例。

測試時間

-t 參數可以指定傳輸測試的持續時間,而 -i 可以指定輸出數據的間隔時間:

# 測試 20 秒,每隔 4 秒輸出測試數據
iperf3 -c SERVER_IP -t 20 -i 4

儲存測試結果

--logfile 參數可以將輸出的測試結果報表或是錯誤訊息儲存至檔案中:

# 將輸出訊息儲存至 output.txt 檔案中
iperf3 -c SERVER_IP --logfile output.txt

指定連接埠

iPerf3 預設會使用的連接埠(port)是 5201,若要自行指定連接埠,可以使用 -p 參數:

# 使用 12345 這個連接埠的 server
iperf3 -s -p 12345

# 使用 12345 這個連接埠的 client
iperf3 -c SERVER_IP -p 12345

JSON 格式輸出

若要使用程式讀取 iPerf3 的測試結果,可將輸出格式改為 JSON 會更方便。

# 使用 JSON 格式輸出
iperf3 -c SERVER_IP -J

多條連線

-P 參數可以指定同時使用幾條連線進行測試:

# 同時使用 2 條連線測試
iperf3 -c SERVER_IP -P 2

UDP 傳輸協定

若要測試 UDP 傳輸協定的效能,可以使用 -u 參數:

# 使用 UDP 傳輸協定
iperf3 -c SERVER_IP -u

反向傳輸

iPerf3 預設會測試上傳的速度(由 client 傳送資料,而 server 負責接收)若要測試下載的速度(由 server 傳送資料,而 client 負責接收),則可以使用 -R 參數:

# 測試反向傳輸(下載)
iperf3 -c SERVER_IP -R

IPv4 與 IPv6

-4-6 可以指定只使用 IPv4 或 IPv6:

# 只使用 IPv4
iperf3 -c SERVER_IP -4

# 只使用 IPv6
iperf3 -c SERVER_IP -6

自訂傳送檔案

我們可以使用 -f 自訂用來測試傳送的檔案:

# 使用 YOUR_FILE 這個檔案來測試傳送速度
iperf3 -c SERVER_IP -F YOUR_FILE