ネットワーク

iperf3の使い方|Windows・Linuxでの帯域測定とオプション一覧

iperf3 は2点間のネットワーク帯域を測定するツール。サーバ側とクライアント側の2台を用意し、実際にトラフィックを流して実効速度を測る。

WindowsとLinuxの両方で使える。ここでは測定の手順と、よく使うオプションをまとめる。

準備

iperf3 のインストールがまだなら先に済ませておく。

Windowsの場合、公式サイトで配布されているバイナリは2016年の3.1.3で更新が止まっているため、winget かGitHubのビルドから最新版を入れる。

winget install --id ar51an.iPerf3 --exact

詳しい手順は別記事にまとめた。

iperf3のダウンロードとインストール|Windows最新版の入手方法

Linuxはパッケージマネージャから入る。

sudo apt install iperf3

測定には2台必要なので、対向で試験する相手側にも同じく準備しておく。

試験構成

一方をサーバ、もう一方をクライアントにする。ここではサーバ側を 192.168.1.200 とする。

[クライアント] ─── ネットワーク ─── [サーバ 192.168.1.200]

サーバ側の実行

iperf3 -s

Server listening on 5201 と表示されれば待ち受け状態になる。

デフォルトのポートは5201番。変更したい場合は -p で指定する。

iperf3 -s -p 5202

接続できない場合はファイアウォールを確認する。サーバ側で5201番(TCP/UDP)の受信を許可しておく必要がある。

クライアント側の実行

iperf3 -c 192.168.1.200

デフォルトではTCPで10秒間測定し、結果が表示される。サーバ側にも同じ結果が出る。

TCPでよく使うオプション

オプション 説明
--get-server-output サーバ側の出力結果もクライアント側に表示する
-n 10M 指定した容量で計測する。10Mなら10Mバイト流した結果を測定。1Gとすれば1Gバイト
-t 30 指定した秒数だけ測定する。デフォルトは10秒
-i 30 指定した間隔(秒)で途中経過を表示する。デフォルトは1秒
-P 4 並列ストリーム数を指定する。10Gを超える回線ではこれを使わないと上限まで出ない
-R 通信方向を逆にする(サーバ→クライアント)
-p 5202 接続先ポートを指定する

-n-t は同時に指定できない。容量で区切るか時間で区切るかを選ぶ。

実行例

iperf3 -c 192.168.1.200 -t 30 -i 10 --get-server-output

30秒間測定し、10秒ごとに途中経過を表示、最後にサーバ側の結果もまとめて表示する。

UDPでの測定

iperf3 -c 192.168.1.200 --get-server-output -u -b 10M
オプション 説明
-u UDPで計測する
-b 10M 10Mbps制限で計測する。指定しない場合は1Mbps
--length 1472 送信するデータサイズを指定する
-i 30 指定した間隔(秒)で結果を表示する
-n 10M 指定した容量で計測する

UDPでは -b の指定が重要。指定しないと1Mbpsでしか流れず、帯域測定にならない。上限まで流したい場合は -b 0 を指定する。

パケットサイズを1500にしたい場合

--length には1472を指定する。

データ1472 + UDPヘッダ8 + IPヘッダ20 = 1500

MTUの検証をするときは、この計算を意識して指定する。

UDPの結果の見方

UDPではTCPと違い、ジッタとパケットロスが表示される。

[ ID] Interval    Transfer   Bitrate   Jitter   Lost/Total Datagrams
  • Jitter … 到達間隔のばらつき。音声や映像では重要
  • Lost/Total … 損失したパケット数と総数

Bandwidth が指定した値(例では10Mbps)を超えていなければ、制限どおりに流れている。

Linuxでバックグラウンド実行する

長時間の測定では、nohup& を使ってバックグラウンドで走らせる。

サーバ側

nohup iperf3 -s -i 30 &

クライアント側

nohup iperf3 -c 1.1.1.1 -n 10M -i 30 --get-server-output > test.txt &

出力結果をカレントディレクトリの test.txt へ保存している。SSH接続が切れても測定が続く。

結果をJSONで出力する

測定結果を機械的に処理したい場合は -J を使う。

iperf3 -c 192.168.1.200 -J > result.json

定期的に測定して記録を残す用途では、こちらのほうが扱いやすい。

うまくいかないときの確認ポイント

症状 原因と対処
Connection timed out サーバ側の5201番がファイアウォールで塞がれている
unable to connect to server サーバ側で iperf3 -s が動いていない。IPアドレスの確認も
速度が全く出ない UDPで -b を指定していない。デフォルトの1Mbpsになっている
10G回線で上限まで出ない -P で並列ストリームを増やす
Windowsで 認識されていません パスが通っていない。インストール手順を確認する

関連記事

-ネットワーク