Skip to main content

 

Cisco Meraki Documentation

Measure Wireless Throughput Using iPerf

By Karla Cisneros Galvan

Introduction

This document explains how to effectively measure throughput on a wireless network.

Instructions

Step 1. Install iperf on a client that can be connected by cable to the network. This client will act as the iperf server.

 

Step 2. Install iperf on a client that can be connected wirelessly to the network. This wireless client will be used as the iperf client.

 

Step 3. Build a topology like this one:

img1.png

 

Note: Ensure both iperf server and client belong to the same VLAN/subnet.

Ensure either the server or the client is connected by wired, otherwise they'll be sharing the RF spectrum and most likely will halve their speed.

 

Step 4. Start iperf on the server

 

$ iperf -s

-s = host acting as server

 

Note: If using iperf v3, you need to use the command iperf3 -s.

 

Step 5. Start the iperf data transfer on the client to measure the throughput.

 

Measure upstream throughput (Traffic from the wireless client to the Access Point):

 

$ iperf -c <server-IP> -u -i 1 -t 10 -b 900M

 

-u = UDP

-i 1 = measurement is displayed every one sec

-t 10 = Test performed for 10 seconds

-b 900M = client will attempt to send/receive 900M per measurement. Modify as desired.

To learn more about the flags and their usage, check iPerf user documentation.

 

Measure downstream throughput (Traffic from the Access Point to the wireless client):

 

$ iperf -c <server-IP> -u -i 1 -t 10 -b 900M -R

 

-R = send traffic from the server to the client (By default iperf measure traffic from the client to the server)

 

Note: If using iperf v3, use the command iperf3 -c…

Note: By default, iperf client measures traffic sent from the client itself towards the server. If your server is running on the wireless client and the client is on the wired side, and you want to measure the upstream throughput, you need to use the -R option.

Note: If you are using a mobile device such as a smartphone or tablet, there are iperf apps that you could also use. The same syntax should work.

 

Output Examples

Upstream Measurements

Server 

Client

-----------------------------------------------------------

Server listening on 5201

-----------------------------------------------------------

Accepted connection from 192.168.40.9, port 59825

[  6] local 172.16.10.208 port 5201 connected to 192.168.40.9 port 55823

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams

[  6]   0.00-1.00   sec  7.53 MBytes  63.2 Mbits/sec  0.138 ms  14687/20139 (73%)  

[  6]   1.00-2.00   sec  7.87 MBytes  66.0 Mbits/sec  0.123 ms  11372/17073 (67%)  

[  6]   2.00-3.00   sec  7.99 MBytes  67.0 Mbits/sec  0.136 ms  14009/19795 (71%)  

[  6]   3.00-4.00   sec  8.30 MBytes  69.6 Mbits/sec  0.121 ms  11912/17919 (66%)  

[  6]   4.00-5.00   sec  8.19 MBytes  68.7 Mbits/sec  0.190 ms  25572/31501 (81%)  

[  6]   5.00-6.00   sec  7.95 MBytes  66.7 Mbits/sec  0.114 ms  14714/20469 (72%)  

[  6]   6.00-7.00   sec  8.24 MBytes  69.1 Mbits/sec  0.126 ms  11797/17762 (66%)  

[  6]   7.00-8.00   sec  8.20 MBytes  68.8 Mbits/sec  0.139 ms  13415/19353 (69%)  

[  6]   8.00-9.00   sec  7.77 MBytes  65.2 Mbits/sec  0.243 ms  21567/27196 (79%)  

[  6]   9.00-10.00  sec  8.41 MBytes  70.5 Mbits/sec  0.115 ms  16571/22660 (73%)  

[  6]  10.00-10.13  sec  1.12 MBytes  70.6 Mbits/sec  0.138 ms  0/811 (0%)  

- - - - - - - - - - - - - - - - - - - - - - - - -

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams

[  6]   0.00-10.13  sec  81.6 MBytes  67.5 Mbits/sec  0.138 ms  155616/214678 (72%)  receiver

Connecting to host 172.16.10.208, port 5201

[ 12] local 192.168.40.9 port 55823 connected to 172.16.10.208 port 5201

[ ID] Interval           Transfer     Bitrate         Total Datagrams

[ 12]   0.00-1.00   sec  13.1 MBytes   110 Mbits/sec  29988  

[ 12]   1.00-2.00   sec  6.98 MBytes  58.5 Mbits/sec  24316  

[ 12]   2.00-3.00   sec  6.53 MBytes  54.8 Mbits/sec  16638  

[ 12]   3.00-4.00   sec  6.55 MBytes  54.9 Mbits/sec  17566  

[ 12]   4.00-5.00   sec  12.3 MBytes   103 Mbits/sec  24058  

[ 12]   5.00-6.00   sec  7.46 MBytes  62.5 Mbits/sec  29484  

