Is it really exponential?
- I was looking at some traces and noticed that the Slow Start
algorithm opens the window size by *one* segment size everytime
an ACK is received. This is how it was described in Van Jacobson's
"Congestion Avoidance and Control" SIGCOM'98 paper. Is there
any reason why it is designed this way as opposed to opening
the window by the amount of data that got acked? With Delayed
Ack in effect, the one-segment growth scheme would increase the
window in roughly 2^(x/2) way as opposed to a true 2^x growth.
Basically, RTT*logW (where W is window size in segments) being
the time to reach steady state as computed in VJ's paper will
not be true for Delayed Ack. And this will be even worse
for the stacks that are lazy about sending Acks i.e send one
Ack for more than 2 packets (please... i dont mean to re-start
last weeks discussion on this subject)
However, a simple one-line fix to open the window by the amount of
data acked (ack - snd_una) should work well always. The window would
still open exponentially and the time to reach full window size would
still be in the order of RTT*logW, approximately.
Any reason why it shouldnt be done this way?