使用 tc police 限制传入流量

使用 tc police 限制传入流量

我有一个要求,将总传入流量限制为 5mbit。我知道这可以通过使用以下tc命令来实现:

tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 police rate 5mbit burst 10k drop flowid :1

问题:

我有两个流量流,即 tcp 和 udp。我的目标是将 tcp 和 udp 流量总量限制为 5mbit,并赋予 tcp​​ 比 udp 更高的优先级。

也就是说,如果总传入流量为 7mbit,我只需要 5mbit,并且 tcp 损失更少(因为它具有更高的优先级)。

我知道我可以用 3mbit 和 2mbit 编写 2 个不同的规则,例如:

tc filter add dev eth0 parent ffff: protocol ip prio 10 u32 match u32 `tcp` 0xff police rate 3mbit burst 10k drop flowid :1
tc filter add dev eth0 parent ffff: protocol ip prio 50 u32 match u32 `udp` 0xff police rate 2mbit burst 10k drop flowid :1

但即使没有 udp 数据包,这也会将 tcp 数据包限制为 3mbits。

问题:

有没有什么方法可以让我限制总传入带宽,并根据优先级丢弃多余的数据包?

相关内容