iPerfでのスループットの計測

無線デバイスのスループット

「スループットが低い」、無線デバイスをご評価頂くとこのような問い合わせがあります。その際、計測環境を確認していくとiperf(スループット計測ツール)の使い方に起因していることがあります。

そこで、今回は iPerfの基本的な使い方について紹介しようと思います。

iPerfとは

ネットワークのパフォーマンスを計測するためのツールになります。TCP/UDPで計測可能で、デバイス2台をClient/Serverモードで動作させ、ClientからServerへ指定したトラフィックを流しTX/RXのスループットを計測します。
iPerfは、こちらからダウンロード可能です。

コマンド(iperf3)のフォーマットは、

Client:iperf3 -c <ServerのIPアドレス> [各オプション]
Server:iperf3 -s [各オプション]

です。

オプションを省略した場合、各オプションのデフォルト値が設定されます。iPerfにはiPerf/iPerf2/iPerf3といくつかバージョンがありますが互換性はありません。Client/Serverそれぞれ同じバージョンで計測しましょう。

今回はiPerf3を使用します。

iPerfのオプション

iPerfには、計測をサポートするためのいろいろなオプションがあります。iperf3 -hを実行すると各オプションの内容を確認できます。以下によく使用するオプションと説明(iPerf3 v3.6)を記載します。各バージョンで使用可能なオプションに違いがあります。詳しくはで各iPerfのhelpをご確認ください。

オプション デフォルト値 説明
s サーバーモードで動作します。
c クライアントモードで動作します。
u(Clientのみ) TCP データをUDPで送信します。
i 1 送信結果を表示する間隔(秒)を指定します。
”-i 1”の場合、1秒間隔で直近1秒間の結果を表示します。
t(Clientのみ) 10 データを送信する時間(秒)を指定します。
”-t 30”の場合、30秒間データを送信します。
b(Clientのみ)

TCP:無制限

UDP:1M

ビットレートを指定します。
”-b 100M”の場合、100Mbpsでデータが送信されます。
w Auto

ウィンドウサイズ、送受信バッファーサイズを指定します。
”-w 10M”の場合、ウィンドウサイズを10MB、送受信バッファーを10MB確保します。

※明示的に指定した場合、Auto設定が一時的に解除されるため、カーネルの設定(/proc/sys/net/core, ipv4)に影響を受けます。

p 5201 接続するポートを指定します。
”-p 9000”の場合、9000番のポートを指定して接続します。
P 1

トラフィックを流すコネクション数を指定します。

”-P 2”の場合、2つのコネクションを使用してトラフィックを並行して流します。

R(Clientのみ)

Clientで指定し、Serverからデータを送信させます。

スループット計測

では、実際に計測してみましょう。今回は、STA(計測対象(DUT):Qualcomm QCA6174A)/対抗機ともにLinux上で動作しています。計測する際は、対抗機が計測対象(DUT)以上の送信レートに対応している必要があります。今回試すのは11acのUDP/TCPのTX/RXです。

DUTはAPと11acで接続し、APと対抗機間はEthernet(CAT6)で接続します。11axなどを試す場合、APが11ax・2.5/10Gの Etherに対応し、対抗機も2.5/10GのEtherに対応しAP間をCAT6A以上で接続する必要があります。

UDP TX

以下のコマンドで試してみます。

Client(DUT) : iperf3 -c 192.168.11.21 -u
Client(DUT) : iperf3 -c 192.168.11.21 -u -b 500M
Client(DUT) : iperf3 -c 192.168.11.21 -u -b 1G

Server(対抗機) : iperf3 -s

このコマンドは、192.168.11.21の対抗機に対してUDPで1M/500M/1Gbpsのトラフィックを10秒間(デフォルト)かけることを意味します。

