NetStrain is a tool to measure practical data throughput between two machines over a TCP connection. It can be used for performance testing, stress/stability testing and to demonstrate various network effects. It supports both IPv4 and IPv6, provided the underlying system does.
NetStrain is also intended to demonstrate basic TCP socket programming and IPv6 support. It includes an getaddrinfo() / getnameinfo() emulation that can be reused in other programs.
NetStrain is written in C and is designed to compile on any modern Unix flavour. It requires no special libraries.
Some strain of Unix with reasonable sockets support is required. So far, NetStrain has been tested on the following systems:
Linux 2.2.x + glibc 2.1.x on x86, alpha, powerpc, sparc (Debian 2.2 "potato")
Linux 2.4.x + glibc 2.2.x on x86 (Debian 3.0 "woody", RedHat 7.3 and SuSE 7.2)
FreeBSD 4.6 on x86
Darwin 5.x (a.k.a. Mac OS X 10.1.x) on powerpc
Darwin 6.x (a.k.a. Mac OS X 10.2.x) on powerpc
SunOS 5.8 (a.k.a. Solaris 8) on sparc (Only worked with gcc and `make LIBS=-lsocket')
IRIX64 6.5 on mips
HP-UX 11.00 on hppa2.0
QNX 6.2.1 on i386 (`make LIBS=-lsocket' required)
Of these, Linux, FreeBSD, Solaris, and Darwin 6.x supported IPv6 during the tests.