NAME
flowgrind - network performance measurement tool
SYNOPSIS
flowgrind -h|-s|-v
flowgrind [general options] [flow options]
DESCRIPTION
flowgrind is a distributed network performance measurement tool. Using
the flowgrind controller, tests can be setup between hosts running
flowgrindd, the flowgrind daemon.
Flowgrind performs extensive TCP tests. On systems running the Linux
kernel flowgrind collects and reports the TCP metrics returned by the
TCP_INFO socket option, such as the size of the congestion window or
the RTT.
Each test connection is called a flow and flowgrindd has to be running
on every host that supped to be a flow endpoint. The flowgrind con‐
troller only sets up the flows as well as gathers and prints the
results. The controller does however not actually participate in the
test.
OPTIONS
General information
Two important groups of options are the global options and flow
options. Like the name suggests, global options apply globally and
potentially affect all flows. Flow-specific options only apply to the
subset of flows selected using the -F option.
Miscallaneous
-h Show help and exit.
-s Show help for socket options and exit.
-v Print version information and exit.
General options
-a Advanced statistics, only if compiled with libpcap support.
-b mean1,mean2,mean3
-b lwr_bound1,upr_bound1,lwr_bound2,upr_bound2,lwr_bound3,upr_bound3
Perform Anderson-Darling Test for exponential distribution OR
lower and upper bounds for computing the test for uniform dis‐
tribution with the given bounds. Test data always generated from
first flow.
-c +begin,+end,+thrpt,+rtt,+iat,+kernel
Comma separated list of column groups to display in output. Pre‐
fix with either + to show column group, - to hide column group.
-d Increase debugging verbosity. Add option multiple times to be
even more verbose. Only available if compiled with DEBUG define
set.
-e PREFIX
Prepend PREFIX to log filename (default: "flowlog-").
-i #.# Reporting interval in seconds (default: 0.05s).
-l NAME
Use log filename NAME instead. If not specified the current time
is used for the filename.
-m Report throughput in 2**20 bytes/second (default: 10**6
bit/sec).
-n # Number of test flows (default: 1).
-o Overwrite existing log files (default: don’t).
-q Be quiet, do not log to screen (default: off).
-w Write output to logfile (default: off).
Flow options
All flows have two endpoints, a source and a destination. The distinc‐
tion between source and destination endpoints only affects connection
establishment. When starting a flow the destination endpoint listens on
a socket and the source endpoint connects to it. For the actual test
this makes no difference, both endpoints have exactly the same capabil‐
ities. Data can be sent in either direction and many settings can be
configured individually for each endpoint.
Some of these options take the flow endpoint as argument. Is is denoted
by ’x’ in the option syntax. ’x’ needs to be replaced with either ’s’
for the source endpoint, ’d’ for the destination endpoint or ’b’ for
both endpoints. To specify different values for both endpoints, sepa‐
rate them by comma.
Example: -T s=5,d=10
-B x=# Set requested sending buffer in bytes.
-C x Stop flow if it is experiencing local congestion.
-D x=DSCP
DSCP value for type-of-service IP header byte.
-E x Enumerate bytes in payload (default: don’t).
-F #[,#]*
Comma-separated list of flows. Flow options following this
option apply only to the specified flows. Useful in combination
with -n to set specific options for certain flows. Numbering
starts with 0, so -F 1 refers to the second flow. All flow
options before the first -F apply to all flows.
-H x=HOST[/RPCADDRESS[:PORT][/REPLYADDRESS]]
Test from/to HOST. Optional argument is the address and port of
the RPC server. Third address is for the reply connection. An
endpoint that isn’t specified is assumed to be localhost.
-L x Call connect() on test socket immediately before starting to
send data (late connect). If not specified the test connection
is established in the preparation phase before the test starts.
-N x Call shutdown() after test flow is scheduled to end.
-O x=OPT
Set specific socket options on test socket. For a list of sup‐
ported socket options see -s option.
-P x Do not iterate through select() to continue sending in case
block size did not suffice to fill sending queue (pushy).
-Q Summarize only, skip interval reports (quiet).
-R x=#.#[z|k|M|G][b|B][p|P]0
Rate limiting. Send data at specified rate per second, where:
z = 2**0, k = 2**10, M = 2**20, G = 2**30.
b = bits per second (default), y = bytes per second, B = blocks
per second.
p = periodic (default), P = Poisson distributed.
-S x=# Set block size (default: s=8192,d=8192).
-T x=#.#
Set flow duration, in seconds (default: s=5,d=0).
-W x=# Set requested receiver buffer (advertised window) in bytes.
-Y x=#.#
Set initial delay before the host starts to send data.
EXAMPLES
flowgrind -H s=host1,d=host2
Start bulk TCP transfer with host1 as source and host2 as desti‐
nation endpoint. Both endpoints need to be running the flowgrind
daemon. The default flow options are used, with a flow of 5 sec‐
onds duration with data sent from the source to the destination
endpoint.
flowgrind -H s=host1,d=host2 -T s=0,d=10
Same as the above but instead with a flow sending data for 10
seconds from the destination to the source endpoint.
flowgrind -n 2 -H s=192.168.0.1,d=192.168.0.69 -F 1 -H
s=10.0.0.1,d=10.0.0.2
Setup two flows, first flow between 192.168.0.1 and
192.168.0.69, second flow between 10.0.0.1 to 10.0.0.2
# The endpoint, either S for source or R for destination.
ID The flow identifier.
begin and end
The boundaries of the measuring interval in seconds. The time
shown is the elapsed time since receiving the RPC message to
start the test from the daemon
flowgrindd(1),
flowgrind-stop(1)
June 2009
flowgrind(1)