Test TCP (TTCP)
Benchmarking Tool
for
Measuring TCP and UDP Performance

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.

Since source code to the original TTCP sockets program has been available on the Internet for many years there are a lot of implementations available on various operating systems. Click here for a page that list a few Windows-related TTCP implementations.

 

PCATTCP "Classic" - PCAUSA's Port Of TTCP To Windows Sockets

The PCATTCP program is simply PCAUSA's port of TTCP to Windows Sockets. For some reason it has become fairly popular and has been widely used on Windows hosts. If you search the Internet for "PCATTCP" you will see it referenced fairly often.

Like the original TTCP application, PCATTCP is a Win32 Console Application. You must run it from the Command Prompt or from a Batch File. The key features of PCATTCP include:

bulletIt Is Easy to Find on the Internet
bulletIt Runs On All Windows Platforms
bulletIt Is Compatible with Standard Unix/Linux TTCP Implementations
bulletSource Code Is Included
bulletIt Is Free

The compatibility statement above means that you can use a PCATTCP transmitter with a standard Unix/Linux TTCP receivers and vice versa.

PCATTCP includes a few features not provided in the original TTCP implementation:

bulletTransmit Data Rate Limiter
bulletReceiver Can Run Continuously (Instead of one test at a time...)
bulletReceiver Can Accept Multiple Concurrent TCP Streams

The limiter feature is provided primarily to allow the user to pace the transmit data rate of the UDP transmitter. UDP TCP tests are often meaningless because UDP offers no flow control. A standard TTCP UDP transmitter simply blasts datagrams to the receiver, and often many are simply tossed.

The receiver modifications are intended to allow the receiver to be started and run unattended.

 

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
   -R     concurrent TCP/UDP multithreaded receiver
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 or have suggestions for improvements, please let us know. Email testlab@NOpcausaSPAM.com with your comments.

NOTE: Please remove the "NO" and "SPAM" characters from the email address before sending.

 

Release Notes

Topic Status

March 25, 2005

PCATTCP V2.01.01.08 update released..

November 23, 2003

PCATTCP V2.01.01.07 update released. Incorporated fix made by Clarkson University that reduces hands when closing UDP tests.

April 5, 2003

PCATTCP V2.01.01.06 update released. Minor fix in filling pattern buffer for transmit.

May 29, 2002

 PCATTCP V2.01.01.03. Extensively revised.

bulletNew Documentation
bulletEnhancements:
bulletAn option to send continuously, instead of stopping after sending a specified number
of buffers.
bulletA receiver that would automatically restart after each test (the receiver was in
another room...).
bulletBetter Error Messages.
bulletCode extensively re-written, multi-threaded receiver.
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.

Hit Counter
3/27/06

PCAUSA Home · Privacy Statement · Products · Ordering · Support · Utilities · Resources
Mailing Lists  · PCAUSA Newsletter · PCAUSA Discussion List
Rawether for Windows, Rawether .NET, WinDis 32 and NDIS Press are trademarks of Printing Communications Assoc., Inc. (PCAUSA)
Microsoft, MS, Windows, Windows 95, Windows 98, Windows Millennium, Windows 2000, and Win32 are registered trademarks and Visual C++ and Windows NT are trademarks of the Microsoft Corporation.
Copyright © 1996-2006 Printing Communications Assoc., Inc. (PCAUSA)
Last modified: April 01, 2006