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
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).
To get a local copy up and running follow these simple example steps.
- Clone the repo
git clone https://github.com/empobla/Scalable-TCP-Congestion.git
- Run the script
python Scalable_TCP.py
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.
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.
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