문제의 세부사항은 무엇입니까?
안녕하세요, 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 -vnnl
v1 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 v1
scapy로 보내는 패키지는 표시하지 않습니다. 아마도 python-scapy를 사용하여 테스트하면 안 될 것 같아요.
무엇을 기대하고 있었나요?
나는 ovs가 v1에서 v2로 패키지를 복사할 것으로 예상합니다.
더 많은 정보가 필요하면 말해주세요. :)
답변1
promisc 모드를 활성화하는 데 사용하면 ip link set $NETCARD promisc on
제대로 작동합니다.