einfache Openvswitch-Forward-Demo funktioniert nicht

einfache Openvswitch-Forward-Demo funktioniert nicht

Wie sieht Ihr Problem im Detail aus?

Hallo, dies ist mein erster Versuch mit OVS. Ich verwende Arch Linux und habe Openvswitch installiert.

Verwenden Sie sudo ip link add v1 type dummy && sudo ip addr add 10.0.0.1/24 dev v1 && sudo ip link set v1 updie drei erstellten virtuellen Netzwerkkarten v1, v2 (10.0.0.2/24) und v3 (10.0.0.3/24).

füge v1 v2 v3 zu ovs hinzu durch sudo ovs-vsctl add-port ovsbridge $NETCARDNAME.

füge eine Flussregel hinzu durch sudo ovs-ofctl add-flow ovsbridge in_port=4,actions=output:5 (OVS-Port 4 ist V1-Netzkarte, OVS-Port 5 ist V2-Netzkarte). geprüft durchsudo ovs-ofctl show ovsbridge

im Moment verwende ich „ python-scapySende Pakete an die v1-Netzkarte“ und „ tcpdump -i INTERFACE_NAME -w tcpdump_output -vnnlCatch v1 v2-Paketnummern“. v1 hat 10 Pakete empfangen, v2 jedoch 0.

Was haben Sie versucht

# 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

und sudo ovs-tcpdump -i v1zeige kein Paket an, das ich per Scapy sende. Ich denke, vielleicht sollte ich zum Testen nicht Python-Scapy verwenden?

was hast du erwartet?

ich gehe davon aus, dass OVS das Paket von V1 nach V2 kopiert.

wenn ihr mehr Infos braucht, sagt mir bitte Bescheid. :)

Antwort1

Aktivieren Sie ip link set $NETCARD promisc onden Promisc-Modus. Dann funktioniert es einwandfrei.

verwandte Informationen