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.

LTCPMON 0.1a (L3DGEWorld Transmission Control Protocol Monitoring)

August 20th, 2010
By Michael Allwright (CAIA winter intern, 2010)
(website content is borrowed from LCMON)


LTCPMON 0.1a (L3DGEWorld Transmission Control Protocol Monitoring) demonstrates the use of combining L3DGEWorld with SIFTR (Statistical Information For TCP Research) to provide an insight into how multiple outbound TCP flows interact on the FreeBSD TCP/IP stack. LTCPMON is designed to playback or read live data as generated by the SIFTR kernel module. The tool supports multiple playback speeds for recorded data and live data, and supports a number of custom mappings between the TCP state variables and the visual characteristics displayed on 3D entities inside L3DGEWorld.

LTCPMON is built as an plugin for L3DGEWorld. L3DGEWorld is a network monitoring and control application based on Open Arena (a game built on the GPL'd Quake III Arena engine). Inspired by other applications such as LCMON 1.1 and LupsMON, LTCPMON utilises the L3DGEComms interface which sends messages into the virtual world updating various visual characteristics for a given entity. 

Details regarding the motivation, design and use of LTCPMON can be found in CAIA Tecnnical Report 100820C.

Inside the virtual world

The following screenshots capture the view seen by a single user after logging into a L3DGEWorld virtual world. When the user first logs into the L3DGEWorld server, they are placed inside the 3D world, floating above a platform (see figure 1). On the platform there is a matrix of pyramids. Each of the pyramids can be used to represent a TCP flow, and as the user approaches these pyramids, detailed information about that flow is displayed. If user does not want to approach the object, there is an inspector weapon, which when fired at a pyramid will bring up the information dialog. Once the LTCPMON daemon is started the pyramids can be configured (see Quick Start Guide for LTCPMON) to bounce, change colour and spin etc. Each of these characteristics is automatically scaled depending on network metrics.

As shown in figure 2, once LTCPMON is loaded and connected the L3DGEWorld server, updates will occur causing the pyramids to up around, change colour and spin.

Screen Shot 1
Figure 1:
Initial view, LTCPMON not loaded
Screen Shot 2
Figure 2:
LTCPMON sending updates to L3DGEWorld

Quick Start Guide for LTCPMON

LTCPMON is flexible and allows most options to be configured on the command line. These parameters determine the playback speed, update period and offset, as well as providing three files which define the source of the SIFTR data, the custom mappings and a list of the entities available on the map. If no command line switches are given the defaults for LTCPMON are used. The default values assume L3DGEWorld is running on port 27960 of the local host ( The playback speed will be set to half, updating the virtual world every 2 seconds until all the data in the log file has been displayed.

For a quick start / demo of how LTCPMON works, start by compiling the source code on your local machine. In the tarball you should find a folder called samples. these are the files which can be loaded into LTCPMON to generate a quick demo with multiple flows present. install L3DGEWorld on your local machine and run the script in the installation directory. this will start an instance of the server. In the background, start LTCPMON using the command "ltcpmon path/to/ path/to/entities.conf path/to/siftr.log". this will start LTCPMON on the local machine, and will attempt to connect to the server which is assumed to be on the local host (can be overriden with the '-a' switch). Switching back to L3DGEWorld you should now be able to see the pyramids (or possibly other entities) bouncing etc.

Functional overview

Syntax Message
Figure 3:
LTCPMON's syntax message
Program Flow
Figure 4:
Application Flow for LTCPMON

When LTCPMON starts it parses the command line to find the required files and any additional command line switches. These command line switches are shown above in Figure 3 and are optionally used to configure the location and port of L3DGEWorld server (by default on 27960), the playback speed, the start time offset and the duration of playback as desired.

The application sets up it's environment using the optional command line switches before parsing the provided files. This gives LTCPMON a complete configuration. LTCPMON then creates a connection with L3DGEWorld Server and enters it's main loop. Inside the main loop the program parses a variable number lines of the SIFTR log file. The number of lines parsed is dependant on how much traffic was flowing in and out of the TCP/IP stack over a given interval. This is because LTCPMON looks at the timestamps inside the log file to determine when a finite amount of time has expired. Once this time has expired the application waits for an update timer to expire, before calculating the statistics on the data. Hence, the playback ratio switch controls the speed at which the log file data is parsed and displayed, while the update period switch controls the resolution of the updates.

LTCPMON will terminate once it has reached the end of the log file, or in case of a pipe, when it has consumed it's buffer. This flow is illustrated in figure 4.

For people familiar with Quake III Arena, L3DGEWorld is essentially a custom map running on a modified Quake III Arena game engine. As with a normal Quake III Arena game, one or more clients may be connected to a single server, each one rendering a separately controlled view of the virtual environment. Clients may connect and disconnect from the server at any time without disrupting the server's virtual environment, and may do so from where ever there is UDP/IP connectivity to the L3DGEWorld Server.

System Requirements

LTCPMON 0.1a has only been tested under the FreeBSD 8.0-RELEASE operating system. 

[In 2007 L3DGEWorld 2.3 (both client and server sides) were initially verified to run on FreeBSD 6.2, Mac OS X 10.4.9, Linux and Windows XP Platforms (with the addition of cygwin).  In July 2010 it has been confirmed L3DGEWorld 2.3 client will run as-is under Mac OS X 10.6.4 Snow Leopard, and the win32 binary will run under FreeBSD 8.x using Wine 1.2-rc4. The native FreeBSD binaries (server and client) must be recompiled to run under FreeBSD 8.x (as currently built they look for older versions of and Recompilation instructions are in the L3DGEWorld 2.3 tarballs.]

LTCPMON Requirements:

  • Unix installation (including source tree)
L3DGEWorld Client Requirements:
  • Video card supporting OpenGL acceleration.
  • libSDL and libOpenAL are required on FreeBSD and Linux.

Dedicated L3DGEWorld Server Requirements:

  • Unix
  • BASH (Bourne Again Shell)
  • libSDL and libOpenAL are only required if you run a dedicated server using the ioquake3 binaries. This is because they contain both the client and server components of L3DGEWorld, the ioq3ded binaries contain only the server component which does not require SDL or OpenAL.


LTCPMON 0.1a is copyright (C) 2010, the Centre for Advanced Internet Architectures, Swinburne University of Technology, and distributed under version 2 of the GNU General Public Licence.


Download LTCPMON 0.1a package:

Download L3DGEWorld 2.3 package:

Authors and Acknowledgments

  • LTCPMON 0.1a was developed by Michael Allwright under the supervision of Grenville Armitage
  • LTCPMON was inspired by LupsMON 0.2 and LCMON 1.0, both of which have been developed by CAIA. 
  • L3DGEWorld 2.3 was developed by Lucas Parry.
  • Alot of very valuable feedback was provided by Grenville Armitage.


  1. M.Allwright, G. Armitage,  "Monitoring of the Local Transmission Control Protocol's State Variables Using L3DGEWorld", CAIA Technical report 100820C, August 2010
  2. L. Parry "L3DGEWorld 2.3 Input & Output Specifications", CAIA Tech Report 080222C, February 2008
  3. C.Javier "Map & Entity Modelling for L3DGEWorld", CAIA Tech Report 070809A, August 2007

Last Updated: Tuesday 31-Aug-2010 11:05:39 AEST | Developed by: Michael Allwright | Authorised by: Grenville Armitage (