For your convenience, I have plot a figure to illustrate this. It might just be something basic about TCP which I have missed. I would very much appreciate your help on this.
Many thanks,
Raymond
Dear ns-3 community,
I am currently running a basic TCP script similar to that of exampe/tutorial/fifth.cc. I notice that during the slow-start phase, the congestion window size Cwnd actually increases (as far as I can see) linearly rather than exponentially. My understanding is that if we delay the maximum number of receipt packets between sending an ACK to more than 1, it would slow down the Cwnd.
However, I have set the above parameter e.g. DelAckCount in tcp-socket.cc to various values, including 0, 1, 2, ..., etc., but the Cwnd still seems to increase linearly. Some basic parameters I used are
- ns3::TcpL4Protocol::SocketType = TcpReno
- channel data rate = 1Mbps
- Source rate = 10Mbps
- channel error rate = 1e-8
- ns3::TcpSocket::DelAckCount = 0, or 1, or 2
- point-to-point device (tutorial/fifth.cc)
Hi Nat,
Many thanks for your reply. I have set ns3::TcpSocket::DelAckCount = 1 (Case 18) and ns3::TcpSocket::DelAckCount = 2 (Case 19), and the figures are attached respectively. As delAckCount increases, it seems that the rate of growth of the TCP CWND is reduced as expected. However, the growth is still linear.
Hi Nat,
Thanks for the reply. I might be possible that the the absence of the slow start is due to the possibility of having a 0 slow start threshold. However, I have some doubt about this based on the default parameter, as well as the values shown in the figure. The RWND is also very high as well. Another observation is that, as an example in Case 19, at 4 sec, a RTO occurs, and the CWND drop back to 1. At this time, the SsThrd is still much higher than CWND. Thus, my feeling is that the TCP should enter the slow start region.
As for the different growth rate, the channel delay is 2ms, and so the RTT should be fixed at 4ms. However, the RTT could be affected by the retransmission delay? Is there other possibilities? I am replotting Case 19 - this time, I am including the Highest Rx Ack. It seems the next Tx seq number and the Highest Rx Ack number are consistent.
Here is the script.
Hi Nat,
I have modified the droptail to 200000, and the figure is attached. I have included a message inside tpc-congestino-ops.cc, and noticed that the congestion phase stops at 5.59 seconds. This observation suggests that the slow start is in the linearly (or what seems to be) rising region of the figure, before the SsThrd is reached. Any idea?
If you see this, there is no problem, and again, the linearity is due to the scale of the graph. Maybe zooming in could help.
Hi Nat,
I have done a bit more investigations on this linearity issue. I am a bit more confident that it is not a problem now. The apparent linearity is due to the fact that there is a 'limited thickness' of the channel (i.e. the pipe). Thus, if the channel delay is larger, the exponential behaviour would last longer before the pipe starts to 'fill up'. Once the pipe is filled up, i.e. the rate of growth of the Cwnd depends on the inter-arrival time of the ACKs, which, in turn, is limited by the channel rate and the segment size. The figure below shows the same previous case except with a 100ms channel delay. We can clearly see the exponential nature at the start, which is good.