tc 过滤器更换,tc 过滤器更换不起作用

tc 过滤器更换,tc 过滤器更换不起作用

我有一个 tc 过滤规则:

tc filter add dev eth0 protocol ip prio 1 u32 match ip dst 10.0.0.3 flowid 1:14

如果我尝试“更改”此过滤规则,则会收到错误:

# tc filter change dev eth0 protocol ip prio 1 u32 match ip dst 10.0.0.2 flowid 1:14
# RTNETLINK answers: No such file or directory
# We have an error talking to the kernel

“替换”会添加新规则,但不会删除旧规则。

替换/更改命令的语法是否正确?

CentOS 6.4 iptables-1.4.7-9.el6.x86_64 iproute-2.6.32-23.el6.x86_64

完整脚本:

tc qdisc add dev eth0 root handle 1: htb

tc class add dev eth0 父级1:classid 1:1 htb速率1000Mbps

tc class add dev eth0 父级 1:1 classid 1:11 htb 速率 100Mbps
tc class add dev eth0 父级 1:1 classid 1:12 htb 速率 100Mbps
tc class add dev eth0 父级 1:1 classid 1:13 htb 速率 100Mbps
tc class add dev eth0 父级 1:1 classid 1:14 htb 速率 100Mbps

tc qdisc add dev eth0 parent 1:11 handle 10: netem 延迟 0ms
tc qdisc add dev eth0 parent 1:12 handle 20: netem 延迟 500ms
tc qdisc add dev eth0 parent 1:13 handle 30: netem 延迟 1000ms
tc qdisc add dev eth0 parent 1:14 handle 40: netem 延迟 1500ms

tc 过滤器添加 dev eth0 协议 ip prio 1 u32 匹配 ip dst 10.0.0.3 flowid 1:11
tc 过滤器添加 dev eth0 协议 ip prio 1 u32 匹配 ip dst 10.0.0.8 flowid 1:12
tc 过滤器添加 dev eth0 协议 ip prio 1 u32 匹配 ip dst 10.0.0.9 flowid 1:13
tc 过滤器添加 dev eth0 协议 ip prio 1 u32 匹配 ip dst 10.0.0.7 flowid 1:14

答案1

我认为你必须使用句柄来实现这一点,就像这样:

sudo tc filter change dev eth0 pref 1 protocol ip handle 800::800 u32 match ip dst 10.0.0.5 flowid 1:15

— 这样,我就可以用不同的方式发出相同的命令ip dst,并且可以成功应用。

PS 句柄显示为tc show,或者,我相信您可以在第一次添加规则时指定它们。

相关内容