Ttcp

Last updated
Ttcp
Developer(s) Mike Muuss and Terry Slattery
Repository connection.netcordia.com/files/folders/tools/entry103.aspx (archive.org)
Written in C
Operating system Unix
Type Bandwidth management
License BSD license
Website ftp.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 in C
Operating system Cross-platform
License GPLv2
Website nuttcp.net

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.

Contents

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

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

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

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

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

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

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

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

Native Windows version developed by PCAUSA. [7]

Cisco IOS

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

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

Related Research Articles

<span class="mw-page-title-main">Mike Muuss</span> American computer programmer and author

Michael John Muuss was the American author of the freeware network tool ping.

In computing, traceroute and tracert are computer network diagnostic commands for displaying possible routes (paths) and measuring transit delays of packets across an Internet Protocol (IP) network. The history of the route is recorded as the round-trip times of the packets received from each successive host in the route (path); the sum of the mean times in each hop is a measure of the total time spent to establish the connection. Traceroute proceeds unless all sent packets are lost more than twice; then the connection is lost and the route cannot be evaluated. Ping, on the other hand, only computes the final round-trip times from the destination point.

Network File System (NFS) is a distributed file system protocol originally developed by Sun Microsystems (Sun) in 1984, allowing a user on a client computer to access files over a computer network much like local storage is accessed. NFS, like many other protocols, builds on the Open Network Computing Remote Procedure Call system. NFS is an open IETF standard defined in a Request for Comments (RFC), allowing anyone to implement the protocol.

Berkeley sockets is an application programming interface (API) for Internet sockets and Unix domain sockets, used for inter-process communication (IPC). It is commonly implemented as a library of linkable modules. It originated with the 4.2BSD Unix operating system, which was released in 1983.

Explicit Congestion Notification (ECN) is an extension to the Internet Protocol and to the Transmission Control Protocol and is defined in RFC 3168 (2001). ECN allows end-to-end notification of network congestion without dropping packets. ECN is an optional feature that may be used between two ECN-enabled endpoints when the underlying network infrastructure also supports it.

<span class="mw-page-title-main">Server Message Block</span> Network communication protocol for providing shared access to resources

Server Message Block (SMB) is a communication protocol mainly used by Microsoft Windows equipped computers normally used to share files, printers, serial ports, and miscellaneous communications between nodes on a network. SMB implementation consists of two vaguely named Windows services: "Server" and "Workstation". It uses NTLM or Kerberos protocols for user authentication. It also provides an authenticated inter-process communication (IPC) mechanism.

IPX/SPX stands for Internetwork Packet Exchange/Sequenced Packet Exchange. IPX and SPX are networking protocols used initially on networks using the Novell NetWare operating systems. They also became widely used on networks deploying Microsoft Windows LANS, as they replaced NetWare LANS, but are no longer widely used. IPX/SPX was also widely used prior to and up to Windows XP, which supported the protocols, while later Windows versions do not, and TCP/IP took over for networking.

Network congestion in data networking and queueing theory is the reduced quality of service that occurs when a network node or link is carrying more data than it can handle. Typical effects include queueing delay, packet loss or the blocking of new connections. A consequence of congestion is that an incremental increase in offered load leads either only to a small increase or even a decrease in network throughput.

netstat Command line network statistics tool

In computing, netstat is a command-line network utility that displays network connections for Transmission Control Protocol, routing tables, and a number of network interface and network protocol statistics. It is available on Unix, Plan 9, Inferno, and Unix-like operating systems including macOS, Linux, Solaris and BSD. It is also available on IBM OS/2 and on Microsoft Windows NT-based operating systems including Windows XP, Windows Vista, Windows 7, Windows 8 and Windows 10.

netcat Computer networking utility

netcat is a computer networking utility for reading from and writing to network connections using TCP or UDP. The command is designed to be a dependable back-end that can be used directly or easily driven by other programs and scripts. At the same time, it is a feature-rich network debugging and investigation tool, since it can produce almost any kind of connection its user could need and has a number of built-in capabilities.

In computer networks, a tunneling protocol is a communication protocol which allows for the movement of data from one network to another. It can, for example, allow private network communications to be sent across a public network, or for one network protocol to be carried over an incompatible network, through a process called encapsulation.

Open Network Computing (ONC) Remote Procedure Call (RPC), commonly known as Sun RPC is a remote procedure call system. ONC was originally developed by Sun Microsystems in the 1980s as part of their Network File System project.

<span class="mw-page-title-main">Windows Messenger service</span> Local network notification service for Microsoft Windows

Messenger service is a network-based system notification Windows service by Microsoft that was included in some earlier versions of Microsoft Windows.

Transmission Control Protocol (TCP) uses a congestion control algorithm that includes various aspects of an additive increase/multiplicative decrease (AIMD) scheme, along with other schemes including slow start and congestion window (CWND), to achieve congestion avoidance. The TCP congestion-avoidance algorithm is the primary basis for congestion control in the Internet. Per the end-to-end principle, congestion control is largely a function of internet hosts, not the network itself. There are several variations and versions of the algorithm implemented in protocol stacks of operating systems of computers that connect to the Internet.

A network socket is a software structure within a network node of a computer network that serves as an endpoint for sending and receiving data across the network. The structure and properties of a socket are defined by an application programming interface (API) for the networking architecture. Sockets are created only during the lifetime of a process of an application running in the node.

In computing, Microsoft's Windows Vista and Windows Server 2008 introduced in 2007/2008 a new networking stack named Next Generation TCP/IP stack, to improve on the previous stack in several ways. The stack includes native implementation of IPv6, as well as a complete overhaul of IPv4. The new TCP/IP stack uses a new method to store configuration settings that enables more dynamic control and does not require a computer restart after a change in settings. The new stack, implemented as a dual-stack model, depends on a strong host-model and features an infrastructure to enable more modular components that one can dynamically insert and remove.

<span class="mw-page-title-main">Iperf</span> Network performance software tool

iperf, Iperf, or iPerf, is a tool for network performance measurement and tuning. It is a cross-platform tool that can produce standardized performance measurements for any network. iperf has client and server functionality, and can create data streams to measure the throughput between the two ends in one or both directions. Typical iperf output contains a time-stamped report of the amount of data transferred and the throughput measured.

Netperf is a software application that provides network bandwidth testing between two hosts on a network. It supports Unix domain sockets, TCP, SCTP, DLPI and UDP via BSD Sockets. Netperf provides a number of predefined tests e.g. to measure bulk (unidirectional) data transfer or request response performance.

Flowgrind is a testing and benchmarking tool to measure throughput and other metrics for TCP. It was originally developed to study performance and behavior of TCP variants within Wireless mesh networks.

<span class="mw-page-title-main">SoftEther VPN</span> Open-source VPN client and server software

SoftEther VPN is free open-source, cross-platform, multi-protocol VPN client and VPN server software, developed as part of Daiyuu Nobori's master's thesis research at the University of Tsukuba. VPN protocols such as SSL VPN, L2TP/IPsec, OpenVPN, and Microsoft Secure Socket Tunneling Protocol are provided in a single VPN server. It was released using the GPLv2 license on January 4, 2014. The license was switched to Apache License 2.0 on January 21, 2019.

References

  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. 1 2 3 4 "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. 1 2 "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.