Test TCP (TTCP)
Benchmarking Tool
and
Simple Network Traffic Generator
Background
Test TCP (TTCP) - The Original BSD Tool
Test TCP (TTCP) is a command-line sockets-based benchmarking tool
for measuring TCP and UDP performance between two systems. It was originally developed for
the BSD operating system starting in 1984. The original TTCP and sources are in the public
domain, and copies are available from many anonymous FTP sites.
You can read "The
Story pf the TTCP Program" in the words of Mike Muuss,
one of the original TTCP program authors.
WSTTCP - A Port Of TTCP To Windows Sockets
Sungjin Chun <sjchun@janus.sst.co.kr> ported TTCP from BSD to Windows Sockets as
WSTTCP in 1996. The WSTTCP
executable was originally available in executable form on WinSite.
Unfortunatly, WinSite ceased online operations in
April, 2009.
PCATTCP - PCAUSA's Port Of TTCP To Windows Sockets
The PCATTCP program is simply PCAUSA's port of TTCP to Windows Sockets. Porting TTCP to
Windows Sockets is fairly straightforward.
PCATTCP is a Win32 Console Application. You must run it from the Command Prompt or from
a Batch File.
PCATTCP Usage
You must copy PCATTCP to two Windows platforms. One platform will be used as a receiver
or data sink and the other will be used as a transmitter or data source.
Starting A PCATTCP Receiver
To start the PCATTCP receiver, go to the Command Prompt and then change to the folder
containing the PCATTCP.EXE application. Enter the following command:
C:> pcattcp -r
The "-r" command-line option starts the PCATTCP program as a receiver.
Starting A PCATTCP Transmitter
To start the PCATTCP transmitter, go to the Command Prompt and then change to the
folder containing the PCATTCP.EXE application. Enter the following command:
C:> pcattcp -t 172.16.1.10
The "-t" command-line option starts the PCATTCP program as a transmitter. You
must enter the IP address of the platform hosting the PCATTCP receiver after the
"-t" command-line parameter.
As soon as you start the PCATTCP transmitter, the test data transfer begins. After the
transfer is complete, both the PCATTCP transmitter and receiver will display performance
information and then exit. Here is an illustration of what would be displayed:
On The PCATTCP Receiver:
C:> pcattcp -r
PCAUSA Test TCP Utility V2.01.01.03
TCP Receive Test
Local Host : twoeye400
**************
Listening...: On port 5001
Accept : TCP <- 192.168.1.105:1548
Buffer Size : 8192; Alignment: 16384/0
Receive Mode: Sinking (discarding) Data
Statistics : TCP <- 192.168.1.105:1548
16777216 bytes in 33.77 real seconds = 485.22 KB/sec +++
numCalls: 2051; msec/call: 16.86; calls/sec: 60.74
On The PCATTCP Transmitter:
C:> pcattcp -t 172.16.1.10
PCAUSA Test TCP Utility V2.01.01.03
TCP Transmit Test
Transmit : TCP -> 192.168.1.101:5001
Buffer Size : 8192; Alignment: 16384/0
TCP_NODELAY : DISABLED (0)
Connect : Connected to 192.168.1.101:5001
Send Mode : Send Pattern; Number of Buffers: 2048
Statistics : TCP -> 192.168.1.101:5001
16777216 bytes in 1.75 real seconds = 9362.29 KB/sec +++
numCalls: 2048; msec/call: 0.88; calls/sec: 1170.29
Other PCATTCP Options
The PCATTCP tool includes several options that are controlled by parameters passed on
the command line when the program is started. To see the available options, run the
PCATTCP application with the "-h" option. Here is what you would see:
pcattcp -h
PCAUSA Test TCP Utility V2.01.01.08
Usage: pcattcp -t [-options] host [ < in ]
pcattcp -r [-options > out]
Common options:
-l ## length of bufs read from or written to network (default 8192)
-u use UDP instead of TCP
-p ## port number to send to or listen at (default 5001)
-s toggle sinkmode (enabled by default)
sinkmode enabled:
-t: source (transmit) fabricated pattern
-r: sink (discard) all received data
sinkmode disabled:
-t: reads data to be transmitted from stdin
-r: writes received data to stdout
-A align the start of buffers to this modulus (default 16384)
-O start buffers at this offset from the modulus (default 0)
-v verbose: print more statistics
-d set SO_DEBUG socket option
-b ## set socket buffer size (if supported)
-f X format for rate: k,K = kilo{bit,byte}; m,M = mega; g,G = giga
-c -t: send continuously
-r: accept multiple connections sequentially
-M concurrent TCP/UDP multithreaded receiver
-a bind to local host IP address Options specific to -t:
-n ## number of source bufs written to network (default 2048)
-D don't buffer TCP writes (sets TCP_NODELAY socket option)
-w ## milliseconds of delay before each write (default 0)
-L ## desired transmit data rate in bytes/second
Options specific to -r:
-B for -s, only output full blocks as specified by -l (for TAR)
-T "touch": access each byte as it's read
Download PCATTCP Executables And Source
You'll need to read the Terms And Conditions and
enter your Contact Information before beginning your
download. Your Contact Information will only be used by PCAUSA, primarily to
determine if there is sufficient interest to maintain the software on the PCAUSA
website.
Enjoy!
Download PCATTCP Executables And
Source
If you find bugs in PCATTCP of have improvements, please let us know.

Release Notes
February 4, 2010 - Released V2.01.01.11 small change that
insures that stderr and stdout are always flushed on all exit paths.
November 3, 2009 - Released V2.01.01.10 with -a option to
specify binding to specified local host IP address. Now built with Visual Studio
2008.
March 25, 2005 - PCATTCP V2.01.01.08 update released.
November 23, 2003 - Incorporated
fix made by Clarkson University that reduces hands when closing UDP tests.
April 5, 2003 - Minor fix in
filling pattern buffer for transmit.
May 30, 2002 - Minor change to
exit routines and fix of some documentation typos.
May 29, 2002 - Released V2.01.01.03.
Extensively revised.
January 11, 2000 - Released V1.00.00.02. Includes several fixes to Winsock
port of setsockopt calls. In particular, the call to set TCP_NODELAY was ported incorrectly.
Sorry!
Suggestions
Please let us know if you encounter difficulties using this program or if you have
suggestions for improvement.
Note: PCAUSA has not
made a complete port of TTCP to the Windows platform. Some options may not work as
advertised.
If you find missing functionality, have the time to make improvements and have the
inclination to share your work, please let us know. We will consider incorporating your
improvement and posting them here.
3/27/06
|