Re: [PATCH] tcp: fix ICMP-RTO war
From: Alexey Kuznetsov <hidden>
Date: 2010-01-27 15:15:13
Hello!
I went through some history, it seems that this comment about the lower bound originates from Alexey [1]:
Yes, I even remember why it was done. Actual comment starts with "If rtt variance happened to be less 50msec...". It was observed that sometimes due to high burstiness of ACKs (found originally when linux commuinitected to solaris tcp stack, which issued huge burst of acks each 50msec. I think he data can be found in netdev archives), rtt deviation tends to collapse to 0 during such burst, rto was calculated as plain rtt and obviously we falled to retransmit. So, the algorithm was repaired. First, to avoid glitches in the future mdev was clamped to 50ms (rttvar, contribution to rto, is 200msec). That's what the comment is about. Second, Linux used to sample rtt each ack, not each rtt (which is technically main source of the problem). Instead of decreasing sampling rate I used different sampling rates for growing and dropping rtt: it grows with rate of arriving acks and drops each rtt i.e. rto grows quickly, but drops slowly. Alexey