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を実行して、ネットワークパフォーマンスと帯域幅を測定する方法を学びました。