Research
- Transmission Control Protocol
- Flowgrind
- Motivation
- Architecture
- Output
- Manpages
- Autoconfiguration
Motivation for flowgrind
Flowgrind is a tool similar to iperf, netperf to measure throughput and other metrics for TCP and other protocols. It features some unique characteristics which are of use when exploring the idiosyncrasies of wireless mesh networks.
Its most important feature is its distributed architecture. Flowgrind is split into two components, the flowgrind daemon (flowgrindd) and the flowgrind controller. A test run consists of one or more flows. Using the controller, flows between any two systems running the flowgrind daemon can be setup. At regular intervals during the test the controller collects and displays the measured results from the daemons.
The controller can schedule complex tests consisting of many flows. Each flow is assigned a start time (the initial delay) and a duration. Tests can be performed on an arbitrary set of nodes running the daemon and any number of flows can be active at the same time.
The interval reports created during the test can optionally be sent on a different network interface than the one used by the test connections. This is beneficial to ensure test robustness, especially when testing over noisy links, as the amount of data contained in the interval reports is non-negligible.
Moreover, flowgrind constantly reports on not only throughput but also on RTT, IAT and a number of Linux kernel variables revealing the status of TCP connections (e.g., CWND, SSTHRESH, number of bytes unacknowledged in the network, etc.).
Summarized, flowgrind implements amongst others the following features:
- Distributed architecture
- Sophisticated flow scheduling
- Linux kernel TCP statistics
- Application layer 1-way (IAT) and 2-way (RTT) delay
- Customizable socket options
- Anderson-Darling statistical test
- Monitoring, measuring, and accounting
- Rate-limited flows
- Uniform packet distribution
- Poisson packet distribution
If you are interestd in flowgrind you can download the
current tarball or directly access the code via our subversion
repository:
svn://svn.umic-mesh.net/flowgrind/trunk


