Matthew Toseland wrote: > There is a note > in section 4.1 to the effect that if a connection is idle for a long period > and then restarted you can get a burst (so reset to slow-start if the > connection has been idle for a while), but it appears to me that the same is > possible if you have a trickle of data for a long period and then a burst:
Wow, nice catch! I googled around for this and it appears to have been spotted (eventually) - the recommended fix is to halve the window for every RTT in which the full window isn't used: http://www.faqs.org/rfcs/rfc2861.html > IMHO the solution for us is to not increase the congestion > window size unless we have actually had a full window in flight recently. I'm > not sure how this would fit into the NewTransportLayer... It should be easy enough to record the time we were last limited by the window, and use the elapsed time to adjust the window when checking how many bytes are available. We might have to be a bit careful with rounding, though, because we send messages rather than bytes, so we're very unlikely to use every last byte in the window even when the connection's congestion-limited. In the longer term we should probably also incorporate a slow start threshold into the NewTransportLayer to make it as TCP-like as possible - I won't be able to work on it before Christmas though... Cheers, Michael
