.. _zperf-sample:
zperf: Network Traffic Generator
################################
Description
***********
zperf is a network traffic generator for Zephyr that may be used to
evaluate network bandwidth.
Features
*********
- Compatible with iPerf_2.0.5.
- Client or server mode allowed without need to modify the source code.
- Working with task profiler (PROFILER=1 to be set when building zperf)
Supported Boards
****************
zperf is board-agnostic. However, to run the zperf sample application,
the target platform must provide a network interface supported by Zephyr.
This sample application has been tested on the following platforms:
- Freedom Board (FRDM K64F)
- Quark SE C1000 Development Board
- QEMU x86
Requirements
************
- iPerf 2.0.5 installed on the host machine
- Supported board
Depending on the network technology chosen, extra steps may be required
to setup the network environment.
Usage
*****
If Zephyr acts as a client, iPerf must be executed in server mode.
For example, the following command line must be used for UDP testing:
.. code-block:: console
$ iperf -s -l 1K -u -V -B 2001:db8::2
For TCP testing, the command line would look like this:
.. code-block:: console
$ iperf -s -l 1K -V -B 2001:db8::2
In the Zephyr console, zperf can be executed as follows:
.. code-block:: console
zperf> udp.upload 2001:db8::2 5001 10 1K 1M
For TCP the zperf command would look like this:
.. code-block:: console
zperf> tcp.upload 2001:db8::2 5001 10 1K 1M
If the IP addresses of Zephyr and the host machine are specified in the
config file, zperf can be started as follows:
.. code-block:: console
zperf> udp.upload2 v6 10 1K 1M
or like this if you want to test TCP:
.. code-block:: console
zperf> tcp.upload2 v6 10 1K 1M
If Zephyr is acting as a server, set the download mode as follows for UDP:
.. code-block:: console
zperf> udp.download 5001
or like this for TCP:
.. code-block:: console
zperf> tcp.download 5001
and in the host side, iPerf must be executed with the following
command line if you are testing UDP:
.. code-block:: console
$ iperf -l 1K -u -V -c 2001:db8::1 -p 5001
and this if you are testing TCP:
.. code-block:: console
$ iperf -l 1K -V -c 2001:db8::1 -p 5001
iPerf output can be limited by using the -b option if Zephyr is not
able to receive all the packets in orderly manner.