linux – 使用tc为出站UDP数据包添加延迟

前端之家收集整理的这篇文章主要介绍了linux – 使用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-tos manglers在Ubuntu 10.04中工作.

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

解决方法

我用iptables的另一个功能而不是–set-mark结束了解决我的问题:
iptables -t mangle -A POSTROUTING -o eth0 -p udp -j CLASSIFY --set-class 1:3

在希望完成这个看似简单的任务之前,我希望这可以帮助某些人在tc的复杂性上努力工作.

编辑:

安迪史密斯是对的,我应该一直在标记POSTROUTING链!以下规则应与–set-mark一起使用:

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

猜你在找的Linux相关文章