0

Is there an alternative to tc-sfq (Stochastic Fairness Queueing) that allows to configure a limit based on the packet size (total bytes) instead of packet count?

The reason for this is that given a packet size of 50 bytes, one htb class (rate=1000kbit) could for example dequeue 25 packets per 10ms, but with a packet size of 1500 bytes only 0.83 packets per 10ms.

If I set the tc-sfq limit to 25 packets, then in the worst case a full queue would take 300ms to empty.

--

This is on Linux 3.0.101, so something like fq_codel doesn't work afaik. Maybe someone has a patch that replaces the sfq packet limit with a byte limit (similar to pfifo vs. bfifo)?

4

1 に答える 1

0

これが私がやったことです: カーネルツリーからのいくつかの変更を Linux 3.0 sfq にバックポートしました。

コミットddcf0 以来...各スロットに対して維持されているバックログ カウンターがあります。したがって、変更する必要があったのは、深さパラメーター ( sfq_sched_data.maxdepth) を最大バックログバイトslot->backlog >= q->maxdepthとして使用することだけです。エンキュー関数の場合は、単にパケットをドロップします。

1000kbit のレートで深さ 3750 を設定できるようになりました。これは、スロットが空になるまでに最大 30 ミリ秒かかることを意味します。これは、それぞれが 1500 バイトの 2 つの大きなパケット、またはそれぞれが 150 バイトの 25 の小さなパケットである可能性があります。

于 2014-08-27T21:33:41.847 に答える