Alternativa a Iptables para el filtrado de packages en interfaces OVS

Me acabo de dar count de que todas las reglas de iptables que he estado aplicando a mis interfaces abiertas de Vswitch nunca coinciden.

Estoy usando iptables para marcar algunos packages, y luego utilizo los filters TC (control de tráfico) para poner los packages en diferentes queues de prioridad dependiendo de la coincidencia de Iptables. Eso funciona para cada interfaz, e incluso para Linux Bridges (usando el module physdev -m).

¿Cómo puedo filtrar packages que pasan por una interfaz ovs y ponerlos en diferentes queues de prioridad si no puedo marcarlos con iptables?

Reglas (simplificadas):

 iptables -w -t mangle -A POSTROUTING -m physdev --physdev-out interface-name -m ttl --ttl-lt 10 ! -p 89 -j MARK --set-mark 10 tc filter add dev interface-name parent 1:0 protocol all prio 1 handle 10 fw flowid 1:10 

Entonces estoy usando HTB para las prioridades, digamos que hay dos queues 1:10 y 1:20. La regla debería enviar todo el tráfico con ttl <10 y no OSPF a la primera queue 1:10.

Ese es un viejo problema. Tendrá que saber cómo maneja su distribución el module del kernel netfilter. A veces está cargado y el truco es crear una regla para marcarlos todos y luego dividirlos después. La cadena Mangle es un poco difícil.

Agregue esto como su primera regla de marca:

 iptables -t mangle -A POSTROUTING -m physdev --physdev-out interface-name -j MARK --set-mark 10 

Un segundo problema es que su distribución podría no comstackr y / o cargar el module kernel xt_mark . Use lsmod | grep xt_mark lsmod | grep xt_mark para verificar si está allí.

También tengo problemas con OVS e iptables a veces. Encuentro que iptables es una gran herramienta de los 90, pero creo que es un poco obsoleto. El "comprobar cómo su distro maneja el module de netfilter" es muy importante para entender su problema.

Si solo desea marcar sus packages e iptables no tiene otro propósito, puede usar la herramienta OVS llamada ovs-ofctl con la opción pkt_mark .