Adicionando latência aos pacotes UDP de saída com tc

6

Eu gostaria de impor uma latência arbitrária em pacotes UDP de saída usando um filtro fw em tc; no entanto, não consigo fazer o filtro funcionar corretamente:

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

Se eu usar o filtro u32 a seguir, obtenho o efeito desejado:

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

Eu não desejo usar os filtros u32, e o que é mais problemático é não conseguir que os mangers --ttl-set ou --set-tos funcionem no Ubuntu 10.04.

Os dois podem ser completamente não relacionados, mas estou preocupado que os pacotes não estejam sendo marcados pelo iptables. Não consegui encontrar uma maneira de testar a marcação.

    
por solo 30.11.2011 / 05:27

1 resposta

3

Eu terminei de resolver meu problema com outro recurso de iptables em vez de --set-mark :

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

Espero que isso ajude alguém enquanto eu lidava com as complexidades de tc por algum tempo antes de realizar essa tarefa aparentemente simples.

EDITAR:

Andy Smith está correto, eu deveria estar marcando a corrente POSTROUTING! A regra a seguir deve funcionar com --set-mark :

iptables -A POSTROUTING -t mangle -p udp -j MARK --set-mark 1
    
por 05.12.2011 / 05:32