Site Navigation


Welcome

Introduction

TCP Simulator
Operation

Running the
Simulator

Simulator
Capabilities and
Limitations

Downloads

Java Class
Documentation

Log Book

Useful Links



Email Me

Introduction


Introduction


Background

The TCP (Transmission Control Protocol) is the most dominant protocol used to deliver data reliably over the Internet today. TCP's strengths lie in its use of flow control algorithms that allows the TCP to vary the rate at which it sends data in response to data traffic conditions encountered in the communications link. The stability of the Internet today is largely due to the presence of well designed flow control algorithms in TCP.

However, huge variances in Internet data traffic conditions has lead to the development of complex TCP flow control algorithms that make the understanding of such algorithms difficult. Traditional methods of teaching how flow control algorithms work, such as viewing sliding window illustrations, do not illustrate flow control algorithm dynamics well; a better method would be to use a TCP simulator that not only visualizes flow control algorithm operations happening in real time, but also allows users to experiment with running different flow control algorithms under different data traffic conditions conditions.

Simulators capable of simulating TCP do exist. However, such simulators, like the REAL Simulator, are orientated towards experimental verification of communications protocols; they require configuration of the underlying network topology, a protocol layer programmed from the ground up and do not visualize well the end-to-end data transfer dynamics occurring in the TCP layer. As a result, such simulators are not ideal for use as learning tools.



Aims

The aim of this project is to produce a visual TCP simulator that acts as an interactive teaching/demonstration tool by allowing users to experiment with simulating different TCP flow control algorithms over different data traffic conditions that are similar to those encountered on the Internet in real life.

The simulator developed should fulfil the following aims.

  • Simulate real life Internet data traffic conditions (packet delay and loss).


  • Simulate the operations of any TCP flow control algorithms subjected to any Internet data traffic conditions as set by the user during the simulator's execution.


  • Provide facilities for simulating any flow control algorithm via the development of a dynamic configuration mechanism that allows any flow control algorithm to be incorporated into the simulator.


  • Effectively visualize the operations of flow control algorithms subjected to different Internet data traffic conditions.




Programming Language Used

Three languages (C, C++ and Java) were considered for use in implementing the TCP simulator since these are the languages I am most familiar with. After careful consideration, Java was chosen because of the following benefits.
  • Portability - Java's usage of a Virtual Machine allows it to run on many different platforms. This is an advantage as it allows it to be used in many locations (i.e. different lecture halls with different types of computers).

  • Good GUI Library - Java has libraries which make GUI construction easy. Since visualization is an important part of the simulator, this was an advantage in Java's favor.
  • Object Orientated - Java's object orientated approach provides a means for flow control algorithms to be implemented as objects that can be dynamically loaded into the simulator at run time.
Due to these benefits, Java was chosen to implement the TCP simulator.