tc substitui o filtro, a mudança do filtro tc não funciona

2

Eu tenho uma regra de filtro tc:

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

se eu tentar "alterar" esta regra de filtro, recebo um erro:

# 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

'substituir' adiciona um novo, mas não remova a regra antiga.

a sintaxe do comando replace / change está correta?

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

um script completo:

tc qdisc add dev eth0 root handle 1: htb

tc class add dev eth0 parent 1: classid 1:1 htb rate 1000Mbps

tc class add dev eth0 parent 1:1 classid 1:11 htb rate 100Mbps
tc class add dev eth0 parent 1:1 classid 1:12 htb rate 100Mbps
tc class add dev eth0 parent 1:1 classid 1:13 htb rate 100Mbps
tc class add dev eth0 parent 1:1 classid 1:14 htb rate 100Mbps

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

tc filter add dev eth0 protocol ip prio 1 u32 match ip dst 10.0.0.3 flowid 1:11
tc filter add dev eth0 protocol ip prio 1 u32 match ip dst 10.0.0.8 flowid 1:12
tc filter add dev eth0 protocol ip prio 1 u32 match ip dst 10.0.0.9 flowid 1:13
tc filter add dev eth0 protocol ip prio 1 u32 match ip dst 10.0.0.7 flowid 1:14
    
por user174704 21.05.2013 / 23:06

1 resposta

2

Eu acho que você tem que usar o identificador para isso, assim:

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

- dessa forma, posso emitir o mesmo comando com ip dst diferente e ele se aplica com êxito.

S. Handles são mostrados com tc show ou, acredito, você pode especificá-los ao adicionar regras pela primeira vez.

    
por 22.05.2013 / 03:40

Tags