There are much more problems and issues with TCP after they introduced TCP Reno
(Here is a paper that points out the phenomenon: click here )
Example that illustrates TCP synchronization:
/home/cheung/NS/run-ns Reno.tcl
To see the plot of the CWND of TCP, save the Congestion Window CWND plot file in your directory and run gnuplot
In gnuplot, issue the command:
plot "WinFile" using 1:2 title "Flow 1" with lines 1, \
"WinFile2" using 1:2 title "Flow 2" with lines 2
You should see this plot:
This kind of behavior is not good, because the best way to utilizate all network capacity is for one of the flow to cut back
(But it should NOT always be the same flow, otherwise you have unfairness)
/home/cheung/NS/run-ns Reno.tcl
(The NAM file is too big and I deleted it...)
To see the plot of the CWND of TCP, save the Congestion Window CWND plot file in your directory and run gnuplot
In gnuplot, issue the command:
plot "WinFile" using 1:2 title "Flow 1" with lines 1, \
"WinFile2" using 1:2 title "Flow 2" with lines 2
You should see this plot:
In these networks, the usable window size is huge... hundreds of thousands of packets.
TCP cannot afford the luxury to increase its window size by 1 in each RTT.
In order to reach the fill capacity of the network, TCP must increase faster...
/home/cheung/NS/run-ns Reno.tcl
(The NAM file is too big and I deleted it...)
To see the plot of the CWND of TCP, save the Congestion Window CWND plot file in your directory and run gnuplot
In gnuplot, issue the command:
plot "WinFile" using 1:2 title "Flow 1" with lines 1
You should see this plot: