使用 tc 增加出站 UDP 数据包的延迟

使用 tc 增加出站 UDP 数据包的延迟

我想使用 tc 中的 fw 过滤器对出站 UDP 数据包施加任意延迟;但是,我无法让过滤器正常工作:

tc qdisc add dev eth0 root handle 1: prio
tc qdisc add dev eth0 parent 1:3 handle 30: netem delay 200ms
tc filter add dev eth0 parent 1:0 protocol ip prio 3 handle 1 fw flowid 1:3

iptables -A PREROUTING -i eth0 -t mangle -p udp -j MARK --set-mark 1

如果我使用以下 u32 过滤器,我会得到预期的效果:

tc filter add dev eth0 parent 1:0 protocol ip prio 3 u32 match ip dport 53 0xffff flowid 1:3

我不想使用 u32 过滤器,更令人不安的是,我无法让--ttl-set--set-tosmangler 在 Ubuntu 10.04 中工作。

两者可能完全不相关,但我担心数据包没有被 iptables 标记。我一直找不到测试标记的方法。

答案1

iptables我最终用另一个功能解决了我的问题--set-mark

iptables -t mangle -A POSTROUTING -o eth0 -p udp -j CLASSIFY --set-class 1:3

tc我希望这能对某些人有所帮助,因为我在完成这个看似简单的任务之前已经辛苦处理了一段时间的复杂问题。

编辑:

Andy Smith 是正确的,我应该标记 POSTROUTING 链!以下规则应该适用于--set-mark

iptables -A POSTROUTING -t mangle -p udp -j MARK --set-mark 1

相关内容