zephyr/samples/net/zperf
Jukka Rissanen d32503f57e net: nbuf: Split one global DATA pool to RX and TX DATA pools
If we receive lot of packets, it might happen that we exhaust
all the DATA buffers in the system. This would prevent from
us sending anything to the network.
Change this by splitting the DATA buffer pool into RX and TX
parts. This way RX flooding cannot consume all DATA buffers
that needs to be sent.

Change-Id: I8e8934c6d5fdd47b579ffa6268721b5eb3d64b6d
Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
2017-03-09 20:33:43 +02:00
..
src net: samples: Unref net_buf using net_nbuf_unref 2017-02-09 12:29:29 +02:00
Makefile net: zperf: Add bluetooth support 2017-01-20 16:23:20 +02:00
prj_bt.conf net: nbuf: Split one global DATA pool to RX and TX DATA pools 2017-03-09 20:33:43 +02:00
prj_frdm_k64f_prof.conf net: nbuf: Split one global DATA pool to RX and TX DATA pools 2017-03-09 20:33:43 +02:00
prj_frdm_k64f.conf net: nbuf: Split one global DATA pool to RX and TX DATA pools 2017-03-09 20:33:43 +02:00
prj_galileo_prof.conf samples/net: Rename prj conf files to avoid breaking the build 2017-01-13 10:29:00 +01:00
prj_galileo.conf samples/net: Rename prj conf files to avoid breaking the build 2017-01-13 10:29:00 +01:00
prj_qemu_x86.conf net: nbuf: Split one global DATA pool to RX and TX DATA pools 2017-03-09 20:33:43 +02:00
prj_quark_se_c1000_devboard.conf net: nbuf: Split one global DATA pool to RX and TX DATA pools 2017-03-09 20:33:43 +02:00
README.rst samples: zperf: Use native IP stack for TCP support 2017-02-03 15:59:17 +02:00
testcase.ini net: do not skip sanitycheck on samples 2017-01-06 22:08:14 +00:00

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.