FlowPing - UDP based ping application

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

The most interesting features of FlowPing application

Download

Binary

32bit version - x86_32 1.3.2 :: flowping (RHEL binary)
64bit version - x86_64 1.3.2 :: flowping (RHEL binary)
32bit version - ARM 1.2.5 :: flowping (UDOO binary)

Source code

Version - x86_64 1.3.2 :: flowping.tgz

Command line parameters

 
  -----------------------------------------------------------------------------------------------
 | Section| Parameter  | Def. value | Meaning                                                    |
  -----------------------------------------------------------------------------------------------
 | Common:                                                                                       |
 |         [-?]                       Usage (Print this table)                                   |
 |         [-A]                       Raise priority to maximum in passive mode (RT if possible) |
 |         [-D]                       Print timestamps in ping output                            |
 |         [-e]                       Print current RX Bitrate (RX and TX on SERVER)             |
 |         [-f filename]              Store ping output in specified file                        |
 |         [-p port]     [2424]       Port number                                                |
 |         [-q]                       Silent (suppress ping output to STDOUT)                    |
 |         [-v]                       Print version                                              |
 |         [-X]                       Asymetric mode (TX Payload  is limited to 32B)             |
 | Server:                                                                                       |
 |         [-S]                       Run as server                                              |
 | Client:                                                                                       |
 |         [-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                           |
 |         [-C]                       Output to CSV [;;;;;]                                      |
 |         [-d]                       Set source interface                                       |
 |         [-E]                       Print current TX bitrate                                   |
 |         [-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)                     |
 |         [-P]                       Packet size change from 32B to 1472B                       |
 |         [-Q]                       linux ping output compatibility                            |
 |         [-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            |
 |         [-U]                       Fill packets with data from named pipe at /tmp/flowping    |
 |         [-w seconds]  [unlimited]  Run test for specified time                                |
 |         [-W]                       Precompute packet intervals, Busy-loop mode,               |
 |                                    delayed output file writes                                 |
  -----------------------------------------------------------------------------------------------

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.

Typical 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
 -------------------------------------------------
| 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 2

Image 2: Shows traffic generated by processing test description file

CSV Output format

Client

C_TimeStamp;C_Direction;C_PacketSize;C_From;C_Sequence;C_RTT;C_Delta;C_RX_Rate;C_To;C_TX_Rate;
1407138077.467533;rx;64;localhost;1;0.24;2.000;256.00;
1407138077.467291;tx;64;;1;;2.000;;localhost;256.00;;;
1407138077.469551;rx;64;localhost;2;0.11;2.018;253.72;
1407138077.469445;tx;64;;2;;2.141;;localhost;239.14;;;
1407138077.471631;rx;64;localhost;3;0.10;2.080;246.15;
C_TimeStamp - Timestamp of packet was sent/received
C_Direction - Indicates TX or RX direction of communication.
C_PacketSize - Size of UDP payload or Ethernet Frame, determined by parameter [-H]
C_From - Source (Client) hostname or ip address
C_Sequence - Sequence number of packet
C_RTT - Round Trip Time of packet
C_Delta - Interval between received or sent packets
C_RX_Rate - Receiving bitrate, cumputed from delta and packet size of only two packets.
C_To - Destination (Server) hostname or ip address
C_TX_Rate - Sending bitrate, cumputed from delta and packet size of only two packets.

Server

S_TimeStamp;S_PacketSize;S_From;S_Sequence;S_TTL;S_Delta;S_RX_Rate;S_TX_Rate;
1407138077.467359;64;127.0.0.1;1;xx;200.348;2.56;2.56;
1407138077.469515;64;127.0.0.1;2;xx;2.156;237.48;237.48;
1407138077.471598;64;127.0.0.1;3;xx;2.083;245.80;245.80;
1407138077.473602;64;127.0.0.1;4;xx;2.004;255.49;255.49;
1407138077.475610;64;127.0.0.1;5;xx;2.008;254.98;254.98;    
S_TimeStamp - Timestamp of packet was received
S_PacketSize - Size of UDP payload or Ethernet Frame, determined by parameter [-H]
S_From - Source (Client) hostname or ip address
S_Sequence - Sequence number of packet
S_TTL - Not implemented yet, value is always "xx"
S_Delta - Interval between received packets
S_RX_Rate - Receiving bitrate, cumputed from delta and packet size of only two packets.
S_TX_Rate - Sending bitrate, cumputed from delta and packet size of only two packets.

Change Log

Version 1.1.10 was first public release.

Version 1.2.0 adds new features and fixes several issues.
    New features:
      - Output in CSV format [-C]
      - Possibility to precompute packet intervals before test start. [-W]
      - Delayed file writes - all output is stored into file after test is finished. [-W]
      - Asymetric mode is implemented also in client. [-X]
    BugFix:
      - Output formating

Version 1.2.3 bug fix release.
    BugFix:
      - minor bug fixes

Version 1.2.4 bug fix release.
    BugFix:
      - [-H] mode fix, reported speed on server was wrong
      - [-H] mode fix, generated traffic rate was wrong when reading test description from file

Version 1.2.5 bug fix release.
    BugFix:
      - when using parameters [-u] and [-W] together it was not posible to generate variable flow in previous 32 bit versions

Version 1.2.6 bug fix release.
    BugFix:
      - fixed bug in 32b version with -W parameter and long tests
      - fixed bug with program termination with signals
      - added longer timeout after end of test

Licence information

Author: Ondrej Vondrous, KTT, CVUT
Email: vondrond@fel.cvut.cz
Copyright: Department of Telecommunication Engineering, FEE, CTU in Prague
License: Creative Commons 3.0 BY-NC-SA

FlowPing is free software: you can redistribute it and/or modify it under the terms of the Creative Commons BY-NC-SA License v 3.0.

FlowPing is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY.

You should have received a copy of the Creative Commons 3.0 BY-NC-SA License along with FlowPing.
If not, see http://creativecommons.org/licenses/by-nc-sa/3.0/legalcode





This work was supported by the Grant of the Ministry of the Interior of the Czech Republic, No. VG20122014095, "Development of adaptable and data processing systems for high-speed, secure and reliable communication in extreme conditions", and was researched in cooperation with CERTICON.