iPerfを使用してネットワークパフォーマンスを測定する方法
1. 概要
このチュートリアルでは、iPerfツールを使用してネットワークパフォーマンスと帯域幅を測定する方法を学習します。
iPerfは、Cプログラミング言語で記述されたオープンソースツールです。 さらに、はクライアントサーバーモデルで動作し、UDPとTCPをサポートします。 したがって、両方にツールがインストールされている2つのシステムが必要です。 まず、サーバーを起動する必要があります。 その後、クライアントマシンからサーバーに接続する必要があります。
2. Installing iPerf on Client and Server
クライアントとサーバーの両方にiPerfをインストールする必要があります。
$ sudo apt install iperf
その後、インストールされているかどうかを確認する必要があります。
$ iperf --version
iperf version 2.0.13 (21 Jan 2019) pthreads
両方がUbuntu/Debianを実行していると仮定すると、手順は両方のマシンで同じです。
3. サーバーの開始
iPerfをインストールした後、サーバーを起動する必要があります。
# iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
サーバーは現在、TCPポート5001でリッスンしています。 デフォルトでは、iPerfはTCPを使用し、ポート5001でリッスンします。
含めることができるオプションのフラグ:
- -u は、サーバーがTCPではなくUDPを使用するようにします
- -pはデフォルトのポートを変更します
たとえば、サーバーでUDPを使用し、ポート5003でリッスンするようにしましょう。
# iperf -s -u -p 5003
------------------------------------------------------------
Server listening on UDP port 5003
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
サーバーはUDPポート5003でリッスンしています。
4. クライアントからサーバーに接続する
TCPまたはUDPを使用できます。
4.1. TCPの使用
サーバーを起動した後、クライアントマシンからサーバーに接続する必要があります。
$ iperf -c 5.182.18.49
------------------------------------------------------------
Client connecting to 5.182.18.49, TCP port 5001
TCP window size: 85.0 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.24 port 38616 connected with 5.182.18.49 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.1 sec 6.12 MBytes 5.10 Mbits/sec
iperf -c 5.182.18.49 は、IPアドレス5.182.18.49でサーバーへの接続を開始します。
デフォルトのTCPウィンドウサイズである85KBが使用されていることがわかります。 また、インターバル時間は10秒です。 さらに、6.12MBが転送されました。 最後に、帯域幅は5.10 Mbits / secであり、これはパフォーマンスを示しています。
含めることができるオプションのフラグ:
- -i は、間隔時間を秒単位で指定します。 10がデフォルトです
- -t は、テストを実行する時間を秒単位で指定します
- -pはポートを指定します。 5001がデフォルトです
- -wはTCPウィンドウサイズを指定します。 85KBがデフォルトです
オプションのフラグのいくつかを使用してみましょう。
iperf -c 5.182.18.49 -i 5 -t 15 -w 416K -p 5003
------------------------------------------------------------
Client connecting to 5.182.18.49, TCP port 5003
TCP window size: 416 KByte
------------------------------------------------------------
[ 3] local 192.168.1.24 port 47300 connected with 5.182.18.49 port 5003
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 5.0 sec 2.88 MBytes 4.82 Mbits/sec
[ 3] 5.0-10.0 sec 2.75 MBytes 4.61 Mbits/sec
[ 3] 10.0-15.0 sec 2.75 MBytes 4.61 Mbits/sec
[ 3] 0.0-15.2 sec 8.38 MBytes 4.62 Mbits/sec
インターバル時間を5秒に設定しました。 さらに、テスト期間を15秒に設定し、TCPウィンドウサイズを416KBに設定しました。 最後に、ポートを5003に設定します。 最も重要なことは、接続を確立するために、サーバーが5001ではなくポート5003でリッスンする必要がある。
4.2. UDPの使用
または、TCPの代わりにUDPを使用することもできます。 確かに、サーバーはUDPも使用している必要があります。
$ iperf -c 5.182.18.49 -u
------------------------------------------------------------
Client connecting to 5.182.18.49, UDP port 5001
Sending 1470 byte datagrams, IPG target: 11215.21 us (kalman adjust)
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.24 port 45640 connected with 5.182.18.49 port 5001
[ 3] WARNING: did not receive ack of last datagram after 10 tries.
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 1.25 MBytes 1.05 Mbits/sec
[ 3] Sent 892 datagrams
帯域幅がTCPよりはるかに低いことがわかります。 その理由は、iPerfがUDPの帯域幅をデフォルトで1Mbits/秒に制限しているためです。 ただし、 -b フラグを追加することで、制限を置き換えることができます。
$ iperf -c 5.182.18.49 -u -b 1000M
------------------------------------------------------------
Client connecting to 5.182.18.49, UDP port 5001
Sending 1470 byte datagrams, IPG target: 11.22 us (kalman adjust)
UDP buffer size: 208 KByte (default)
------------------------------------------------------------
[ 3] local 192.168.1.24 port 56981 connected with 5.182.18.49 port 5001
[ 3] WARNING: did not receive ack of last datagram after 10 tries.
[ ID] Interval Transfer Bandwidth
[ 3] 0.0-10.0 sec 180 MBytes 151 Mbits/sec
[ 3] Sent 128140 datagrams
現在、帯域幅が大幅に高くなっていることがわかります。
5. 結論
この記事では、サーバーを起動し、クライアントマシンでiPerfを実行して、ネットワークパフォーマンスと帯域幅を測定する方法を学びました。