ipbench - A distributed framework for network benchmarking

What is ipbench?

ipbench is an extensible and reliable benchmarking suite we created in response to some common problems we saw with existing IP benchmark software.

Main goals

  1. Distributed operation : We want multiple clients to be able to perform the same test simultaneously on a target machine.  We want to be able to get the results reliably and consistently without resorting to hacking sh and perl scripts to munge data around.
  2. No "heavyweight" server : Most existing network benchmark suites assume that both ends of the test are complete operating systems, with BSD socket support and POSIX compliance.  Experimental operating systems often don't meet these requirements.
  3. Extensibility : We want to be able to add new and varied tests easily.
  4. There aren't that many benchmark suites around : many paper authors resort to writing their own benchmarks, creating problems with repeatability and reliability of results.

Architecture

overview of ipbench
The test suite has three main components
  1. A controller : Your personal computer
  2. n testers : "Heavyweight" PCs on which the test will run
  3. A target : depending on the test requires different capabilities.
The general procedure is that you specify the test; the controller sets up and sychronously starts the tester machines running their test aimed at the target.  Once they have completed, they report their results back to the controller, which concatenates the results from all testers and reports a final tally.

Some tests have a companion component that runs on the target, such as a CPU usage monitor (the light grey lines above).  These are optional but work similar to the testing clients.

Implementation

The infrastructure is written in Python for maintainability, and the tests are written as plugins in C for speed.  There is a simple API for writing new tests should you wish to.

Tests

Latency Test

We have instrumented a latency test which we believe is one of the most flexible latency tests available.

For documentation on the latency test see this page

NFS Test

We have a beta stage distributed NFS test included in the distribution.

CPU Usage

We have implemented an accurate CPU usage meter that can be run on the target machine.

Wrapper Test

Using simple shell scripts called by ipbench you can very quickly extend the operation of ipbench.  For example, wrapper scripts around oprofile can automatically return kernel profiling information from your target machine during a run.

Getting it

Please grab the latest sources from CVS

cvs -z3 -d:pserver:anonymous@ipbench.cvs.sourceforge.net:/cvsroot/ipbench co ipbench2

Once you have the sources, run autogen.sh and then configure and make. Documentation is lagging a little behind development at this stage, but please give it a go and email with any questions.

Please feel free to submit patches or bugs, but please checkout the latest CVS sources.
You may also check out the sourceforge page for any releases.

SourceForge.net Logo

Example

See this page for a sample of a testing run.

Authors

Ian Wienand
Luke Macpherson


This work sponsored by
gelato.org
hp.com
NICTA
unsw