虽然在其他地方和我们的手册页中对此有非常详细的描述,但这个问题经常被问到,幸运的是,有一个简单的答案,不需要完全理解流量控制。
这个三行脚本就能解决问题
tc qdisc add dev $DEV root handle 1: cbq avpkt 1000 bandwidth 10mbit tc class add dev $DEV parent 1: classid 1:1 cbq rate 512kbit \ allot 1500 prio 5 bounded isolated tc filter add dev $DEV parent 1: protocol ip prio 16 u32 \ match ip dst 195.96.96.97 flowid 1:1 |
第一行在你的接口上安装一个基于类的队列,并告诉内核,为了计算,可以假定它是一个 10mbit 的接口。如果你弄错了这一点,不会造成实际的危害。但是,正确设置它会使一切更加精确。
第二行创建一个 512kbit 的类,并带有一些合理的默认值。有关详细信息,请参阅 cbq 手册页和第 9 章。
最后一行告诉哪些流量应该进入整形类。未被此规则匹配的流量不会被整形。要进行更复杂的匹配(子网、源端口、目标端口),请参阅第 9.6.2 节。
如果你更改了任何内容并想要重新加载脚本,请执行 'tc qdisc del dev $DEV root' 以清理你现有的配置。
通过添加最后一行可选的 'tc qdisc add dev $DEV parent 1:1 sfq perturb 10',可以进一步改进该脚本。有关其作用的详细信息,请参阅第 9.2.3 节。