是否有替代tc-sfq(随机公平队列)允许根据数据包大小(总字节数)而不是数据包数配置限制?
原因是,如果数据包大小为50字节,则一个htb类(速率= 1000kbit)可以例如每10ms出25个数据包, 但是数据包大小为1500字节,每10ms只有0.83个数据包。
如果我将tc-sfq限制设置为25个数据包,那么在最坏的情况下,一个完整的队列需要300ms来清空。
-
这是在Linux 3.0.101上,所以像fq_codel这样的东西并不起作用。也许某人有一个补丁用字节数限制替换sfq数据包限制(类似于pfifo与bfifo)?
答案 0 :(得分:0)
这就是我的所作所为: 我将内核树中的一些更改反向移植到linux 3.0 sfq中。
自提交ddecf0...以来,每个插槽都有一个积压计数器。所以我需要改变的是使用深度参数(sfq_sched_data.maxdepth
)作为最大积压字节:如果slot->backlog >= q->maxdepth
在enqueue函数中,只需丢弃数据包。
速率为1000kbit我现在可以设置深度3750,这意味着一个插槽最多需要30ms才能清空。这可能是2个大包,每个包含1500个字节,或者是25个小包,每个包含150个字节。