[ 12]   6.00-7.00   sec  6.60 MBytes  55.3 Mbits/sec  18189  

[ 12]   7.00-8.00   sec  6.55 MBytes  54.9 Mbits/sec  17004  

[ 12]   8.00-9.00   sec  6.81 MBytes  57.1 Mbits/sec  17517  

[ 12]   9.00-10.00  sec  13.2 MBytes   110 Mbits/sec  34007  

- - - - - - - - - - - - - - - - - -

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams

[ 12]   0.00-10.00  sec  86.0 MBytes  72.1 Mbits/sec  0.000 ms  0/228767 (0%)  sender

[ 12]   0.00-10.13  sec  81.6 MBytes  67.5 Mbits/sec  0.138 ms  155616/214678 (72%)  receiver

Note: Sometimes the client will display a bitrate close to the value used on the -b option. That’s  the total traffic the client tried to send to the client every test. If you notice that, check the server output, as it displays the actual traffic it received.

Downstream measurements

 

Server  Client

-----------------------------------------------------------

Server listening on 5201

-----------------------------------------------------------

Accepted connection from 192.168.40.9, port 59827

[  6] local 172.16.10.208 port 5201 connected to 192.168.40.9 port 54576

[ ID] Interval           Transfer     Bitrate         Total Datagrams

[  6]   0.00-1.00   sec  60.8 MBytes   510 Mbits/sec  44013  

[  6]   1.00-2.00   sec  76.6 MBytes   643 Mbits/sec  55469  

[  6]   2.00-3.00   sec  76.6 MBytes   643 Mbits/sec  55466  

[  6]   3.00-4.00   sec  76.5 MBytes   642 Mbits/sec  55418  

[  6]   4.00-5.00   sec  76.7 MBytes   643 Mbits/sec  55526  

[  6]   5.00-6.00   sec  76.8 MBytes   644 Mbits/sec  55608  

[  6]   6.00-7.00   sec  76.5 MBytes   641 Mbits/sec  55364  

[  6]   7.00-8.00   sec  76.6 MBytes   643 Mbits/sec  55483  

[  6]   8.00-9.00   sec  76.4 MBytes   641 Mbits/sec  55304  

[  6]   9.00-10.00  sec  76.1 MBytes   638 Mbits/sec  55088  

[  6]  10.00-10.03  sec  1.91 MBytes   640 Mbits/sec  1386  

- - - - - - - - - - - - - - - - - - - - - - - - -

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams

[  6]   0.00-10.03  sec   751 MBytes   629 Mbits/sec  0.000 ms  0/544125 (0%)  sender

Connecting to host 172.16.10.208, port 5201

Reverse mode, remote host 172.16.10.208 is sending

[ 13] local 192.168.40.9 port 54576 connected to 172.16.10.208 port 5201

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams

[ 13]   0.00-1.00   sec  9.34 MBytes  78.4 Mbits/sec  0.290 ms  28490/35256 (81%)  

[ 13]   1.00-2.00   sec  9.45 MBytes  79.3 Mbits/sec  0.271 ms  48924/55770 (88%)  

[ 13]   2.00-3.00   sec  8.88 MBytes  74.5 Mbits/sec  0.425 ms  48069/54502 (88%)  

[ 13]   3.00-4.00   sec  8.87 MBytes  74.4 Mbits/sec  0.229 ms  49659/56085 (89%)  

[ 13]   4.00-5.00   sec  8.04 MBytes  67.3 Mbits/sec  0.249 ms  46848/52670 (89%)  

[ 13]   5.00-6.00   sec  8.83 MBytes  74.2 Mbits/sec  0.274 ms  52210/58605 (89%)  

[ 13]   6.00-7.00   sec  9.03 MBytes  75.7 Mbits/sec  0.194 ms  48272/54810 (88%)  

[ 13]   7.00-8.00   sec  9.26 MBytes  77.7 Mbits/sec  0.299 ms  49219/55925 (88%)  

[ 13]   8.00-9.00   sec  9.20 MBytes  77.2 Mbits/sec  0.274 ms  48075/54739 (88%)  

[ 13]   9.00-10.00  sec  8.27 MBytes  69.3 Mbits/sec  0.304 ms  44997/50983 (88%)  

- - - - - - - - - - - - - - - - - -

[ ID] Interval           Transfer     Bitrate         Jitter    Lost/Total Datagrams

[ 13]   0.00-10.03  sec   751 MBytes   629 Mbits/sec  0.000 ms  0/544125 (0%)  sender

[SUM]  0.0-10.0 sec  2 datagrams received out-of-order

[ 13]   0.00-10.00  sec  89.2 MBytes  74.8 Mbits/sec  0.304 ms  464763/529345 (88%)  receiver

 

Note: Notice that the Bitrate is ~640Mbits/sec. This means that’s the total traffic the server tried to send to the client every test. The client displays the actual traffic it received.