# iperf3 -c 192.168.11.21 -u
Connecting to host 192.168.11.21, port 5201
[  5] local 192.168.11.100 port 33411 connected to 192.168.11.21 port 5201
[ ID] Interval           Transfer     Bitrate         Total Datagrams
[  5]   0.00-1.00   sec   129 KBytes  1.05 Mbits/sec  91
[  5]   1.00-2.00   sec   127 KBytes  1.04 Mbits/sec  90
[  5]   2.00-3.00   sec   129 KBytes  1.05 Mbits/sec  91
[  5]   3.00-4.00   sec   127 KBytes  1.04 Mbits/sec  90
[  5]   4.00-5.00   sec   129 KBytes  1.05 Mbits/sec  91
[  5]   5.00-6.00   sec   129 KBytes  1.05 Mbits/sec  91
[  5]   6.00-7.00   sec   127 KBytes  1.04 Mbits/sec  90
[  5]   7.00-8.00   sec   129 KBytes  1.05 Mbits/sec  91
[  5]   8.00-9.00   sec   127 KBytes  1.04 Mbits/sec  90
[  5]   9.00-10.00  sec   129 KBytes  1.05 Mbits/sec  91
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec  1.25 MBytes  1.05 Mbits/sec  0.000 ms  0/906 (0%)  sender
[  5]   0.00-10.00  sec  1.25 MBytes  1.05 Mbits/sec  0.118 ms  0/906 (0%)  receiver
iperf Done.
# iperf3 -c 192.168.11.21 -u -b 500M
Connecting to host 192.168.11.21, port 5201
[  5] local 192.168.11.100 port 52229 connected to 192.168.11.21 port 5201
[ ID] Interval           Transfer     Bitrate         Total Datagrams
[  5]   0.00-1.00   sec  59.6 MBytes   500 Mbits/sec  43143
[  5]   1.00-2.00   sec  59.6 MBytes   500 Mbits/sec  43170
[  5]   2.00-3.00   sec  59.6 MBytes   500 Mbits/sec  43145
[  5]   3.00-4.00   sec  59.6 MBytes   500 Mbits/sec  43163
[  5]   4.00-5.00   sec  59.6 MBytes   500 Mbits/sec  43191
[  5]   5.00-6.00   sec  59.6 MBytes   500 Mbits/sec  43124
[  5]   6.00-7.00   sec  59.6 MBytes   500 Mbits/sec  43190
[  5]   7.00-8.00   sec  59.6 MBytes   500 Mbits/sec  43155
[  5]   8.00-9.00   sec  59.6 MBytes   500 Mbits/sec  43154
[  5]   9.00-10.00  sec  59.6 MBytes   500 Mbits/sec  43174
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec   596 MBytes   500 Mbits/sec  0.000 ms  0/431609 (0%)  sender
[  5]   0.00-10.00  sec   596 MBytes   500 Mbits/sec  0.027 ms  144/431609 (0.033%)  receiver
iperf Done.
# iperf3 -c 192.168.11.21 -u -b 1G
Connecting to host 192.168.11.21, port 5201
[  5] local 192.168.11.100 port 33252 connected to 192.168.11.21 port 5201
[ ID] Interval           Transfer     Bitrate         Total Datagrams
[  5]   0.00-1.00   sec  88.1 MBytes   739 Mbits/sec  63802
[  5]   1.00-2.00   sec  83.5 MBytes   700 Mbits/sec  60456
[  5]   2.00-3.00   sec  82.8 MBytes   694 Mbits/sec  59949
[  5]   3.00-4.00   sec  82.6 MBytes   693 Mbits/sec  59832
[  5]   4.00-5.00   sec  85.0 MBytes   713 Mbits/sec  61569
[  5]   5.00-6.00   sec  85.8 MBytes   720 Mbits/sec  62112
[  5]   6.00-7.00   sec  85.6 MBytes   718 Mbits/sec  62000
[  5]   7.00-8.00   sec  85.9 MBytes   720 Mbits/sec  62169
[  5]   8.00-9.00   sec  85.6 MBytes   718 Mbits/sec  61975
[  5]   9.00-10.00  sec  85.9 MBytes   720 Mbits/sec  62170
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams
[  5]   0.00-10.00  sec   851 MBytes   714 Mbits/sec  0.000 ms  0/616034 (0%)  sender
[  5]   0.00-10.00  sec   851 MBytes   714 Mbits/sec  0.021 ms  101/616033 (0.016%)  receiver
iperf Done.

