Skip to main content

 

Cisco Meraki Documentation

How to Measure Wireless Throughput Using iPerf

By Karla Cisneros Galvan

Overview

This guide explains how to measure upstream and downstream throughput on a wireless network using iPerf.

Step-by-step instructions

Step 1. Set up the iPerf server (wired client)

  • Install iPerf on a client connected by cable to the network. This client acts as the iPerf server.

Step 2. Set up the iPerf client (wireless client)

  • Install iPerf on a client connected wirelessly to the network. This client acts as the iPerf client.

Step 3. Build a topology:

  • Build a topology as shown in the diagram below

Sample iPerf client/server topology

 

  • 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

Run the following command on the wired client acting as the server:

$ iperf -s

-s = host acting as server

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

Step 5. Measure upstream throughput

  • Start the iperf data transfer on the client to measure the throughput.
  • Upstream throughput is the traffic flowing from the wireless client to the access point.
  • Run the following command on the wireless client:
$ iperf -c <server-IP> -u -i 1 -t 10 -b 900M
  • The flags used in this command are defined below:

-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.

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

The client output may display a bitrate close to the value used in the -b option. This represents the total traffic the client attempted to send to the server during each test interval. Check the server output to confirm the actual traffic received.

Measure downstream throughput

Downstream throughput is the traffic flowing from the access point to the wireless client.

  • Run the following command on the wireless client:
$ iperf -c <server-IP> -u -i 1 -t 10 -b 900M -R
  • Use the -R flag to reverse the traffic direction so that the server sends traffic to the client. By default, iPerf sends traffic from the client to the server

Additional usage notes:

  • If using iPerf v3, use the command iperf3 -c …
  • If the server runs on the wireless client and the wired device acts as the iPerf client, use the -R flag to measure upstream throughput correctly.
  • If you are testing with a mobile device such as a smartphone or tablet, you can use an iPerf mobile app. The same command syntax applies.

Downstream output example server:

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

In the downstream example, the server bitrate is approximately 640 Mbits/sec, which represents the total traffic the server attempted to send to the client during each test interval. The client output shows the actual traffic the client received.