Skip to content

A simulation of the connection phase of TCP (through a three-way handshake) and the transfer phase of TCP with congestion, using the implemented Scalable TCP TC/IP congestion algorithm.

Notifications You must be signed in to change notification settings

empobla/Scalable-TCP-Congestion

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 

Repository files navigation

Portfolio Contributors LinkedIn


TC/IP Congestion Control: Scalable TCP

A simulation of the connection phase of TCP (through a three-way handshake) and the transfer phase of TCP with congestion, using the implemented Scalable TCP TC/IP congestion algorithm.

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. License
  5. Contact
  6. Acknowledgments

About The Project

Scalable_TCP.py simulates the connection phase of TCP (through a three-way handshake) and the transfer phase of TCP with congestion, using the implemented Scalable TCP TC/IP congestion algorithm.

Note: Scalable_TCP.py only simulates the Scalable TCP TC/IP congestion algorithm, meaning that, in cases where it's Decrease Procedures would decrease the cwnd and sst values to values where TCP would instead use TCP Congestion Avoidance, it does not perform the Decrease Procedure so only Scalable TCP is simulated (as standard TCP Congestion is not implemented).

(back to top)

Built With

Python

(back to top)

Getting Started

To get a local copy up and running follow these simple example steps.

Installation

  1. Clone the repo
    git clone https://github.com/empobla/Scalable-TCP-Congestion.git
  2. Run the script
    python Scalable_TCP.py

(back to top)

Usage

When the script is run, it will firstly simulate a three-way handshake:

[SOURCE] Sending SYN to receiver...
[SOURCE] Received SYN+ACK from receiver
[SOURCE] Sending ACK to receiver...
[RECEIVER] Received ACK from source
[SOURCE] Connection Established
[RECEIVER] Connection Established

After establishing the connection through the three-way handshake, it will proceed to simulate the use of Scalable TCP for 100 packets. The program will output to the console the simulation as follows:

[SOURCE] Using Scalable TCP for packets 100-80 with a low-window threshold of 16
[SOURCE] Timed Out: Setting Slow Start Threshold to 20
[SOURCE] Timed Out: Setting Congestion Window to 20

[SOURCE] Using Scalable TCP for packets 100-80 with a low-window threshold of 16
[SOURCE] Successfully sent packets 100-80
[SOURCE] Increasing congestion window threshold from 20 to 20.01

[SOURCE] Using Scalable TCP for packets 80-60 with a low-window threshold of 16
[SOURCE] Packet loss recieved on packets 80-60
[SOURCE] Decreasing congestion window threshold from 20.01 to 17.51
[SOURCE] Setting slow start threshold to 17.51

[SOURCE] Using Scalable TCP for packets 80-63 with a low-window threshold of 16
[SOURCE] Successfully sent packets 80-63
[SOURCE] Increasing congestion window threshold from 17.51 to 17.52

[SOURCE] Using Scalable TCP for packets 63-46 with a low-window threshold of 16
[SOURCE] Successfully sent packets 63-46
[SOURCE] Increasing congestion window threshold from 17.52 to 17.53

[SOURCE] Using Scalable TCP for packets 46-29 with a low-window threshold of 16
[SOURCE] Successfully sent packets 46-29
[SOURCE] Increasing congestion window threshold from 17.53 to 17.54

[SOURCE] Using Scalable TCP for packets 29-12 with a low-window threshold of 16
[SOURCE] Successfully sent packets 29-12
[SOURCE] Increasing congestion window threshold from 17.54 to 17.55

[SOURCE] Using Scalable TCP for packets 12-0 with a low-window threshold of 16
[SOURCE] Successfully sent packets 12-0
[SOURCE] Increasing congestion window threshold from 17.55 to 17.56

If you want to see more clearly Scalable TCP's Decrease Procedures, in Scalable_TCP.py you can comment the following line in the main function (line 155):

runSimulation()

and un-comment the following line (line 159):

# runSimulation(packets = 100, a_s = 10, b_s = 0.875)

which increases Scalable TCP's additive increase from 0.01 (default) to 10, making it so that the Decrease Procedure can run and decrease cwnd and sst without running into TCP Congestion Avoidance.

(back to top)

License

This project is property of Emilio Popovits Blake, Maximiliano Sapién Fernández, Patricio Tena Zozaya, Karen Isabel Morgado Castillo, and Rodrigo Benavente García. All rights are reserved. Modification or redistribution of this code must have explicit consent from any owner.

(back to top)

Contact

Emilio Popovits Blake - Contact

Maximiliano Sapien Fernández - Github

Patricio Tena Zozaya - Github

Karen Isabel Morgado Castillo - Github

Rodrigo Benavente García - Github

Project Link: https://github.com/empobla/Scalable-TCP-Congestion

(back to top)

Acknowledgments

(back to top)

About

A simulation of the connection phase of TCP (through a three-way handshake) and the transfer phase of TCP with congestion, using the implemented Scalable TCP TC/IP congestion algorithm.

Topics

Resources

Stars

Watchers

Forks

Languages