PCATTCPC: A benchmarking tool for analyzing the
performance of TCP and UDP streams |
The PCATTCPC is a command line sockets-based benchmarking tool for measuring TCP and UDP performance between two end systems. The original PCATTCP source was modified to provide real time feedback about the performance to the connection to the sender in terms of the number of packets sent/received, loss percentage, roundtrip time and throughput. PCATTCPC attains high-test performance by filling a memory buffer with data and then repeatedly transmitting this data from the sender to the receiver. Since everything runs from memory, we have a traffic transmitter and receiver that can operate at true network speed.
The PCATTCPC tool was used to
analyze the performance of TCP and UDP over different network configurations
(Local Host, Hub Network, Switch Network, LAN, and WAN). The PCATTCPC tool
returned a formatted text file, which provided a real time feedback to the
sender about the various minutiae of the connection. The available results were
used to benchmark the performance of TCP and UDP and also to analyze the
significance of the header to payload ratio of TCP and UDP streams.
The Internet is a worldwide system of computer
networks – a network of networks in which a user at one computer can get
information from any other computer. Technically, what distinguishes the
Internet is its use of a set of protocols called the Transmission Control Protocol
(TCP) and the User Datagram Protocol (UDP). TCP and the UDP are the basic
communication languages for many applications and the Internet. Each of our
computers runs TCP/IP as every other computer that we may send messages or get
information from also has a copy of TCP/IP. There are a number of differences
between the TCP and UDP, which are summarized below.
TRANSMISSION CONTROL PROTOCOL (TCP)
The TCP is the basic communication
language for many applications and the Internet. Each of our computers runs
TCP/IP as every other computer that we may send messages or get information
from also has a copy of TCP/IP. The TCP relies upon the IP layer to send
information from one place to another. The TCP layer manages the assembling of
messages into smaller packets that are transmitted over the Internet and
received by another TCP layer at the destination, which reassembles the packets
into the original message. The IP layer handles the address part of each packet
so that it gets to the right destination.
Although TCP and UDP use the
same IP layer, TCP provides totally different service to the application layer.
TCP provides a connection oriented reliable byte stream service. The term
connection oriented means the two applications using TCP must establish a
connection before they can exchange data with each other. This kind of
handshake makes sure that both the client and server are prepared to accept the
incoming data. The connection oriented TCP service provides the capability for
reliable data transfer. TCP in addition provides flow control and congestion
control. In the event of a packet/acknowledgement loss, TCP retransmits the
packet to the receiver, adding to TCP’s reliability.
USER DATAGRAM PROTOCOL (UDP)
The UDP is a simple, datagram oriented transport layer protocol. Each output (write) operation by a process, causes exactly one UDP datagram to be sent. This is different from a stream-oriented protocol such as the TCP, where the amount of data sent has little relationship to what actually gets sent in a packet. Unlike TCP, UDP does not provide the service of dividing a message into packets and reassembling at the other end. UDP does not provide any reliability. UDP is not concerned with the guaranteed delivery of the packets to the receiver and any such reliability should be added on by the concerned application. UDP provides two services not provided by the IP layer. It provides port numbers to help distinguish different user requests and optionally a checksum capability to verify whether the data arrived intact. UDP does not provide flow control and congestion control.
MOTIVATION
In order to understand the performance and functional implications of the above-mentioned differences, we simulated and analyzed the TCP and UDP streams under different network configurations such as local host, hub network, switched network, local area network and wide area network. For each experiment, we performed a fixed number of trials and gathered Ethereal traces at the sender and the receiver side. We also collected information about the number of packets sent by each connection, the size of each packet, the throughput and the packet loss details which helped us to distinguish the minutiae of TCP and UDP performances under different network configurations. The results of the experiments and the graphs are available for presentation.
ACKNOWLEDGEMENTS
The PCATTCPC tool was coded by Todd Deshane and Ashwin Venkatraman, Clarkson University and the experiments to benchmark the performance of TCP and UDP streams were performed under the help and guidance of Dr. Jeanna Matthews by Niranjan Srinivasan as a Master’s Dissertation towards the partial fulfillment of the requirements for the degree of Master of Engineering in Computer Science at the Cornell University.