Interval : 続くデータの集計区間
Transfer : Interval間に送信されたデータ量
Bitrate : Interval間のスループット
Total Datagrams: 送信したパケット数

’-b’オプションを指定しない場合、デフォルト値の1Mbpsのビットレートになってしまいます。指定した場合も十分なトラフィック量でない場合、期待結果とはなりません(500M)。

今回は、11acでの計測ですので1G/500M/1Mであれば1Gが正しいオプション設定となります。UDPの場合、Clientの”receiver”のBitrateで結果を確認できます。

TCP TX

以下のコマンドで試してみます。

Client(DUT) : iperf3 -c 192.168.11.21
Client(DUT) : iperf3 -c 192.168.11.21 -w 10K

Server(対抗機) : iperf3 -s

1つ目のClientのコマンドは、192.168.11.21の対抗機に対してTCPでトラフィックを10秒間かけることを意味します。
2つ目のClientのコマンドは、192.168.11.21の対抗機に対してTCPでトラフィックをウィンドウサイズ10KBで10秒間かけることを意味します。

# iperf3 -c 192.168.11.21
Connecting to host 192.168.11.21, port 5201
[  5] local 192.168.11.100 port 37906 connected to 192.168.11.21 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.01   sec  73.5 MBytes   609 Mbits/sec    0   3.18 MBytes
[  5]   1.01-2.00   sec  73.8 MBytes   626 Mbits/sec    0   3.63 MBytes
[  5]   2.00-3.00   sec  75.0 MBytes   629 Mbits/sec    1   3.63 MBytes
[  5]   3.00-4.00   sec  80.0 MBytes   672 Mbits/sec    0   3.63 MBytes
[  5]   4.00-5.00   sec  78.8 MBytes   660 Mbits/sec    0   3.63 MBytes
[  5]   5.00-6.00   sec  80.0 MBytes   672 Mbits/sec    0   3.63 MBytes
[  5]   6.00-7.00   sec  78.8 MBytes   661 Mbits/sec    0   3.65 MBytes
[  5]   7.00-8.01   sec  77.5 MBytes   647 Mbits/sec    0   3.67 MBytes
[  5]   8.01-9.00   sec  78.8 MBytes   662 Mbits/sec    0   3.67 MBytes
[  5]   9.00-10.01  sec  80.0 MBytes   666 Mbits/sec    0   3.75 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.01  sec   776 MBytes   650 Mbits/sec    1             sender
[  5]   0.00-10.01  sec   776 MBytes   650 Mbits/sec                  receiver
iperf Done.
# iperf3 -c 192.168.11.21 -w 10K
Connecting to host 192.168.11.21, port 5201
[  5] local 192.168.11.100 port 33476 connected to 192.168.11.21 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  1.72 MBytes  14.4 Mbits/sec    0   21.2 KBytes
[  5]   1.00-2.00   sec  1.70 MBytes  14.3 Mbits/sec    0   21.2 KBytes
[  5]   2.00-3.00   sec  1.71 MBytes  14.3 Mbits/sec    0   21.2 KBytes
[  5]   3.00-4.00   sec  1.69 MBytes  14.2 Mbits/sec    0   21.2 KBytes
[  5]   4.00-5.00   sec  1.70 MBytes  14.3 Mbits/sec    0   21.2 KBytes
[  5]   5.00-6.00   sec  1.69 MBytes  14.2 Mbits/sec    0   21.2 KBytes
[  5]   6.00-7.00   sec  1.71 MBytes  14.3 Mbits/sec    0   21.2 KBytes
[  5]   7.00-8.00   sec  1.73 MBytes  14.5 Mbits/sec    0   21.2 KBytes
[  5]   8.00-9.00   sec  1.73 MBytes  14.5 Mbits/sec    0   21.2 KBytes
[  5]   9.00-10.00  sec  1.70 MBytes  14.3 Mbits/sec    0   21.2 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec  17.1 MBytes  14.3 Mbits/sec    0             sender
[  5]   0.00-10.00  sec  17.1 MBytes  14.3 Mbits/sec                  receiver
iperf Done.

