hi,
I found a strange behavior with SFQ qdisc when several TCP flows start
at the same time: despite having different hash values , they have a
good chances to fall in the same slot which implies no more fairness
than a simple FIFO.
This is due to the fact that the hash table for a flow is not cleared
after dequeuing a slot whith a single packet in queue and so the same
slot might be shared without hash colisions.
proposed patch :
--- kernel/linux-2.4.18/net/sched/sch_sfq.c Tue May 7 16:22:23 2002
+++ sch_sfq.c Tue Aug 20 18:07:03 2002
@@ -343,6 +343,7 @@
if (q->qs[a].qlen == 0) {
a = q->next[a];
if (a == old_a) {
+ q->ht[q->hash[a]] = SFQ_DEPTH;
q->tail = SFQ_DEPTH;
return skb;
}
any comments ?
--
Vincent EGAL
Email : egal@ipanematech.com