iperf3 チュートリアル:LinuxとWindowsでネットワーク速度をテストする

10分で読めます - 2026年5月7日

hero section cover
目次
  • iperf3 チュートリアル:LinuxとWindowsでネットワークパフォーマンスを測定する
  • iperf3のインストール
  • サーバーのセットアップ
  • クライアントテストの実行
  • 高度なテスト
  • チューニングとトラブルシューティング
  • 推奨ビデオ
共有

iperf3をインストールし、帯域幅テストを実行し、LinuxとWindowsで正確な結果を得るためにTCPバッファを調整する。UDP、双方向、10GbE+のテストをカバー。

iperf3 チュートリアル:LinuxとWindowsでネットワークパフォーマンスを測定する

iperf3は、2つのマシン間のネットワーク帯域幅、ジッター、パケットロスを測定するためのコマンドラインツールです。クライアント・サーバー・モデルを使用します。一方のマシンがリッスンし、もう一方のマシンがトラフィックを送信すると、正確なスループット数値が得られます。このガイドでは、インストール、基本的なテストと高度なテスト、および高速リンクで正確な結果を得るためのシステムの調整方法について説明します。

iperf3のインストール

Debian / Ubuntu

sudo apt update
sudo apt install iperf3

iperf3--versionでインストールを確認する。サーバーとクライアントマシンの両方にインストールする。

Fedora / CentOS / Rocky / Alma

Fedora 22+またはCentOS 8+、Rocky、AlmaLinuxにインストールします:

sudo dnf install iperf3

CentOS 7の場合は、代わりにyumを使用します。パッケージが見つからない場合は、まずEPELリポジトリを有効にしてください:

sudo yum install epel-release
sudo yum install iperf3

ファイアウォールが有効な場合は、ポート5201を開く:

sudo firewall-cmd --add-port=5201/tcp --permanent
sudo firewall-cmd --reload

Windows

iperf.frまたはar51an/iperf3-win-buildsGitHub リポジトリからスタンドアロン実行ファイルをダウンロードします。C:iperf3のようなフォルダに解凍し、確認してください:

cd C:\iperf3
iperf3.exe -v

任意のディレクトリからiperf3を実行するには、システム・プロパティ > 詳細設定 > 環境変数でシステムPATHにフォルダを追加します。また、Windows Defender Firewallでポート5201のTCPを許可する受信ファイアウォールルールを作成する必要があります。

サーバーのセットアップ

でサーバーを起動します:

iperf3 -s

デフォルトでは、TCPポート5201でリッスンする。バックグラウンドでログを取りながら実行するには、次のようにします:

iperf3 -s -D --logfile /var/log/iperf3.log

ss -tulpn | grep 5201で実行されていることを確認する。

ポート5201がネットワーク上でブロックされている場合は、-pを使って別のポートを選ぶ。特定のインターフェースにバインドするには、-Bを使う:

iperf3 -s -B 192.168.1.10

1回限りのテストの場合、iperf3-s -1は1つのクライアント接続を処理して終了する。高帯域幅リンク(40Gbps以上)では、シングルスレッドCPUの制限を回避するために、複数のサーバーインスタンスを異なるポートで実行する。

ファイアウォールが選択したポートのトラフィックを許可していることを確認してください。UFWを使用したUbuntu/Debianの場合:

sudo ufw allow 5201/tcp
sudo ufw allow 5201/udp   # if testing UDP

クライアントテストの実行

基本的なTCPテスト

iperf3 -c 192.168.1.10

このテストでは、TCP上のアップロード帯域幅を10秒間測定する。tで期間を延長する:

iperf3 -c 192.168.1.10 -t 30

10Gbpsまたは25Gbpsのリンクでは、シングルコアCPUの制限により、1つのTCPストリームが3~5Gbpsで終わることが多い。並列ストリームを使用してリンクを飽和させる:

iperf3 -c 192.168.1.10 -P 8

結果を読む

各インターバルの行は、Transfer(送信データ)とBitrate(スループット)を示します。TCPの場合は、以下も見てください:

  • Retr(再送)。高い数値はパケットロスまたは輻輳を意味する。
  • Cwnd(輻輳ウィンドウ)。これが低いか、止まっている場合、バッファまたはウィンドウ・サイズの制限によってスループットに上限が設定されている。

クリーンな1Gbpsリンクの場合、プロトコルのオーバーヘッドを考慮すると940Mbps程度となる。テストは送信側と受信側のサマリー・ラインで終了する。安定したネットワークでは、これらは密接に一致するはずである。

UDPテスト(-uフラグ)の場合、出力にはジッター(パケット到着のばらつき)とロスト/トータルデータグラムが追加される。VoIP のようなリアルタイムのトラフィックでは、1 ms 未満のジッターと 0% のロスが理想的である。

有用なフラグ

フラグ目的
-c <IPサーバーに接続
-p <ポート特定のポートを使用する(デフォルト:5201)
-t <秒テスト時間を秒単位で指定(デフォルト:10)
-i <秒レポート間隔
-P <num並列ストリーム
-uUDPモード
-b <n>Mターゲット帯域幅 (UDP。省略時のデフォルトは1 Mbps)
-Rリバースモード(サーバーが送信、クライアントが受信)
-w <n>KTCPウィンドウ/ソケット・バッファ・サイズ
-JJSON出力
-Zゼロコピー(高速リンクでCPUを減らす)

