zephyr/samples/net/zperf
Piotr Zięcik 2fe998cdef kernel: Deprecate sys_clock_us_per_tick variable.
On some architectures tick time cannot be expressed as integer
number of microseconds, introducing error in calculations using
sys_clock_us_per_tick variable.

This commit deprecates the sys_clock_us_per_tick variable and
replaces its usage by more precise calculations based on
sys_clock_hw_cycles_per_sec and sys_clock_ticks_per_sec.

Signed-off-by: Piotr Zięcik <piotr.ziecik@nordicsemi.no>
2018-07-20 00:03:52 -04:00
..
src kernel: Deprecate sys_clock_us_per_tick variable. 2018-07-20 00:03:52 -04:00
CMakeLists.txt samples: net: Remove QEMU_NET_STACK setting from CMakeLists.txt 2017-11-10 14:52:53 +02:00
prj_bt.conf net: samples: Remove CONFIG_NET_L2_BT_ZEP1656 2017-11-16 10:41:07 +02:00
prj_frdm_k64f_prof.conf net: Renaming net nbuf API to net pkt API 2017-04-21 14:19:50 +03:00
prj_frdm_k64f.conf net: Renaming net nbuf API to net pkt API 2017-04-21 14:19:50 +03:00
prj_netusb.conf net: samples: Reduce net pkt RAM usage 2018-03-16 14:45:24 -07:00
prj_qemu_x86.conf net: enable SLIP only on QEMU targets 2017-07-26 10:57:48 -04:00
prj_quark_se_c1000_devboard.conf net: samples: zperf: Reduce quark_se_c1000_devboard buffer counts 2018-02-10 09:20:42 +02:00
README.rst doc: add labels to net sample docs for linking 2017-04-04 19:52:06 +00:00
sample.yaml samples: net: Add test cases for USB EEM 2018-04-06 06:50:34 -04:00

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