Internet Traffic Modeling with TMODEL

tmodel is an application for modeling various types of Internet traffic. There is one executable, tmodel, which always operates as a server (see detailed descriptions for client and server roles in this application). If you specify a configuration file, tmodel will also operate as a client and initiate all traffic modeling sessions.

tmodel heavily uses the TCPLIB software package for generating random numbers based on cumulative distribution functions. The full TCPLIB package and documentation is available off of Sugih Jamin's papers page: http://irl.eecs.umich.edu/jamin/papers/

The HTTP traffic model is based on the work of Bruce A. Mah at UC-Berkeley. His work is available here: http://http.cs.berkeley.edu/~bmah/Software/HttpModel/


Running TMODEL

tmodel can be found in /home/borg/tmodel/ on FreeBSD machines,
/net/buzzard/dirt/borg/tmodel/ or ~borg/tmodel/ on AFS machines.
Underneath this directory, in src, is the latest source code.

Running tmodel is simple:

tmodel [-d] [-p##] [filename]        (Default port = 6789)

The -d option throws the program into a debug mode, with more verbose output.

The -p option allows you to specify a particular port to start the server on. Note that tmodel will always spawn a server (for some traffic models, the client must also have a server ready to accept connections), so be wary of starting multiple instances of tmodel on the same machine. You must specify different ports for them to listen on.

The default port is 6789.

If a configuration filename is specified, tmodel spawns client processes to handle the sessions specified in the file. A detailed discussion of configuration files follows...


Supported traffic models

Bulk traffic

HTTP traffic

FTP traffic

TELNET traffic


The configuration file

Sample configuration files are in /home/borg/tmodel/ on the FreeBSD machines (that's /net/buzzard/dirt/borg/tmodel/ or even ~borg/tmodel/ on AFS accounts).

Each line of each client specification is in the form

fieldname:value

Note that no spaces are allowed between the fieldname and the value.
Note also that all client specifications must end with a single "#" on a line by itself.
Furthermore, multiple clients may be spawned from the same clientfile by simply stringing client specifications together, separated by single "#"'s on lines by themselves.
(These are all just the way my parser was hacked together ... there are no comment lines.)

All traffic types can specify the following fields: (fields with a * are required fields)

Bulk traffic

HTTP traffic

FTP traffic

TELNET traffic


Pointers into the code...

Undoubtedly, someone is going to have to hack this up a bit, especially due to a lack of meaningful data statistics. It should be relatively easy to figure out, though. It's a very linear and mundane design ...

tcpt.h

tcpt.c tcptclient.c tcptserv.c other files... where to hack...
Other DiRT documents
Author: Jan Martin Borgersen
Last updated: May 15, 1998