無線デバイスのスループット
「スループットが低い」、無線デバイスをご評価頂くとこのような問い合わせがあります。その際、計測環境を確認していくと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 |
ウィンドウサイズ、送受信バッファーサイズを指定します。 ※明示的に指定した場合、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ページへ戻りたい方は、以下をクリックしてください。