iperf は、2 つのシステム間のネットワーク パフォーマンスをテストするために使用されるツールです。 iperf アプリケーションは、ネットワークのパフォーマンスに関するより多くの指標を提供します。 iperf アプリケーションはデフォルトではインストールされませんが、ほとんどのディストリビューションのパッケージ マネージャーによって提供されます。
CentOS/RHEL/Fedora システムでは、yum を使用して iperf パッケージをインストールします。
# yum install iperf
iperf には、2 つのシステム間のネットワーク スループットをテストするための「クライアント」と「サーバー」の概念があります。
次の例では、スループットを最大化するために大きな送受信バッファ サイズを設定し、ネットワークを完全に動作させるのに十分な長さの 60 秒間テストを実行します。
サーバー
サーバー システムでは、iperf はクライアント接続をリッスンするように指示されます。
server # iperf3 -i 10 -s
ここでは、
-i – 定期的な帯域幅の更新を提供する間隔
-s – サーバーとしてリッスン
特定のコマンド ライン スイッチの詳細については、man iperf3 を参照してください。
クライアント
クライアント システムでは、iperf はホスト名または IP アドレスを介してリッスン サーバーに接続するように指示されます。
client # iperf3 -i 10 -w 1M -t 60 -c [server hostname or ip address]
ここでは、
-i – 定期的な帯域幅の更新を提供する間隔
-w – ソケット バッファ サイズ (TCP ウィンドウに影響します)。バッファ サイズも、このクライアント コマンドによってサーバーに設定されます
-t – テストの実行時間 (秒単位)
-c – リッスン サーバーに接続します…
特定のコマンド ライン スイッチの詳細については、man iperf3 を参照してください。
テスト結果
テストが完了すると、クライアントとサーバーの両方が結果を報告します。
サーバー
server # iperf3 -i 10 -s ----------------------------------------------------------- Server listening on 5201 ----------------------------------------------------------- Accepted connection from 10.0.0.2, port 22216 [ 5] local 10.0.0.1 port 5201 connected to 10.0.0.2 port 22218 [ ID] Interval Transfer Bandwidth [ 5] 0.00-10.00 sec 17.5 GBytes 15.0 Gbits/sec [ 5] 10.00-20.00 sec 17.6 GBytes 15.2 Gbits/sec [ 5] 20.00-30.00 sec 18.4 GBytes 15.8 Gbits/sec [ 5] 30.00-40.00 sec 18.0 GBytes 15.5 Gbits/sec [ 5] 40.00-50.00 sec 17.5 GBytes 15.1 Gbits/sec [ 5] 50.00-60.00 sec 18.1 GBytes 15.5 Gbits/sec [ 5] 60.00-60.04 sec 82.2 MBytes 17.3 Gbits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth [ 5] 0.00-60.04 sec 0.00 Bytes 0.00 bits/sec sender [ 5] 0.00-60.04 sec 107 GBytes 15.3 Gbits/sec receiver
クライアント
client # iperf3 -i 10 -w 1M -t 60 -c 10.0.0.1 Connecting to host 10.0.0.1, port 5201 [ 4] local 10.0.0.2 port 22218 connected to 10.0.0.1 port 5201 [ ID] Interval Transfer Bandwidth Retr Cwnd [ 4] 0.00-10.00 sec 17.6 GBytes 15.1 Gbits/sec 0 6.01 MBytes [ 4] 10.00-20.00 sec 17.6 GBytes 15.1 Gbits/sec 0 6.01 MBytes [ 4] 20.00-30.00 sec 18.4 GBytes 15.8 Gbits/sec 0 6.01 MBytes [ 4] 30.00-40.00 sec 18.0 GBytes 15.5 Gbits/sec 0 6.01 MBytes [ 4] 40.00-50.00 sec 17.5 GBytes 15.1 Gbits/sec 0 6.01 MBytes [ 4] 50.00-60.00 sec 18.1 GBytes 15.5 Gbits/sec 0 6.01 MBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bandwidth Retr [ 4] 0.00-60.00 sec 107 GBytes 15.4 Gbits/sec 0 sender [ 4] 0.00-60.00 sec 107 GBytes 15.4 Gbits/sec receiver
結果を読む
これら 2 つのシステム間で、毎秒 15.4 ギガビットまたは毎秒約 1835 MiB (メビバイト) の帯域幅を達成できました。
ここで、
間隔 はテスト間隔を意味し、デフォルト値は 10 秒で、「0.0-10.0 秒」と表示されます
Transfer テストの過程で 2 つのノード間で転送されるデータ量を意味します。
帯域幅 iperf テストを使用するパフォーマンス指標です。
UDP プロトコルを使用したネットワーク パフォーマンスのテスト
上記のように、デフォルトの iperf はテストに TCP プロトコルを使用します。オプション「-u」を追加 」を使用して、パフォーマンス テストに UDP プロトコルを使用します。
1. 最初のステップは、サーバーを起動することです。
# iperf -s -u ------------------------------------------------------------ Server listening on UDP port 5001 Receiving 1470 byte datagrams UDP buffer size: 124 KByte (default) ------------------------------------------------------------ [ 3] local 1.1.1.1 port 5001 connected with 1.1.1.2 port 51598 [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 0.004 ms 0/ 893 (0%)
2. クライアント側のコマンドは以下の通りです。
# iperf -u -c server ------------------------------------------------------------ Client connecting to 1.1.1.1, UDP port 5001 Sending 1470 byte datagrams UDP buffer size: 124 KByte (default) ------------------------------------------------------------ [ 3] local 1.1.1.2 port 51598 connected with 1.1.1.1 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec [ 3] Sent 893 datagrams [ 3] Server Report: [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec 0.004 ms 0/ 893 (0%)
UDP モードでのデフォルト帯域幅の変更
UDP モードでは、クライアントはデフォルトの帯域幅 (1 メガビット/秒) を使用してパケットをサーバーに送信するため、UDP の帯域幅のテスト結果は 1.05 メガビット/秒であることがわかります。最適なネットワーク帯域幅を得るために、オプション「-b value」を追加できます ” 送信帯域幅を増やす:
# iperf -u -c server -b 1000M ------------------------------------------------------------ Client connecting to 1.1.1.1, UDP port 5001 Sending 1470 byte datagrams UDP buffer size: 124 KByte (default) ------------------------------------------------------------ [ 3] local 1.1.1.2 port 58097 connected with 1.1.1.1 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 1.10 GBytes 948 Mbits/sec [ 3] Sent 806540 datagrams [ 3] Server Report: [ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams [ 3] 0.0-10.0 sec 1.08 GBytes 929 Mbits/sec 0.010 ms 16203/806540 (2%)
最大転送サイズ (MTU) の測定
-m オプションは、iperf に最大転送サイズ (MTU) も検出するように指示します:
# iperf -mc 192.168.10.12 ------------------------------------------------------------ Client connecting to 192.168.10.12, TCP port 5001 TCP window size: 19.3 KByte (default) ------------------------------------------------------------ [ 3] local 192.168.10.13 port 46558 connected with 192.168.10.12 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0-10.0 sec 113 MBytes 94.7 Mbits/sec [ 3] MSS size 1448 bytes (MTU 1500 bytes, ethernet)