2026年5月27日
2026年5月27日
iperf3でネットワーク帯域を測定する方法:TCP・UDPの測り方と結果の読み方
2台のサーバー間の通信速度を正しく測るには、片方で iperf3 -s、もう片方で iperf3 -c 相手のIP を実行し、方向を変えたり(-R)、並列数を増やしたり(-P)しながら複数回測ります。この記事では、iperf3 の準備から TCP・UDP の測定、結果の読み方、遅いときの切り分け、本番環境で測るときの注意までを説明します。VPS とバックアップ先の間や、Web サーバーとデータベースサーバーの間の速度を確かめたいときに使えます。
iperf と iperf3 の違い
「iperf」には、iperf2 と iperf3 という別々に開発されているツールがあります。名前は似ていますが通信の仕組みが異なり、互いにつながりません。サーバーとクライアントは同じ種類にそろえてください。既定の待ち受けポートも、iperf2 は 5001、iperf3 は 5201 と異なります。
この記事では、主要なディストリビューションのパッケージで手に入りやすい iperf3 を使います。iperf3 は長く「1つのプロセスが1つのスレッドで動く」作りで、高速な回線では CPU の1コアが先に限界になることがありました。3.16 以降はストリームごとにスレッドを使う形に改められています。版によって結果や使えるオプションが変わるため、iperf3 --version で確認しておきます(2026年10月現在、ディストリビューションによって入っている版にかなり差があります)。
インストールと待ち受け側の準備
# Debian / Ubuntu
sudo apt install iperf3
# RHEL 系(AlmaLinux、Rocky Linux など)
sudo dnf install iperf3
Debian 系では、インストール時に「常駐サービスとして自動起動するか」を尋ねられることがあります。測るときだけ起動すれば十分なので、通常は自動起動にしないほうが安全です。
測定される側(サーバー)で待ち受けを始めます。
iperf3 -s -1
-1 は、1回の測定が終わったら自動で終了するオプションです。待ち受けを開けたままにしておくと、第三者に帯域を使われる可能性があるため、必要なときだけ起動します。
ファイアウォールでは、測定に使うクライアントの IP アドレスからだけ 5201 番を許可します。クラウドの VPS では、OS のファイアウォールとは別に、管理画面のセキュリティグループなどでも許可が必要な場合があります。
# ufw の例(198.51.100.20 はクライアントの IP)
sudo ufw allow from 198.51.100.20 to any port 5201 proto tcp
# firewalld の例(--permanent を付けないので再起動や reload で消える)
sudo firewall-cmd --add-port=5201/tcp
UDP で測るときは、同じポートの UDP も許可します。測定が終わったら、追加した許可ルールを削除してください。
TCP で測る
クライアント側から、サーバーの IP アドレスを指定して実行します。
iperf3 -c 203.0.113.10 -t 30 -O 3
既定の測定時間は10秒ですが、通信速度は始めの数秒で徐々に上がっていくため、-t 30 で30秒測り、-O 3 で最初の3秒を集計から除いています。結果の最後に、次のような集計が出ます(数値は例です)。
[ ID] Interval Transfer Bitrate Retr
[ 5] 0.00-30.00 sec 3.21 GBytes 919 Mbits/sec 12 sender
[ 5] 0.00-30.00 sec 3.21 GBytes 918 Mbits/sec receiver
- Bitrate: 1秒あたりのビット数です。
Mbits/secはメガビット毎秒なので、ファイルのダウンロード速度などで使われるメガバイト毎秒に直すには8で割ります。上の例はおよそ 115 MB/s です。 - sender と receiver: 送った量と、相手が受け取った量です。実際に届いた速さとして見るのは receiver の行です。
- Retr: TCP の再送の回数(Linux で表示されます)。途中の行で再送が続いている場合は、経路のどこかでパケットが失われているか、混雑しています。
途中の行には Cwnd(輻輳ウィンドウ、一度に送れるデータ量の目安)も表示されます。値が小さいまま増えない場合は、パケットの損失によって送信量が抑えられていることを示しています。
方向を変えて測る
iperf3 -c だけで測ると、クライアントからサーバーへの方向(上り)だけを測ります。回線や VPS の帯域は上りと下りで違うことが多いため、-R で逆方向も測ってください。
iperf3 -c 203.0.113.10 -t 30 -O 3 -R # サーバー → クライアント
iperf3 -c 203.0.113.10 -t 30 -O 3 --bidir # 両方向を同時に(3.7 以降)
並列数を増やして測る
iperf3 -c 203.0.113.10 -t 30 -O 3 -P 4
-P 4 は4本の TCP 接続を同時に使います。1本では遅いのに、並列にすると合計が大きく伸びる場合、回線そのものではなく「1本の接続あたりの上限」に当たっています。主な原因は、遠い相手との通信で TCP のバッファーが足りないこと、経路上の機器が接続ごとに帯域を制限していること、古い iperf3 で CPU の1コアが限界になっていることなどです。
UDP で測る:ジッターと損失を見る
UDP の測定は、決めた速さで送り続けて、どれだけ届いたかを見るものです。音声や映像の通話、VPN の品質を確かめるのに向いています。
iperf3 -c 203.0.113.10 -u -b 200M -t 30 -l 1400
UDP では -b で送信の速さを指定します。指定しないと既定の 1 Mbit/s で送るため、帯域の測定にはなりません。-l 1400 は1パケットの大きさで、経路の MTU を超えて分割されないように小さめにしています。結果では次の2つを見ます。
- Jitter: パケットが届く間隔のばらつきです。値が大きいと、通話などで音や映像が途切れやすくなります。
- Lost/Total Datagrams: 送ったうち失われた割合です。
-bを少しずつ上げ、損失が急に増え始める手前が、その経路で安定して出せる速さの目安になります。
UDP は相手が受け取れるかに関係なく送り続けるため、大きな -b を指定すると回線を埋め尽くし、同じ回線を使う他の通信に影響します。本番の回線では、低い値から始めてください。
結果が遅いときの切り分け
測定値が回線の契約上の速さより低くても、すぐに回線の問題とは限りません。次の順に確かめると、原因を絞り込めます。
- 自分自身との通信で測る: サーバー上で
iperf3 -sとiperf3 -c 127.0.0.1を同時に動かすと、ネットワークを通らずに測れます。ここで遅いなら、CPU の性能や iperf3 の版が限界になっています。 - 距離(RTT)とバッファーを確かめる: 1本の TCP 接続で出せる速さは、おおよそ「バッファーの大きさ ÷ 往復時間」で決まります。例えば 1Gbps を往復 100ms の相手に出すには、約 12.5MB のバッファーが必要です。
pingで往復時間を確認し、-Pで並列にして伸びるかを見ます。Linux ではバッファーは自動で調整されますが、上限はカーネルの設定(net.ipv4.tcp_rmemなど)で決まります。 - 再送が多いなら経路を調べる:
Retrが多い、または UDP の損失が多い場合は、mtrで経路のどこで損失や遅延が起きているかを確認します。 - 時間帯を変えて測る: 共有の回線や VPS では、混雑する時間帯に速度が落ちることがあります。1回の結果で判断せず、時間帯を変えて複数回測ります。
- プランの上限を確認する: VPS のプランやクラウドのインスタンスの種類によっては、帯域に上限が設けられています。事業者の資料で確認してください。
なお、iperf3 が測るのはメモリからメモリへの転送の速さです。ディスクの読み書きや Web サーバーの処理は含まれません。「バックアップの転送が遅い」場合は、iperf3 の結果が十分に速ければ、ディスクや圧縮、転送ツールの設定に原因があると判断できます。
結果を記録して比べる
-J を付けると結果を JSON で出力できるので、jq で必要な値だけを取り出せます。
iperf3 -c 203.0.113.10 -t 30 -O 3 -J > result.json
jq '.end.sum_received.bits_per_second / 1e6 | floor' result.json # 受信側の Mbps
jq '.end.sum_sent.retransmits' result.json # 再送回数
定期的に測って記録すれば、「先月より遅くなった」といった変化に気づけます。ただし、測定のたびに大量のデータを送るため、転送量に上限や課金がある環境では回数と時間を控えめにしてください。
測定するときの注意
- 自分が管理するか、許可を得たサーバーで測る: インターネット上には公開されている iperf3 サーバーもありますが、利用条件や混雑の状況は運営者によって異なります。業務での測定は、自分で用意した2台の間で行うと、条件をそろえた比較ができます。
- 事業者の規約を確認する: VPS やクラウドによっては、大量の通信を続ける行為について規約で定めている場合があります。
- 本番のサイトへの影響を考える: 帯域を使い切る測定は、その間 Web サイトの表示を遅くします。アクセスの少ない時間帯を選び、測定時間を短くします。
- 待ち受けを残さない:
-1で1回ごとに終了させ、ファイアウォールの許可も元に戻します。
まとめ
- iperf2 と iperf3 は互換性がない別のツール。両側を iperf3 にそろえ、
iperf3 --versionで版を確認する。 - 待ち受けは
iperf3 -s -1で必要なときだけ起動し、5201 番はクライアントの IP からだけ許可する。 - TCP は
-t 30 -O 3で測り、receiver の Bitrate を見る。-Rで逆方向、-Pで並列も測る。 - UDP は
-bで送る速さを指定し、Jitter と損失率を見る。大きすぎる値で回線を埋めない。 - 遅いときは、自分自身との通信、往復時間とバッファー、再送、時間帯、プランの上限の順に切り分ける。