La demostración simple de avance de openvswitch no funciona

La demostración simple de avance de openvswitch no funciona

¿Cuáles son los detalles de su problema?

Hola, es la primera vez que pruebo ovs. Estoy usando Arch Linux e instalé openvswitch.

Utilice sudo ip link add v1 type dummy && sudo ip addr add 10.0.0.1/24 dev v1 && sudo ip link set v1 uplas tres tarjetas de red virtuales v1, v2 (10.0.0.2/24), v3 (10.0.0.3/24) creadas.

agregue v1 v2 v3 a ovs mediante sudo ovs-vsctl add-port ovsbridge $NETCARDNAME.

agregue una regla de flujo mediante sudo ovs-ofctl add-flow ovsbridge in_port=4,actions=output:5 (el puerto 4 de ovs es la tarjeta de red v1, el puerto 5 de ovs es la tarjeta de red v2). Revisado porsudo ovs-ofctl show ovsbridge

Por ahora, uso python-scapyenviar paquetes a la tarjeta de red v1 y uso tcpdump -i INTERFACE_NAME -w tcpdump_output -vnnllos números de paquete catch v1 v2. v1 recibió 10 paquetes, pero v2 recibió 0.

¿Qué intentaste?

# start ovs by systemd

$ sudo ovs-vsctl add-br ovsbridge

$ sudo ovs-vsctl show
7194d04a-66aa-48c2-bfa4-99bbdc6fc4b2
    Bridge ovsbridge
        Port ovsbridge
            Interface ovsbridge
                type: internal

$ ip a # part of
8: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether 3e:9a:4c:83:04:43 brd ff:ff:ff:ff:ff:ff
9: ovsbridge: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether 96:35:f1:d2:6b:46 brd ff:ff:ff:ff:ff:ff

$ sudo ip link add v1 type dummy
$ sudo ip addr add 10.0.0.1/24 dev v1
$ sudo ip link set v1 up
# and same to v2 v3

# add them to ovs
$ sudo ovs-vsctl add-port ovsbridge v1

$ sudo ovs-vsctl show
7194d04a-66aa-48c2-bfa4-99bbdc6fc4b2
    Bridge ovsbridge
        Port ovsbridge
            Interface ovsbridge
                type: internal
        Port v3
            Interface v3
        Port v2
            Interface v2
        Port v1
            Interface v1

$ ip a # part of
38: v1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master ovs-system state UNKNOWN group default qlen 1000
    link/ether da:11:b3:77:37:54 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.1/24 scope global v1
       valid_lft forever preferred_lft forever
    inet6 fe80::d811:b3ff:fe77:3754/64 scope link 
       valid_lft forever preferred_lft forever
39: v2: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master ovs-system state UNKNOWN group default qlen 1000
    link/ether ca:06:56:9c:af:6d brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.2/24 scope global v2
       valid_lft forever preferred_lft forever
    inet6 fe80::c806:56ff:fe9c:af6d/64 scope link 
       valid_lft forever preferred_lft forever
40: v3: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue master ovs-system state UNKNOWN group default qlen 1000
    link/ether 82:a4:e7:b0:e0:71 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.3/24 scope global v3
       valid_lft forever preferred_lft forever
    inet6 fe80::80a4:e7ff:feb0:e071/64 scope link 
       valid_lft forever preferred_lft forever

# add flow try forward v1 to v2
$ sudo ovs-ofctl add-flow ovsbridge in_port=4,actions=output:5

# check flow rule
$  sudo ovs-ofctl dump-flows ovsbridge
 cookie=0x0, duration=1138.852s, table=0, n_packets=0, n_bytes=0, in_port=v1 actions=output:v2
 cookie=0x0, duration=32571.512s, table=0, n_packets=518, n_bytes=177156, priority=0 actions=NORMAL

$ sudo ovs-appctl fdb/show ovsbridge
 port  VLAN  MAC                Age
LOCAL     0  a8:7e:ea:be:07:e4  278
$ cat rnd_pkt.py # part of

scapy.sendp(get_random_packet(), iface=v1)

# send 10 packages to v1

y sudo ovs-tcpdump -i v1no muestra el paquete que envío por scapy. Estoy pensando que tal vez no debería probar usando python-scapy.

¿que estabas esperando?

Espero que ovs copie el paquete de v1 a v2.

Si necesitan más información, por favor díganmelo. :)

Respuesta1

utilícelo ip link set $NETCARD promisc onpara habilitar el modo promisc y funciona bien.

información relacionada