You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将tbf与其他qdiscs组合使用?

组合无类别QDiscs实现速率限制与公平性的实践方案

你说得太对了!无类别QDiscs完全可以嵌套组合使用,毕竟像CoDel这类AQM(主动队列管理)组件本身没有带宽限制能力,必须搭配令牌桶这类限速机制才能发挥它的拥塞控制作用——这也是为什么你会觉得它们需要互相配合的原因。

关于具体的实现方案,我给你分享一个常用且有效的组合方式,都是基于无类别QDisc的:

核心思路:分层嵌套实现"限速+公平调度"

用限速型无类别QDisc(比如TBF)作为外层根QDisc,负责把出站带宽严格限制到目标值;再在它的子节点挂载具备公平调度能力的无类别QDisc(比如FQ_Codel),处理流量的公平分配和拥塞控制。

具体配置示例(用tc命令)

1. 清除现有QDisc配置(可选)

tc qdisc del dev eth0 root

这里的eth0替换成你实际要配置的网卡名称。

2. 挂载外层TBF限速QDisc

tc qdisc add dev eth0 root tbf rate 100mbit burst 15k latency 70ms
  • rate:设置目标限速值,这里是100Mbps,你可以根据需求调整(比如50mbit、1gbit)
  • burst:允许的突发流量大小,用来应对短时间的流量峰值,避免频繁丢包
  • latency:队列的最大等待时间,超过这个时间的数据包会被丢弃

3. 挂载内层FQ_Codel公平调度QDisc

tc qdisc add dev eth0 parent root:1 fq_codel

FQ_Codel会自动把TBF过来的流量按流(基于源IP、目的IP、端口等五元组)分成多个子队列,每个流独立调度,保证不同流之间的带宽公平分配;同时它的CoDel算法会主动丢弃超时的数据包,避免队列长期拥塞。

补充说明

  • 如果你不需要严格的带宽限制,只是想实现公平调度和拥塞控制,直接用FQ_Codel作为根QDisc就行,但如果需要固定速率限制,必须搭配TBF这类限速QDisc。
  • 官方文档确实比较零散,你可以通过man tc-tbf、man tc-fq_codel查看每个QDisc的详细参数和示例,内核文档里的Documentation/networking/queueing-scheduler.rst也有QDisc的原理说明。

内容的提问来源于stack exchange,提问作者jdizzle

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:14:23