The program ttcp (Test TCP) is a utility for measuring network throughput, popular on Unix systems. It measures the network throughput between two systems using the TCP or optionally UDP protocols.[1] It was written by Mike Muuss and Terry Slattery at BRL sometime before December 1984,[2] to compare the performance of TCP stacks by the Computer Systems Research Group (CSRG) of the University of California, Berkeley and Bolt, Beranek and Newman (BBN) to help DARPA decide which version to place in 4.3BSD.

Ttcp
Original author(s)Excelan
Developer(s)Mike Muuss and Terry Slattery
Repositoryconnection.netcordia.com/files/folders/tools/entry103.aspx (archive.org)
Written inC
Operating systemUnix
TypeBandwidth management
LicenseBSD license
Websiteftp.arl.army.mil/~mike/ttcp.html
nuttcp
Developer(s)Bill Fink and Rob Scott
Stable release
8.2.2 / September 5, 2018 (2018-09-05)
Written inC
Operating systemCross-platform
LicenseGPLv2
Websitenuttcp.net

Many compatible implementations and derivatives exist including the widely used Iperf.[3]

Testing can be done from any platform to any other platform, for example from a Windows machine to a Linux machine, as long as they both have a ttcp application installed. For normal use, ttcp is installed on two machines – one will be the sender, the other the receiver. The receiver is started first and waits for a connection. Once the two connect, the sending machine sends data to the receiver and displays the overall throughput of the network they traverse. The amount of data sent and other options are configurable through command line parameters. The statistics output covers TCP/UDP payload only (not protocol overhead) and is generally displayed by default in KiB/s (kibiBytes per second) instead of kb/s (kilobits per second), but it can be configured to be displayed in other ways on some implementations. The reported throughput is more accurately calculated on the receive side than the transmit side, since the transmit operation may complete before all bytes actually have been transmitted.

Implementations and derivatives

edit

Originally designed for Unix systems, ttcp has since been ported to and reimplemented on many other systems such as Windows.[3][4][5][6][7]

ttcp

edit

The original Unix implementation developed by Mike Muuss and Terry Slattery, version 1.10 dated 1987-09-02. Uses port 2000 by default unless another one is specified with the -p switch.[3]

nttcp

edit

Developed at Silicon Graphics, the nttcp implementation made several changes that remain in future implementations such as by default using port 5001 instead of 2000, reversing the meaning of the -s switch to sink data by default, and adding the -w window size switch[3]

nuttcp

edit

Developed at Laboratory for Computational Physics and Fluid Dynamics at Naval Research Lab (LCP & FD at NRL). Provides additional information related to the data transfer such as user, system, and wall-clock time, transmitter and receiver CPU utilization, and loss percentage (for UDP transfers).[8]

Iperf

edit

Developed by the Distributed Applications Support Team (DAST) at the National Laboratory for Applied Network Research (NLANR). Widely used and ported implementation including additions such as the option for bidirectional traffic.

ntttcp

edit

Developed by Microsoft, used to profile and measure Windows networking performance. NTttcp is one of the primary tools Microsoft engineering teams leverage to validate network function and utility.

ntttcp-for-linux

edit

Developed by Shihua Xiao at Microsoft, used to profile and measure Linux networking performance. Provided multiple threading to exchange data in test, and potentially can interop with Windows version of ntttcp.[9]

PCATTCP

edit

Native Windows version developed by PCAUSA.[7]

Cisco IOS

edit

Cisco IOS routers include ttcp as a hidden command that can be set up as either the sender or receiver in version 11.2 or higher and feature sets IP Plus (is- images) or Service Provider (p- images).[10]

EnGenius

edit

Many EnGenius branded wireless access points include an Iperf-based implementation accessible as Speed Test under Diagnostics in the web and command line user interfaces.[11]

See also

edit
  • bwping: Tool of similar nature using IP's inherent ECHO reply functionality instead of dedicated server-side software.
  • Netperf: Another bandwidth measurement tool that supports TCP, UDP, DLPI, Unix Domain Sockets and SCTP.
  • Iperf
  • NetPIPE

References

edit
  1. ^ "ttcp(1): test TCP/UDP performance - Linux man page". linux.die.net. Retrieved 30 December 2022.
  2. ^ The Origin of TTCP (Test TCP) by Terry Slattery
  3. ^ a b c d "ttcp/nttcp/nuttcp/iperf Versions". Distributed Computing IT Journal. 10 May 2008. Retrieved 30 December 2022.
  4. ^ "The Story of the TTCP Program". ftp.arl.army.mil. Retrieved 30 December 2022.
  5. ^ Java and C source code Archived 12 February 2007 at the Wayback Machine
  6. ^ "ttcp". 10 November 2022. Retrieved 30 December 2022 – via GitHub.
  7. ^ a b "Utilities". www.pcausa.com. Retrieved 30 December 2022.
  8. ^ "nuttcp website". nuttcp.net. Retrieved 30 December 2022.
  9. ^ NTTTCP for Linux
  10. ^ "Using Test TCP (TTCP) to Test Throughput". Cisco. Retrieved 30 December 2022.
  11. ^ "Diagnostics speed test not working?". Archived from the original on 28 May 2014. Retrieved 26 May 2014.