我有一个要求,将总传入流量限制为 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。
问题:
有没有什么方法可以让我限制总传入带宽,并根据优先级丢弃多余的数据包?