zephyr/samples/net/zperf
Tomasz Bursztyka 4b78a251d7 net/context: Make recv_cb providing the ip and protocol headers
If status is 0, both ip_hdr and proto_hdr will own a pointer to the
relevant IP and Protocol headers. In order to know which of ipv4/ipv6
and udp/tcp one will need to use respectively net_pkt_family(pkt) and
net_context_get_ip_proto(context).

Having access to those headers directly, many callbacks will not need
to parse the packet again no get the src/dst addresses or the src/dst
ports. This will be change after this commit.

Signed-off-by: Tomasz Bursztyka <tomasz.bursztyka@linux.intel.com>
2019-02-01 14:34:38 +02:00
..
boards shell: decrease built-in commands flash usage 2018-12-04 15:53:02 -05:00
src net/context: Make recv_cb providing the ip and protocol headers 2019-02-01 14:34:38 +02:00
CMakeLists.txt cmake: increase minimal required version to 3.13.1 2019-01-03 11:51:29 -05:00
README.rst samples: net: zperf: Convert to use the new shell 2018-10-15 11:14:02 +03:00
overlay-bt.conf shell: decrease built-in commands flash usage 2018-12-04 15:53:02 -05:00
overlay-netusb.conf shell: decrease built-in commands flash usage 2018-12-04 15:53:02 -05:00
prj.conf shell: decrease built-in commands flash usage 2018-12-04 15:53:02 -05:00
sample.yaml shell: decrease built-in commands flash usage 2018-12-04 15:53:02 -05:00

README.rst

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

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.