es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ovs-ofctl añadir un flujo para permitir solo tramas ethernet ARP

Estoy empezando a aprender SDN con ovs-ofctl y mininet, y estoy configurando un switch siguiendo algunos tutoriales, pero hay algo que no entiendo.

Cuando inicio mi topología con:

sudo mn --topo single,2 --controller remote --switch ovsk

Ahora, si quiero agregar un flujo simple entre h1 y h5, hago lo siguiente:

sh ovs-ofctl add-flow s1 in_port=1,actions=output:2
sh ovs-ofctl add-flow s1 in_port=2,actions=output:1

Y si pruebo la conectividad entre los hosts, todo está bien.

Pero ahora, si elimino todos los flujos y trato de hacer lo siguiente:

sh ovs-ofctl add-flow s1 in_port=1,dl_type=0x806,nw_dst=10.0.0.2,actions=output:2
sh ovs-ofctl add-flow s1 in_port=2,dl_type=0x806,nw_dst=10.0.0.1,actions=output:1

Ahora, si intento hacer ping, no hay conexión, pero si ejecuto lo siguiente:

sh ovs-ofctl add-flow s1 action=NORMAL

Ahora puedo hacer ping nuevamente entre los hosts.

¿Qué me estoy perdiendo aquí? ¿Especificar dl_type=0x806 en el comando no es suficiente para permitir solamente tráfico de ARP utilizando Ethernet? ¿Por qué falla el ping en ese caso?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema aquí es que al especificar dl_type=0x806, estás permitiendo que solo el tráfico ARP pase a través de tus flujos. El tráfico de ping utiliza ICMP y, por lo tanto, no podrá pasar con estos flujos en su lugar.

    Cuando agregas el flujo action=NORMAL, básicamente le estás diciendo al switch que maneje el tráfico como lo haría normalmente sin reglas adicionales, lo que permite que el tráfico ICMP pase.

    Para permitir que pase el tráfico ICMP, podrías agregar un flujo que coincida con el protocolo ICMP:

    sh ovs-ofctl add-flow s1 in_port=1,dl_type=0x0800,nw_proto=1,nw_src=10.0.0.1,nw_dst=10.0.0.2,actions=output:2
    sh ovs-ofctl add-flow s1 in_port=2,dl_type=0x0800,nw_proto=1,nw_src=10.0.0.2,nw_dst=10.0.0.1,actions=output:1
    

    Este flujo coincide con el protocolo ICMP (nw_proto=1) y las direcciones IP de origen y destino (nw_src y nw_dst) de tus hosts. Esto debería permitir que el tráfico de ping pase a través de tu switch.

Comments are closed.