iPerf3で実現する正確なネットワークスループット測定 – Linuxサーバー間の速度テスト完全ガイド
iperf3は、リアルタイムのネットワークスループット測定を行うための無料・オープンソースのクロスプラットフォーム対応コマンドラインツールです。IPv4とIPv6の両方に対応しており、IPネットワークで到達可能な最大帯域幅をテストできる最も強力なツールの一つとして知られています。
[関連記事: Linuxで使える17の便利な帯域幅監視ツール]
iperfを使用すると、タイミング、バッファサイズ、TCP・UDP・SCTPなどのプロトコルに関連するさまざまなパラメータを調整でき、ネットワークパフォーマンスのチューニング作業に大いに役立ちます。
ネットワークパフォーマンスを最大限に引き出す、あるいは向上させるためには、ネットワークの送受信能力におけるスループットとレイテンシの両方を改善する必要があります。
ただし、実際のチューニング作業に入る前に、まずテストを実施して全体的なネットワークパフォーマンスの統計情報を収集し、そのデータをもとにチューニングの方針を決定することが重要です。
測定結果には、秒単位の時間間隔、転送データ量、帯域幅(転送レート)、パケットロスなど、ネットワークパフォーマンスに関する有用なパラメータが含まれます。iperf3は主に、特定の経路上のTCP接続をチューニングする目的で設計されており、本ガイドでもこの点に焦点を当てて解説します。
必要条件:
- iperf3がインストールされ、ネットワークで相互接続された2台のコンピュータ。
LinuxシステムへのiPerf3のインストール方法
iperf3の使用を開始する前に、ベンチマークに使用する2台のマシン双方にインストールする必要があります。iperf3は主要なLinuxディストリビューションの公式ソフトウェアリポジトリで提供されているため、以下のようにパッケージマネージャーを使えば簡単にインストールできます。
$ sudo apt install iperf3 [On Debian, Ubuntu and Mint] $ sudo yum install iperf3 [On RHEL/CentOS/Fedora and Rocky/AlmaLinux] $ sudo emerge -a net-misc/iperf [On Gentoo Linux] $ sudo apk add iperf3 [On Alpine Linux] $ sudo pacman -S iperf3 [On Arch Linux] $ sudo zypper install iperf3 [On OpenSUSE]
両方のマシンにiperf3がインストールできたら、ネットワークスループットのテストを開始しましょう。
2台のLinuxサーバー間でネットワーク速度をテストする方法
まず、サーバーとして使用するリモートマシンに接続し、-sフラグを付けてiperf3をサーバーモードで起動します。デフォルトではポート5201で待ち受けます。
-fスイッチを使用すると、レポートの表示形式を指定できます(k、m、gはKbits、Mbits、Gbits、K、M、GはKBytes、MBytes、GBytesを表します)。
$ iperf3 -s -f K
ポート5201がサーバー上の他のプログラムで使用されている場合は、-pスイッチで別のポート(例:3000)を指定できます。
$ iperf3 -s -p 3000
必要に応じて、-Dフラグを使ってサーバーをデーモンとしてバックグラウンド実行し、サーバーのメッセージをログファイルに出力することも可能です。
$ iperf3 -s -D > iperf3log
次に、クライアントとして扱うローカルマシン(実際のベンチマークが実行される側)で、-cフラグを付けてiperf3をクライアントモードで実行し、サーバーが稼働しているホスト(IPアドレス、ドメイン名、ホスト名のいずれか)を指定します。
$ iperf3 -c 192.168.10.1 -f K
約18〜20秒後、クライアントは処理を終了し、ベンチマークの平均スループットを示す結果を出力します。以下のスクリーンショットをご覧ください。
サーバー間のネットワークスループット測定上記のスクリーンショットのベンチマーク結果を見ると、サーバー側とクライアント側で値に差異があることがわかります。ただし、実施するすべてのテストでは、iperfクライアントマシンで得られた結果を採用することを推奨します。
Linuxで高度なネットワークスループットテストを実行する方法
より高度なテストを実行するために、クライアント側で使用できるオプションがいくつか用意されています。以下で順に解説します。
特定の時点でネットワーク上を流れるデータ量を左右する重要な要素の一つがTCPウィンドウサイズであり、TCP接続のチューニングにおいて非常に重要です。-wフラグを使用して、ウィンドウサイズ/ソケットバッファサイズを設定できます。
$ iperf3 -c 192.168.10.1 -f K -w 500K
サーバーが送信しクライアントが受信する逆方向モードでテストを実行するには、-Rスイッチを追加します。
$ iperf3 -c 192.168.10.1 -f K -w 500K -R
双方向テスト(両方向の帯域幅を同時に測定)を実行するには、-dオプションを使用します。
$ iperf3 -c 192.168.10.1 -f K -w 500K -d
クライアントの出力にサーバー側の測定結果も表示したい場合は、--get-server-outputオプションを使用します。
$ iperf3 -c 192.168.10.1 -f K -w 500K -R --get-server-output
クライアント側でサーバーのネットワーク測定結果を取得さらに、-Pオプションを使用すると、同時に実行される並列クライアントストリームの数(この例では2)を設定することもできます。
$ iperf3 -c 192.168.10.1 -f K -w 500K -P 2
詳細については、iperf3のmanページを参照してください。
$ man iperf3
以上で解説は終わりです!実際のネットワークパフォーマンスチューニングに取り掛かる前に、必ずネットワークパフォーマンステストを実施することを忘れないでください。iperf3は、ネットワークスループットテストの実行に非常に役立つ強力なツールです。
ご意見やご質問がありましたら、下のコメントフォームからぜひお聞かせください。
-
Bashの「実行」と「source」の違いを徹底解説!シェバン・フォーク・環境変数の仕組み
この記事では、Bashでスクリプトを実行する場合とsourceコマンドで読み込む場合の違いについて、内部で何が起こっているのかを詳しく解説します。まずは、スクリプトの呼び出し方によってプログラムがどのように処理されるのかを理解していきましょう。 補足: スクリプトに拡張子を付けるかどうかは動作に影響しません。拡張子がなくても問題なく実行できます。 シェバン(#!)とは 基本的に、すべてのスクリプトはシェバン(#!)と呼ばれる行から始まります。Bashでは#(ハッシュ)記号はコメントとして解釈されますが、シェバンには特別な意味があります。シェバンは、指定されたインタプリタにプログラムの実行を委ね
-
Linuxの起動時・再起動時にコマンドやスクリプトを自動実行する方法:ステップバイステップガイド
Linuxシステムを起動してログインするとき、その裏側で何が起こっているのかを観察するのはとても興味深いものです。物理マシンの電源ボタンを押す、あるいは仮想マシンを起動するだけで、一連のイベントが連鎖的に実行され、完全に機能するシステムが立ち上がります。場合によっては1分もかからずに。ログアウトやシャットダウンの時も同様です。 さらに面白いのは、OSの起動時やログイン・ログアウト時に、特定のコマンドや処理を自動的に実行させられるという点です。 この記事では、特定のディストリビューションに依存しない形で、これらを実現するための伝統的な方法を解説します。 注意: ログイン・ログアウト時のイベントに