FlowPing 3

Annotation

The FlowPing is an application which allow user to perform variety of network throughput and stress tests. Our application utilize UDP(User Datagram Protocol). Our application implements similar interface as in ICMP ping application and in addition allow user to perform stress test such as in iPerf application. Very importat feature of our application is possibility to operate with variable traffic rate and variable packet size. This feature allow user to measure network dynamic behavior in reaction on traffic amount change in tested network.

Major Flowping 3 features

IoT specific features

Download

GitHub repository :: https://github.com/k13132/flowping

Command line parameters

 
  -----------------------------------------------------------------------------------------------
 | Section| Parameter  | Def. value | Meaning                                                    |
  -----------------------------------------------------------------------------------------------
 | Common:                                                                                       |
 |         [-?]                       Usage (Print this table)                                   |
 |         [-f filename]              Store ping output in specified file                        |
 |         [-p port]     [2424]       Port number                                                |
 |         [-e]                       Print current RX Bitrate (RX and TX on SERVER)             |
 |         [-q]                       Silent (suppress ping output to STDOUT)                    |
 |         [-v]                       Print version                                              |
 |         [-D]                       Print timestamps in ping output                            |
 |         [-X]                       Asymetric mode (TX Payload  is limited to 32B)             |
 |         [--so_rcvbuf] [6144000]    Socket receiver buffer size [Bytes]                        |
 |         [--so_sndbuf] [6144000]    Socket sender buffer size [Bytes]                          |
 | Server:                                                                                       |
 |         [-S]                       Run as server                                              |
 |         [-W]                       Working directory                                          |
 | Client:                                                                                       |
 |         [-6]                       Prefer IPv6 over IPv4                                      |
 |         [-a]                       Busy-loop mode! (100% CPU usage), more accurate bitrate    |
 |         [-b kbit/s]                BitRate (Lower limit)                                      |
 |         [-B kbit/s]                BitRate (Upper limit)                                      |
 |         [-c count]    [unlimited]  Send specified number of packets                           |
 |         [-d]                       Set source interface                                       |
 |         [-F filename]              Send FileName to server (overide server settings)          |
 |         [-h hostname] [localhost]  Server hostname or IP address                              |
 |         [-H]                       Consider headers (Use frame size instead payload size)     |
 |         [-i seconds]  [1]          Interval between packets (Upper limit)                     |
 |         [-I seconds]  [1]          Interval between packets (Lower limit)                     |
 |         [-J]                       Output to JSON                                             |
 |         [-L]          [0]          Data sample interval (0 s - per packet mode)               |
 |         [-s size]     [64]         Payload size in Bytes                                      |
 |         [-t seconds]  [10]         T1 interval specification  (for i,I,b,B,P params)          |
 |         [-T seconds]  [10]         T2 interval specification  (for i,I,b,B,P params)          |
 |         [-R seconds]  [T3=T2]      T3 interval specification  (for i,I,b,B,P params)          |
 |         [-u filename]              Read Interval and BitRate definitions from file            |
 |         [-w seconds]  [unlimited]  Run test for specified time                                |
 |         [--nettype NET_TYPE]       Network specific optimizations [default, NB-IoT, Edge]     |
  -----------------------------------------------------------------------------------------------

Test description file formating

 -------------------------------------------------
| Time[s]  |  BitRate[kbit/s]  |  PacketSize[B]*  |
 -------------------------------------------------
|    0*    |       128         |       14*        |
|    15    |       128         |       64         |
|    30    |       256         |       64         |
|    30    |       64          |       2500*      |
 -------------------------------------------------
Table 1: Test description file example.
* Its necessary to start with zero time.
* If packet size is to small or exceeds packet size limit, limit values are used.
* Header is not a part of test description file. Test description file consist of raw data only.
* Test duration is specified by parameter -w or by packet count by parameter -c.
* Intervals with zero bitrate are possible.BR>

Examples of usage

Command line test definition

./flowping -h example.net -b 256 -B 512 -t 30 -R 60 -T 90 -w 180 -s 500
./flowping -h example.net -i 0.015625 -B 0.0078125 -t 30 -R 60 -T 90 -w 180 -s 500

Image 1: Shows traffic generated by processing command line parameters.

Test description file test definition.

./flowping -h example.net -w 200 -u TestDescriptionFile.dat

Image 2: Shows asymetric (TX/RX) traffic generated by processing test description file.
------------------------------------------------- | Time[s] | BitRate[kbit/s] | PacketSize[B] | ------------------------------------------------- | 0* | 128 | 64 | | 15 | 128 | 64 | | 30 | 256 | 64 | | 30 | 64 | 500 | | 45 | 64 | 500 | | 60 | 256 | 24 | | 60 | 512 | 24 | | 75 | 256 | 24 | | 90 | 256 | 24 | | 105 | 128 | 24 | | 120 | 256 | 24 | | 135 | 256 | 64 | | 135 | 640 | 1472 | | 150 | 640 | 1472 | | 150 | 512 | 1000 | | 165 | 128 | 1000 | | 180 | 128 | 1000 | ------------------------------------------------- Table 2: Test description file describing test on Image 3.

Image 3: Shows outgoing (TX) traffic generated by processing test description file.

Publications

Vondrouš, O.; Macejko, P.; Kocur, Z.
FlowPing - The New Tool for Throughput and Stress Testing
Advances in Electrical and Electronic Engineering. 2015, 13(5), 516-521. ISSN 1336-1376.

Vondrouš, O.; Macejko, P.; Kocur, Z.
On Limits of Embedded Systems in Network Packet Processing
Advances in Electrical and Electronic Engineering. 2016, 14(4), 405-412. ISSN 1336-1376.

Vondrouš, O.; Kocur, Z.; Votava, O.
FlowPing - nástroj pro aktivní měření komunikačních sítí s přidanou hodnotou
[Science outreach lecture] Vzdělávací komplex UTB, Zlín: About CSNOG 2023 CSNOG 2023 (Czech and Slovak Network Operators Group), Sdružení CZ.NIC. 2023-05-16.

Licence

Author: Ondrej Vondrous, KTT, FEE, CTU in Prague
Email: ondrej.vondrous@fel.cvut.cz
Copyright (C) 2023: Department of Telecommunication Engineering, FEE, CTU in Prague
License: GNU GPLv3

FlowPing is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.

FlowPing is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details

You should have received a copy of the GNU General Public License along with FlowPing. If not, see http://www.gnu.org/licenses/





Acknowledgement

This work has been supported by Technology Agency of the Czech Republic, Contract No. FW03010150, "Platform for reliable operation, provisioning and management of massive distributed IIoT structures."



@2023