[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[altq 1190] RED estimator code has bug?
Hello,
I'm reading altq_red.c source code.
In code estimating average queue length (altq_red.c line:698)
avg += (qlen(q) << FP_SHIFT) - (avg >> rp->red_wshift);
Is this statement mistake?
I think that correct statement is
avg += ((qlen(q) << FP_SHIFT) - avg ) >> rp->red_shift;
because 'exponential weighted moving average' is expressed such as below.
avg <-- (1-w)*avg + w*qlen
avg <-- avg + w*(qlen - avg)
avg += w*(qlen - avg)
What do you think about this ?
Thanks.
---
Hiroyuki KATO
hiro@nemoto.ecei.tohoku.ac.jp