Interval : 続くデータの集計区間
Transfer : Interval間に送信されたデータ量
Bitrate : Interval間のスループット
Retr : 再送されたパケット数
Cwnd : 輻輳ウィンドウサイズ

’-w’オプションを使用しない場合、自動でウィンドウサイズ・送受信のバッファサイズを調整するため基本的に問題ありませんが、kernel設定の違いにより調整が必要な場合があります。速度が出ない場合には、送受信双方のkernelの設定(/proc/sys/net/core、/proc/sys/net/ipv4)を見直してみるのもいいかもしれません。

最後の計測結果は’-w’を10KBに設定した場合の結果です。この場合、ウィンドウサイズが制限されるためスループットもかなり低い値となっています。’-w’オプションを使用する場合は、kernelの設定が適切か確認する必要があります。

RX

RXの場合、

iperf3 -s

でサーバーで起動するか、

iperf3 -c 192.168.11.21 -R

でClientで起動するがServerから送信してもらうように’-R’オプションを指定します。’-s’の場合、2台を制御する必要がありますが、’-R’であればClient一台から制御可能です。シールドボックスで計測する場合などに便利です。

# iperf3 -s
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
Accepted connection from 192.168.11.21, port 37694
[  5] local 192.168.11.100 port 5201 connected to 192.168.11.21 port 37696
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  50.1 MBytes   421 Mbits/sec
[  5]   1.00-2.00   sec  66.5 MBytes   558 Mbits/sec
[  5]   2.00-3.00   sec  62.7 MBytes   526 Mbits/sec
[  5]   3.00-4.00   sec  62.0 MBytes   520 Mbits/sec
[  5]   4.00-5.00   sec  66.1 MBytes   554 Mbits/sec
[  5]   5.00-6.00   sec  66.3 MBytes   556 Mbits/sec
[  5]   6.00-7.00   sec  66.1 MBytes   554 Mbits/sec
[  5]   7.00-8.00   sec  64.0 MBytes   537 Mbits/sec
[  5]   8.00-9.00   sec  66.8 MBytes   560 Mbits/sec
[  5]   9.00-10.00  sec  66.9 MBytes   561 Mbits/sec
[  5]  10.00-10.05  sec  3.48 MBytes   543 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.05  sec   641 MBytes   535 Mbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------
# iperf3 -c 192.168.11.21 -R
Connecting to host 192.168.11.21, port 5201
Reverse mode, remote host 192.168.11.21 is sending
[  5] local 192.168.11.100 port 33496 connected to 192.168.11.21 port 5201
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec  57.4 MBytes   481 Mbits/sec
[  5]   1.00-2.00   sec  66.7 MBytes   559 Mbits/sec
[  5]   2.00-3.00   sec  66.6 MBytes   559 Mbits/sec
[  5]   3.00-4.00   sec  66.5 MBytes   558 Mbits/sec
[  5]   4.00-5.00   sec  66.7 MBytes   560 Mbits/sec
[  5]   5.00-6.00   sec  65.5 MBytes   549 Mbits/sec
[  5]   6.00-7.00   sec  67.0 MBytes   562 Mbits/sec
[  5]   7.00-8.00   sec  66.6 MBytes   559 Mbits/sec
[  5]   8.00-9.00   sec  66.9 MBytes   561 Mbits/sec
[  5]   9.00-10.00  sec  67.7 MBytes   567 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   664 MBytes   557 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   658 MBytes   552 Mbits/sec                  receiver
iperf Done.

まとめ

このようにiperfで比較的簡単にスループットを計測可能ですが、適切なオプションを設定しないと間違った結果になってしまう可能性があります。何かおかしいと思ったときは、まずは環境を疑ってみるのもいいかもしれません。

次回はiPerfを使用して、DBS(Dual band simultaneous)のスループットを計測し、DBSのコンカレントに対する優位性を検証してみたいと思います。

お問い合わせ

Qualcomm製品に関するご質問等がございましたら、以下リンクよりお問い合わせください。

Qualcomm メーカー情報Topへ

Qualcomm メーカー情報Topページへ戻りたい方は、以下をクリックしてください。