Scalable TCP is a congestion control algorithm which does not reduce the congestion window (cwnd) by ½ like the traditional TCP. Instead, it reduces the cwnd by ⅞ with an aim to allow the sender to reach its previous cwnd value sooner. This algorithm ensures that the bandwidth is sufficiently utilized in the presence of transient congestion. In this project, the aim is to validate ns-3 Scalable TCP implementation by comparing the results obtained from it to those obtained by simulating Linux Scalable TCP. STEPS TO REPRODUCE: 1)Add the following files given in repository to your home directory: -dumbbelltopologyns3receiver.cc -wscript -parse_cwnd.py -overlap-gnuplotscriptCwnd -tcp-scalable.cc -tcp-linux-prr-recovery.cc -tcp-socket-base.cc 2)Following are the commands for docker installation: sudo apt-get update sudo apt-get install docker.io sudo docker pull thehajime/ns-3-dce sudo docker run -i -t thehajime/ns-3-dce /bin/bash #creates a container exit #to exit the docker 3)Following are the commands to work in a container: sudo docker ps -a #displays all the containers available and their ids sudo docker start container-name #starts a container. Example: sudo docker start clever_morse sudo docker exec -it containerid /bin/bash #opens a container 4)Run the following command to check if docker has been installed successfully. cd source/ns-3-dce ./waf --run dce-iperf #to check whether docker has been successfully installed 5)Clone ns-3-dev from this repository, run the following commands in source directory. rm -r -f ns-3-dev/ #updating ns-3-dev version from github git clone https://gitlab.com/apoorvabhargava/ns-3-dev.git cd ns-3-dev git checkout LinuxPRRMergeRequest 6)To copy the files from home directory to docker run the following commands in a new terminal Note: Replace container-name with your container name, example clever_morse. sudo docker cp dumbbelltopologyns3receiver.cc dockername:/home/ns3dce/dce-linux-dev/source/ns-3-dce/example sudo docker cp wscript container-name:/home/ns3dce/dce-linux-dev/source/ns-3-dce sudo docker cp parse_cwnd.py container-name:/home/ns3dce/dce-linux-dev/source/ns-3-dce/utils sudo docker cp overlap-gnuplotscriptCwnd container-name:/home/ns3dce/dce-linux-dev/source/ns-3-dce/results/dumbbell-topology/overlapped sudo docker cp tcp-socket-base.cc container-name:/home/ns3dce/dce-linux-dev/source/ns-3-dev/src/internet/model sudo docker cp tcp-linux-prr-recovery.cc container-name:/home/ns3dce/dce-linux-dev/source/ns-3-dev/src/internet/model sudo docker cp tcp-scalable.cc container-name:/home/ns3dce/dce-linux-dev/source/ns-3-dev/src/internet/model close this terminal. 7)In order to store the generated graphs make the following directories in source/ns-3-dce location in container, run the commands: mkdir results cd results mkdir dumbbell-topology cd dumbbell-topology mkdir overlapped 8)Run the following commands to build and generate the graphs in dce-linux-dev location: export BAKE_HOME=`pwd`/bake export PATH=$PATH:$BAKE_HOME export PYTHONPATH=$PYTHONPATH:$BAKE_HOME bake.py configure -e dce-linux-dev bake.py build -vvv cd source/ns-3-dce ./waf --run "dumbbelltopologyns3receiver --stack=linux -queue_disc_type=FifoQueueDisc -WindowScaling=true --Sack=true --stopTime=300 --delAckCount=1 --BQL=true --linux_prot=scalable" cd utils python parse_cwnd.py 2 2 #generates linux plot cd .. cd results/dumbbell-topology cp cwnd_data/A-linux.plotme overlapped/ #copies linux plot to overlapped directory cd .. cd .. ./waf --run "dumbbelltopologyns3receiver --stack=ns3 -queue_disc_type=FifoQueueDisc -WindowScaling=true --Sack=true --stopTime=300 --delAckCount=1 --BQL=true --transport_prot=TcpScalable --recovery=TcpLinuxPrrRecovery" #generates ns-3 plot cd results/dembbell-topology ls #displays the timestamps cp timestamp/cwndTraces/A-ns3.plotme overlapped/ #replace timestamp with the latest timestamp generated cd overlapped ls sudo apt-get install gnuplot #skip if already installed gnuplot overlap-gnuplotscriptCwnd #displays both linux and ns-3 plots as one single image CwndA.png 9)To copy CwndA.png open new terminal and run the following command: sudo docker cp dockername:/home/ns3dce/dce-linux-dev/source/ns-3-dce/results/dumbbell-topology/overlapped/CwndA.png . #copies CwndA.png to home directory 10)To view the plot open CwndA.png in home directory.