# Net4sat wiki

### Sidebar

openbach:exploitation:reference_scenarios:network:rate:network_rate

### TCP network rate

This scenario provides a rate diagnostic of a deployed network. It is assumed that the network is stable. The diagnostic allows to sequentially assess rate/throughput metrics.

### Methodology

The scenario proposed herein will :

• Launch subscenario network_rate (allowing to launch iperf3, nuttcp and d-itg sequentially in TCP mode and again nuttcp and d-itg in UDP mode).
• The TCP mode allows to measure the rate with Bulk TCP traffic that will try to fulfil de full capacity of your link/path
• The UDP mode will ask you for the theoretical capacity of the path, and then it will generate UDP traffic at the this rate.
• Launch two postprocessing jobs to compare the time-series and the CDF of the rate measurements.

These scenarios have been written using the scenario builder.

### How to launch it

The scenario is available in network_rate . It uses helpers (see API scenario manual for more information on helpers).

You must already have a project (i.e. “your_project”), two entities in the project (a server and a client), the nuttcp/iperf3/d-itg_send jobs installed in the client and the nuttcp/iperf3/d-itg_recv jobs installed in the the server. You also need to install histogram and time-series jobs on “your_entity”.

The executor scenario script executor_network_rate will allow to launch it as follows. You should specify different parameters and the theoretical rate of the path/link for the UDP test (set a higher rate (in kb/s) than what you estimate between server and client for the UDP test (add m/g to set M/G b/s))

python3 executor_network_rate.py -o your_project --client your_client_entity --server your_server_entity --ip_dst your_server_ip --ip_snd your_client_ip --rate 10M --entity_pp your_entity run

Alternatively, it can create a JSON file that could be imported to the OpenBACH web interface:

python3 executor_network_rate.py -o your_project --client your_client_entity --server your_server_entity --ip_dst your_server_ip --ip_snd your_client_ip --rate 10M --entity_pp your_entity build .

Some parameters are by default in the executor script executor_network_rate, but you can also modify them, e.g.: duration of iperf3/nuttcp test, MTU size, ToS, number of parallel flows.

An example of the type of results that this scenarios is capable of plotting is shown below, where the link capacity between client and server is 20 Mbps with and RTT of 500ms.

#### Example

Comparison of 1 iperf3 BULK TCP flow (blue), 1 nuttcp BULK TCP flow (orange), 1 d-itg BULK TCP flow (green), 1 nuttcp UDP flow (red) and 1 d-itg UDP flow (purple). UDP estimates the capacity better than TCP tests, but nuttcp also obtains a good estimation in TCP at the end of test. On the other hand, iperf3 is not good at estimating the capacity with default TCP configuration.

The plots can be downloaded from the OpenBACH web interface: go to the scenario instance, click on export CSV, check the histogram and time-series boxes and click on Download.