Thanks Stephen. A related problem (largely due to the published algorithm itself) is that Illinois is very aggressive when it over-estimates the maximum RTT.
At high load (say 200Mbps and 200ms RTT), a backlog of packets builds up just after a loss, causing the RTT estimate to become large. This makes Illinois think that *all* losses are due to corruption not congestion, and so only back off by 1/8 instead of 1/2. I can't think how to fix this except by better RTT estimation, or changes to Illinois itself. Currently, I ignore RTT measurements when sacked_out != 0 and have a heuristic "RTT aging" mechanism, but that's pretty ugly. Cheers, Lachlan On 28/11/2007, Stephen Hemminger <[EMAIL PROTECTED]> wrote: > Lachlan Andrew observed that my TCP-Illinois implementation uses the > beta value incorrectly: > The parameter beta in the paper specifies the amount to decrease > *by*: that is, on loss, > W <- W - beta*W > but in tcp_illinois_ssthresh() uses beta as the amount > to decrease *to*: W <- beta*W > > This bug makes the Linux TCP-Illinois get less-aggressive on uncongested > network, > hurting performance. Note: since the base beta value is .5, it has no > impact on a congested network. > > Signed-off-by: Stephen Hemminger <[EMAIL PROTECTED]> > > --- a/net/ipv4/tcp_illinois.c 2007-08-18 07:50:15.000000000 -0700 > +++ b/net/ipv4/tcp_illinois.c 2007-11-28 15:39:04.000000000 -0800 > @@ -298,7 +298,7 @@ static u32 tcp_illinois_ssthresh(struct > struct illinois *ca = inet_csk_ca(sk); > > /* Multiplicative decrease */ > - return max((tp->snd_cwnd * ca->beta) >> BETA_SHIFT, 2U); > + return max(tp->snd_cwnd - ((tp->snd_cwnd * ca->beta) >> BETA_SHIFT), > 2U); > } > > > -- Lachlan Andrew Dept of Computer Science, Caltech 1200 E California Blvd, Mail Code 256-80, Pasadena CA 91125, USA Ph: +1 (626) 395-8820 Fax: +1 (626) 568-3603 http://netlab.caltech.edu/~lachlan - To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html