高度なテスト

双方向テスト

-bidirフラグ(iperf3 3.7+)は、アップロードとダウンロードを同時にテストする:

iperf3 -c 192.168.1.10 --bidir

両方の接続はクライアントから発信されるため、余分なポートを開くことなくNATを通して動作します。双方向の結果が片方向のテストよりずっと低い場合、ルーターやケーブルモデムが全二重トラフィックで苦労している可能性があります。

リバース・モード

Rフラグは、サーバーが送信し、クライアントが受信するようにデータの流れを反転させます。これは、役割を入れ替えることなくダウンロード速度を測定します:

iperf3 -c 192.168.1.10 -t 30 -i 5 -R

順方向と逆方向の結果が大きく異なる場合は、パスの非対称性、輻輳、またはバッファの設定ミスが考えられます。

UDPテスト

UDPテストは、TCPが再送信の背後に隠しているジッターとパケットロスを明らかにする。iperf3のUDPのデフォルトは1Mbpsなので、常に-bでターゲット帯域幅を設定する:

iperf3 -c 192.168.1.10 -u -b 1G

VoIPトラフィック(100コール、200バイトパケット)をシミュレートする:

iperf3 -c 192.168.1.10 -u -b 8M -l 200

品質ベンチマーク: 5ミリ秒以下のジッターはVoIPに適している。0.1%以上のパケットロスはリアルタイム・メディアを著しく劣化させる。

チューニングとトラブルシューティング

よくある問題

ギガビット・リンクで100Mbpsしか出ない? ethtool eth0 で物理インターフェースの速度を確認してください。オートネゴシエーションに失敗し、リンクが低速に落とされることがあります。

イーサネットでMSSが536バイトと表示される。Path MTU Discoveryが無効になっている可能性があります。1,500バイトのMTUに対するデフォルトのMSSは1,460バイトである。テスト中に-m を使用して確認してください。536バイトのMSSは帯域幅を浪費し、オーバーヘッドを追加します。

高速リンクでCPUが最大? Z(ゼロコピー)を使ってCPUの負荷を減らす。40Gbps以上の場合は、複数のサーバー・インスタンスを異なるポートで実行し、CPUコアに分散させます。

結果に一貫性がない?TCP 輻輳ウィンドウが立ち上がる最初の数秒間を省略するには、-O 3 を使用します。ネットワーク・バッファをクリアするため、テスト実行の間に30秒空ける。

1つのストリームが並列ストリームの合計よりもはるかに遅い?1つのストリームが200Mbpsなのに、8つのストリームを組み合わせると1.6Gbpsになる場合、TCPウィンドウまたはOSバッファが1つのストリームに上限を設定しています。以下でバッファをチューニングしてください。

TCPバッファのチューニング

帯域幅-遅延積(帯域幅×RTT)の計算から始めます。10GbpsリンクでRTTが50msの場合、BDPは62.5MBとなります。最大バッファを少なくともBDPの2倍に設定する。

これらを/etc/sysctl.d/99-tcp-tuning.confに追加し、sudo sysctl -pで適用する:

パラメータ推奨 (1-10 Gbps)
net.core.rmem_max134217728 (128 mb)
net.core.wmem_max134217728 (128 mb)
net.ipv4.tcp_rmem4096 131072 134217728
net.ipv4.tcp_wmem4096 131072 134217728
net.core.default_qdiscfq
net.ipv4.tcp_congestion_controlbbr

net.ipv4.tcp_moderate_rcvbufを1に設定し、カーネルがこれらの範囲内で自動チューニングするようにする。64KBを超えるTCPウィンドウでは、net.ipv4.tcp_window_scalingを有効にする(1に設定)。

また、デフォルトのCUBIC輻輳アルゴリズムからGoogleのBBRに切り替えることもできる。パケットロスのある高遅延リンクでは、BBRは一貫してCUBICよりも高いスループットを提供します。

iperf3 の-wフラグを使用して特定のバッファサイズをテストしますが、カーネルのrmem_maxまたはwmem_max を超えることはできないことに注意してください。ギガビットリンクの場合は8MB、100Mbpsの場合は512KBから始めてください。

専用サーバーをプロビジョニングしていて、ネットワークのパフォーマンスを検証したい場合は、セットアップ直後とネットワーク変更後にiperf3のベースラインテストを実行して、リグレッションを早期に発見してください。

推奨ビデオ

ブログ

今週の特集

その他の記事
iperf3 チュートリアル:LinuxとWindowsでネットワーク速度をテストする

iperf3 チュートリアル:LinuxとWindowsでネットワーク速度をテストする

iperf3をインストールし、帯域幅テストを実行し、LinuxとWindowsで正確な結果を得るためにTCPバッファを調整する。UDP、双方向、10GbE+のテストをカバー。

10分で読めます - 2026年5月7日

ZFSスナップショット:作成、リストア、自動化の方法

10分で読めます - 2026年5月5日

その他の記事
background image

ご質問またはカスタムソリューションが必要ですか?

icon

柔軟なオプション

icon

グローバル・リーチ

icon

即時展開

icon

柔軟なオプション

icon

グローバル・リーチ

icon

即時展開