= fireperf(8)

== NAME
fireperf - A Network Benchmarking Tool

== SYNOPSIS
[verse]
`fireperf --server ...`
`fireperf --client ADDRESS ...`

== DESCRIPTION
`fireperf` can perform network benchmarks to test throughput and quality of
a network between a fireperf client and fireperf server.


== COMMON OPTIONS

-d::
	Enables debugging output
	+
	If `fireperf` has been compiled with debugging support, this command will print
	various debug messages that will help to find bugs in the program.

--parallel=N::
-P N::
	If this option is set on the client side, it will instruct the client to open N
	connections and keep them open.
	+
	On the server side, it will set a limit how many connections the server is willing
	to accept.

--port=N::
-p N::
--port=N:M::
-p N:M::
	Both server and client take a single port (N) or a port range (N:M).
	+
	The server will open a listening socket the port given or each port in the range
	and waits for the client to connect.
	+
	The client will for each connection randomly select a port in the range or use the
	specified port to connect to the server.

--version::
-V::
	Prints the version of this program


== SERVER-SPECIFIC OPTIONS

--server::
-s::
	This starts the program in server mode which makes it connect to the specified
	port and waits for clients to connect.


== CLIENT-SPECIFIC OPTIONS

--client ADDRESS::
-c ADDRESS::
	This starts the program in client mode. In this mode, the client will connect to
	the server at ADDRESS and start a throughput test.

--keepalive::
-k::
	Instead of sending data to the server, this will configure the client to only
	send keepalive packets.
	+
	If a large number of connections is being created, it might become undesirable to
	saturate the link between client and server. This option will send some packets to
	keep the connection alive through for example NAT gateways.

--timeout=T::
-t T::
	If set, the client will automatically terminate itself after T seconds.
	Otherwise it will run for forever.

--close::
-x::
	If set, all connections will be closed as soon as they have been established.
	No data will be sent.
	+
	This is useful to test how many TCP handshakes per second are possible.

--zero::
-z::
	Instead of sending random data, this option will set the client to send packets
	filled with zeroes.
	+
	This is useful for testing compression between the client and server.


== BUGS
Please report all bugs to the bugtracker at https://bugzilla.ipfire.org/

== AUTHORS
Michael Tremer
