간단한 openvswitch 전달 데모가 작동하지 않습니다

간단한 openvswitch 전달 데모가 작동하지 않습니다

문제의 세부사항은 무엇입니까?

안녕하세요, ovs를 처음 사용해봅니다. 저는 Arch Linux를 사용하고 있으며 openvswitch를 설치했습니다.

sudo ip link add v1 type dummy && sudo ip addr add 10.0.0.1/24 dev v1 && sudo ip link set v1 up생성된 v1, v2(10.0.0.2/24), v3(10.0.0.3/24) 3개의 가상 네트워크 카드를 사용합니다 .

에 의해 ovs에 v1 v2 v3을 추가합니다 sudo ovs-vsctl add-port ovsbridge $NETCARDNAME.

흐름 규칙을 추가합니다 sudo ovs-ofctl add-flow ovsbridge in_port=4,actions=output:5 (ovs 포트 4는 v1 넷카드, ovs 포트 5는 v2 넷카드). 확인자sudo ovs-ofctl show ovsbridge

python-scapy지금은 v1 netcard로 패키지 보내기를 사용 하고 tcpdump -i INTERFACE_NAME -w tcpdump_output -vnnlv1 v2 패키지 번호 잡기를 사용합니다. v1은 10개의 패키지를 받았지만 v2는 0개를 받았습니다.

당신은 무엇을 시도 했습니까?

# 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

내가 sudo ovs-tcpdump -i v1scapy로 보내는 패키지는 표시하지 않습니다. 아마도 python-scapy를 사용하여 테스트하면 안 될 것 같아요.

무엇을 기대하고 있었나요?

나는 ovs가 v1에서 v2로 패키지를 복사할 것으로 예상합니다.

더 많은 정보가 필요하면 말해주세요. :)

답변1

promisc 모드를 활성화하는 데 사용하면 ip link set $NETCARD promisc on제대로 작동합니다.

관련 정보