As part of a broader organisational restructure, data networking research at Swinburne University of Technology has moved from the Centre for Advanced Internet Architecture (CAIA) to the Internet For Things (I4T) Research Lab.

Although CAIA no longer exists, this website reflects CAIA's activities and outputs between March 2002 and February 2017, and is being maintained as a service to the broader data networking research community.

TCP Experiment Automation Controlled Using Python (TEACUP) -- Downloads


Name Description

The TEACUP tarball contains the TEACUP source code and example configuration files. It also contains the various TCP loggers and modified versions of iperf and httperf used by TEACUP to generate traffic.

TEACUP version 1.0 is the last version to be released here. The official web site for the source distribution is now:


The documentation is in the form of LyX 2.1.x source and related image files which, as of June 9th 2016, have been released under the Creative Commons Attribution-ShareAlike 4.0 International License ("CC BY-SA 4.0").


TEAPLOT is an experimental extension to TEACUP v1.0 that provides 3D, web-browser based animation and visualisation of TEACUP-generated results (demo page). If you are running the latest revision of TEACUP from Sourceforge, then TEAPLOT v0.1.1 functionality is already committed as of July 5th 2016. However, if you are running TEACUP v1.0 then unpack the v0.1.1 tarball below over the top of a TEACUP 1.0 source directory, and apply one patch to the TEACUP 1.0 (instructions inside tarball).


The documentation is in the form of LaTeX source which, as of July 1st, 2016, have been released under the Creative Commons Attribution-ShareAlike 4.0 International License ("CC BY-SA 4.0").


A patch to add support for generating DASH traffic, using a dash.js client inside a Firefox browser and using TEACUP's lighttpd server.


ttprobe is an additional Linux kernel module (and associated patch for TEACUP v1.0) to provide event-driven logging of TCP state variables. ttprobe can replace TEACUP's use of Web10g's polling of TCP state variables.

ttprobe version 0.1 was committed to the official TEACUP source distribution on Sep 28th 2015

TCP web10g-logger (Linux)

A tool that uses Web10G to log TCP information on Linux in a TEACUP specific format. Since Web10G version 2.0.8 the web10g-logger is part of the official Web10G userland code distribution which can be downloaded from here. However, we still make changes to the logger that are not necessarily available in the official Web10G versions. Here we provide patches for different versions of the logger against different Web10G versions.

TCP EStats logger (Windows)

A tool that logs TCP information collected by the Windows kernel according to the specified TCP Extended Statistics MIB (RFC4898). It produces the same log format as the Linux web10g-logger, but some statistics available on Linux are not available in the Windows EStats implementation.

DTRACE-based TCP logger (MacOS X)

Mac OS X does not include FreeBSD's SIFTR TCP logger. Based on DTRACE we implemented a TCP statistics logger for Mac OS X that prints out data in SIFTR format, but due to limitations only a subset of the SIFTR statistics is supported.

Modified iperf

TEACUP utilises iperf to generate TCP bulk transfer flows. To fill high bandwidth-delay-product links it is necessary to tweak the send and receive buffers. CAIA's NewTCP project developed a patch for iperf that allows to specify the buffer sizes used by iperf with command line parameters and TEACUP makes use of these parameters.

Modified httperf

To generate HTTP traffic, video-streaming-like traffic over HTTP and traffic for incast evaluation scenarios, TEACUP uses a modified version of httperf. Jim Summers, Tim Brecht, Derek Eager, and Bernard Wong have modified httperf to to emulate HTTP-based video streaming traffic. Their modified version of httperf and their paper can be downloaded from here. We have made a few additional modifications and provide our modified version below.

Modified nttcp

To generate VoIP-like UDP traffic, TEACUP uses a modified nttcp. The only modification we made is to change the timeout value for checking the TCP socket, because the original value could cause large delays after starting nttcp.


To generate an approximation of first person shooter (FPS) game traffic, TEACUP uses an enhanced version of pktgen (version 0.3.1) from CAIA's BITSS project. The pktgen-0.3.1.tgz tarball is linked here but also committed to the official TEACUP repository on Feb 6th 2017.

Last Updated: Wednesday 5-Apr-2017 20:23:55 EST | Maintained by: Grenville Armitage ( | Authorised by: Grenville Armitage (