Hi,
We met a ovs mirror problem with v3.0.3 and the latest master, while v2.17.1
works well. Any input will be appreciated. Thanks in advance.
See the following configuration and tests. Test 1 is going to mirror all pkts
of an interface but only gets from egress direction. Test 2 is going to mirror
pkts in ingress direction but gets nothing.
The built-in mirror related selftest are all passed.
1164. ofproto-dpif - mirroring, select_all (ofproto-dpif.at:5185): ok
(0m0.031s 0m0.058s)
1165. ofproto-dpif - mirroring, select_src (ofproto-dpif.at:5216): ok
(0m0.035s 0m0.054s)
1166. ofproto-dpif - mirroring, OFPP_NONE ingress port (ofproto-dpif.at:5245):
ok (0m0.033s 0m0.046s)
1167. ofproto-dpif - mirroring, select_dst (ofproto-dpif.at:5267): ok
(0m0.043s 0m0.047s)
1168. ofproto-dpif - mirroring, select_vlan (ofproto-dpif.at:5298): ok
(0m0.038s 0m0.059s)
1169. ofproto-dpif - mirroring, output_port (ofproto-dpif.at:5334): ok
(0m0.042s 0m0.047s)
1170. ofproto-dpif - mirroring, output_vlan (ofproto-dpif.at:5364): ok
(0m0.045s 0m0.064s)
1171. ofproto-dpif - multiple VLAN output mirrors (ofproto-dpif.at:5401): ok
(0m0.039s 0m0.047s)
1172. ofproto-dpif - mirroring with recirculation (ofproto-dpif.at:5430): ok
(0m0.037s 0m0.055s)
1173. ofproto-dpif - mirroring, select_all with snaplen (ofproto-dpif.at:5456):
ok (0m0.035s 0m0.055s)
1174. ofproto-dpif - mirroring, select_all with snaplen and reset snaplen
(ofproto-dpif.at:5486): ok (0m0.043s 0m0.063s)
1175. ofproto-dpif - mirroring, select_src with snaplen (ofproto-dpif.at:5526):
ok (0m0.033s 0m0.058s)
1176. ofproto-dpif - mirroring, OFPP_NONE ingress port with snaplen
(ofproto-dpif.at:5555): ok (0m0.041s 0m0.040s)
1177. ofproto-dpif - mirroring, select_dst with snaplen (ofproto-dpif.at:5576):
ok (0m0.034s 0m0.055s)
1178. ofproto-dpif - mirroring, select_vlan with snaplen
(ofproto-dpif.at:5606): ok (0m0.036s 0m0.062s)
1179. ofproto-dpif - mirroring, output_port with snaplen
(ofproto-dpif.at:5641): ok (0m0.043s 0m0.046s)
1180. ofproto-dpif - mirroring, output_vlan with snaplen
(ofproto-dpif.at:5671): ok (0m0.037s 0m0.057s)
1181. ofproto-dpif - multiple VLAN output mirrors with snaplen
(ofproto-dpif.at:5699): ok (0m0.043s 0m0.037s)
1202. ofproto-dpif - continuation - mirroring - OpenFlow10
(ofproto-dpif.at:6055): ok (0m0.251s 0m0.346s)
1203. ofproto-dpif - continuation - mirroring - OpenFlow13
(ofproto-dpif.at:6055): ok (0m0.247s 0m0.346s)
1) Configuration
ovs-vsctl add-br br0
ifconfig br0 10.0.11.1 up netmask 255.255.255.0
ip route add 10.0.11.0/24 via 10.0.11.1 dev br0
modprobe dummy numdummies=1
ip link set up dummy0
ovs-vsctl add-port br0 dummy0
ovs-vsctl clear Bridge br0 mirrors
cat >> /tmp/ovs_dnsmasq.conf <<-EOF
interface=br0
dhcp-range=br0,10.0.11.10,10.0.11.100
EOF
pkill dnsmasq
dnsmasq --conf-file=/tmp/ovs_dnsmasq.conf -l /tmp/dnsmasq.leases -p 0
virsh create vm1.xml --console
virsh create vm2.xml --console
Start a vm and find its IP is 10.0.11.20
/usr/bin/qemu-system-x86_64 \
-name guest=guest1,debug-threads=on \
-S \
-object
'{"qom-type":"secret","id":"masterKey0","format":"raw","file":"/var/lib/libvirt/qemu/domain-1-guest1/master-key.aes"}'
\
-machine pc-i440fx-7.2,usb=off,dump-guest-core=off,memory-backend=pc.ram \
-accel kvm \
-cpu qemu64 \
-m 500 \
-object '{"qom-type":"memory-backend-ram","id":"pc.ram","size":524288000}' \
-overcommit mem-lock=off \
-smp 1,sockets=1,cores=1,threads=1 \
-uuid 88530cf1-5b49-4b09-a88d-36535b5637d0 \
-display none \
-no-user-config \
-nodefaults \
-chardev socket,id=charmonitor,fd=38,server=on,wait=off \
-mon chardev=charmonitor,id=monitor,mode=control \
-rtc base=utc \
-no-shutdown \
-no-acpi \
-boot strict=on \
-kernel /exports/guest1/kernel \
-append 'console=ttyS0 root=/dev/vda rw ip=dhcp' \
-device '{"driver":"piix3-usb-uhci","id":"usb","bus":"pci.0","addr":"0x1.0x2"}'
\
-blockdev
'{"driver":"file","filename":"/exports/guest1/wrlinux-image-std-qemux86-64.ext4","node-name":"libvirt-2-storage","auto-read-only":true,"discard":"unmap"}'
\
-blockdev
'{"node-name":"libvirt-2-format","read-only":false,"driver":"raw","file":"libvirt-2-storage"}'
\
-device
'{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x2","drive":"libvirt-2-format","id":"virtio-disk0","bootindex":1}'
\
-blockdev
'{"driver":"file","filename":"/exports/guest1/test.img","node-name":"libvirt-1-storage","auto-read-only":true,"discard":"unmap"}'
\
-blockdev
'{"node-name":"libvirt-1-format","read-only":false,"driver":"raw","file":"libvirt-1-storage"}'
\
-device
'{"driver":"virtio-blk-pci","bus":"pci.0","addr":"0x4","drive":"libvirt-1-format","id":"virtio-disk1"}'
\
-netdev tap,fd=39,id=hostnet0,vhost=on,vhostfd=41 \
-device
'{"driver":"virtio-net-pci","netdev":"hostnet0","id":"net0","mac":"52:54:00:4f:5d:ec","bus":"pci.0","addr":"0x3"}'
\
-chardev pty,id=charserial0 \
-device
'{"driver":"isa-serial","chardev":"charserial0","id":"serial0","index":0}' \
-audiodev '{"id":"audio1","driver":"none"}' \
-device
'{"driver":"virtio-balloon-pci","id":"balloon0","bus":"pci.0","addr":"0x5"}' \
-sandbox off \
-msg timestamp=on
root@intel-x86-64:~# ovs-vsctl show
998cd873-eb9d-45d8-81a9-3ef4ba66224e
Bridge br0
Port br0
Interface br0
type: internal
Port vnet0
Interface vnet0
Port dummy0
Interface dummy0
ovs_version: "3.1.90"
ovs-vsctl list port dummy0 | head -1 | awk '{print $3}'
da38d32c-1026-49c8-bb11-c177a9f32bdc
2) Test 1:
ovs-vsctl clear Bridge br0 mirrors
ovs-vsctl -- --id=@m create mirror name=mirror0 -- add bridge br0 mirrors @m
ovs-vsctl set mirror mirror0 output_port=da38d32c-1026-49c8-bb11-c177a9f32bdc
ovs-vsctl set mirror mirror0 select_all=1
ovs-vsctl list mirror
_uuid : 137ea1fa-30fb-4183-a5b3-b95cb67f1454
external_ids : {}
name : mirror0
output_port : da38d32c-1026-49c8-bb11-c177a9f32bdc
output_vlan : []
select_all : true
select_dst_port : []
select_src_port : []
select_vlan : []
snaplen : []
statistics : {tx_bytes=1064, tx_packets=12}
tcpdump -ni dummy0 -v > 1.log &
tcpdump -ni vnet0 -v > 2.log &
ping 10.0.11.20 -c 10
pkill tcpdump
cat 1.log // Only traffic from br0 to guest OS can be seen.
08:46:14.814714 IP (tos 0x0, ttl 64, id 44748, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 2, seq 2, length 64
08:46:15.838717 IP (tos 0x0, ttl 64, id 45250, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 2, seq 3, length 64
08:46:16.862731 IP (tos 0x0, ttl 64, id 45252, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 2, seq 4, length 64
08:46:17.886733 IP (tos 0x0, ttl 64, id 45291, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 2, seq 5, length 64
08:46:18.910738 IP (tos 0x0, ttl 64, id 45738, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 2, seq 6, length 64
08:46:19.934734 IP (tos 0x0, ttl 64, id 46667, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 2, seq 7, length 64
08:46:20.958757 IP (tos 0x0, ttl 64, id 47353, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 2, seq 8, length 64
08:46:21.982735 IP (tos 0x0, ttl 64, id 48085, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 2, seq 9, length 64
cat 2.log // All traffic through vnet0
08:46:14.814720 IP (tos 0x0, ttl 64, id 44748, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 2, seq 2, length 64
08:46:14.814931 IP (tos 0x0, ttl 64, id 28904, offset 0, flags [none], proto
ICMP (1), length 84)
10.0.11.20 > 10.0.11.1: ICMP echo reply, id 2, seq 2, length 64
08:46:15.838721 IP (tos 0x0, ttl 64, id 45250, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 2, seq 3, length 64
08:46:15.838859 IP (tos 0x0, ttl 64, id 28933, offset 0, flags [none], proto
ICMP (1), length 84)
10.0.11.20 > 10.0.11.1: ICMP echo reply, id 2, seq 3, length 64
08:46:16.862737 IP (tos 0x0, ttl 64, id 45252, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 2, seq 4, length 64
08:46:16.862970 IP (tos 0x0, ttl 64, id 29016, offset 0, flags [none], proto
ICMP (1), length 84)
10.0.11.20 > 10.0.11.1: ICMP echo reply, id 2, seq 4, length 64
08:46:17.667320 IP (tos 0x0, ttl 64, id 61820, offset 0, flags [DF], proto UDP
(17), length 62)
10.0.11.20.43133 > 1.1.1.1.53: 20718+ A? time3.google.com. (34)
08:46:17.667334 IP (tos 0x0, ttl 64, id 61821, offset 0, flags [DF], proto UDP
(17), length 62)
10.0.11.20.43133 > 1.1.1.1.53: 3049+ AAAA? time3.google.com. (34)
08:46:17.886740 IP (tos 0x0, ttl 64, id 45291, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 2, seq 5, length 64
08:46:17.887031 IP (tos 0x0, ttl 64, id 30017, offset 0, flags [none], proto
ICMP (1), length 84)
10.0.11.20 > 10.0.11.1: ICMP echo reply, id 2, seq 5, length 64
08:46:18.910746 IP (tos 0x0, ttl 64, id 45738, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 2, seq 6, length 64
08:46:18.911034 IP (tos 0x0, ttl 64, id 30021, offset 0, flags [none], proto
ICMP (1), length 84)
10.0.11.20 > 10.0.11.1: ICMP echo reply, id 2, seq 6, length 64
08:46:19.934741 IP (tos 0x0, ttl 64, id 46667, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 2, seq 7, length 64
08:46:19.935028 IP (tos 0x0, ttl 64, id 30603, offset 0, flags [none], proto
ICMP (1), length 84)
10.0.11.20 > 10.0.11.1: ICMP echo reply, id 2, seq 7, length 64
08:46:20.958765 IP (tos 0x0, ttl 64, id 47353, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 2, seq 8, length 64
08:46:20.959046 IP (tos 0x0, ttl 64, id 31590, offset 0, flags [none], proto
ICMP (1), length 84)
10.0.11.20 > 10.0.11.1: ICMP echo reply, id 2, seq 8, length 64
08:46:21.982741 IP (tos 0x0, ttl 64, id 48085, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 2, seq 9, length 64
08:46:21.983031 IP (tos 0x0, ttl 64, id 32157, offset 0, flags [none], proto
ICMP (1), length 84)
10.0.11.20 > 10.0.11.1: ICMP echo reply, id 2, seq 9, length 64
08:46:22.667971 IP (tos 0x0, ttl 64, id 10418, offset 0, flags [DF], proto UDP
(17), length 62)
10.0.11.20.36216 > 8.8.8.8.53: 20718+ A? time3.google.com. (34)
08:46:22.667984 IP (tos 0x0, ttl 64, id 10419, offset 0, flags [DF], proto UDP
(17), length 62)
10.0.11.20.36216 > 8.8.8.8.53: 3049+ AAAA? time3.google.com. (34)
3) Test 2:
ovs-vsctl clear Bridge br0 mirrors
ovs-vsctl -- --id=@m create mirror name=mirror0 -- add bridge br0 mirrors @m
ovs-vsctl set mirror mirror0 output_port=da38d32c-1026-49c8-bb11-c177a9f32bdc
ovs-vsctl set mirror mirror0 select_all=0
ovs-vsctl set mirror mirror0 select_src_port=vnet0
ovs-vsctl list mirror
tcpdump -ni dummy0 -v > 1.log &
tcpdump -ni vnet0 -v > 2.log &
ping 10.0.11.20 -c 10
pkill tcpdump
cat 1.log // Nothing
cat 2.log // All traffic through vnet0
08:55:25.726710 IP (tos 0x0, ttl 64, id 11542, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 4, seq 2, length 64
08:55:25.726939 IP (tos 0x0, ttl 64, id 2029, offset 0, flags [none], proto
ICMP (1), length 84)
10.0.11.20 > 10.0.11.1: ICMP echo reply, id 4, seq 2, length 64
08:55:26.750743 IP (tos 0x0, ttl 64, id 12067, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 4, seq 3, length 64
08:55:26.750885 IP (tos 0x0, ttl 64, id 2376, offset 0, flags [none], proto
ICMP (1), length 84)
10.0.11.20 > 10.0.11.1: ICMP echo reply, id 4, seq 3, length 64
08:55:27.774750 IP (tos 0x0, ttl 64, id 12759, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 4, seq 4, length 64
08:55:27.774996 IP (tos 0x0, ttl 64, id 2611, offset 0, flags [none], proto
ICMP (1), length 84)
10.0.11.20 > 10.0.11.1: ICMP echo reply, id 4, seq 4, length 64
08:55:28.798748 IP (tos 0x0, ttl 64, id 13474, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 4, seq 5, length 64
08:55:28.799027 IP (tos 0x0, ttl 64, id 3616, offset 0, flags [none], proto
ICMP (1), length 84)
10.0.11.20 > 10.0.11.1: ICMP echo reply, id 4, seq 5, length 64
08:55:29.217957 IP (tos 0x0, ttl 64, id 61301, offset 0, flags [DF], proto UDP
(17), length 62)
10.0.11.20.51577 > 8.8.8.8.53: 33981+ A? time1.google.com. (34)
08:55:29.217971 IP (tos 0x0, ttl 64, id 61302, offset 0, flags [DF], proto UDP
(17), length 62)
10.0.11.20.51577 > 8.8.8.8.53: 30649+ AAAA? time1.google.com. (34)
08:55:29.822742 IP (tos 0x0, ttl 64, id 13820, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 4, seq 6, length 64
08:55:29.823085 IP (tos 0x0, ttl 64, id 3900, offset 0, flags [none], proto
ICMP (1), length 84)
10.0.11.20 > 10.0.11.1: ICMP echo reply, id 4, seq 6, length 64
08:55:30.014928 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 10.0.11.20
tell 10.0.11.1, length 28
08:55:30.015218 ARP, Ethernet (len 6), IPv4 (len 4), Reply 10.0.11.20 is-at
52:54:00:4f:5d:ec, length 28
08:55:30.846701 IP (tos 0x0, ttl 64, id 14515, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 4, seq 7, length 64
08:55:30.846879 IP (tos 0x0, ttl 64, id 4847, offset 0, flags [none], proto
ICMP (1), length 84)
10.0.11.20 > 10.0.11.1: ICMP echo reply, id 4, seq 7, length 64
08:55:31.870749 IP (tos 0x0, ttl 64, id 14700, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 4, seq 8, length 64
08:55:31.871053 IP (tos 0x0, ttl 64, id 5206, offset 0, flags [none], proto
ICMP (1), length 84)
10.0.11.20 > 10.0.11.1: ICMP echo reply, id 4, seq 8, length 64
08:55:32.221253 IP (tos 0x0, ttl 64, id 2451, offset 0, flags [DF], proto UDP
(17), length 62)
10.0.11.20.32838 > 1.0.0.1.53: 33981+ A? time1.google.com. (34)
08:55:32.221267 IP (tos 0x0, ttl 64, id 2452, offset 0, flags [DF], proto UDP
(17), length 62)
10.0.11.20.32838 > 1.0.0.1.53: 30649+ AAAA? time1.google.com. (34)
08:55:32.894747 IP (tos 0x0, ttl 64, id 14887, offset 0, flags [DF], proto ICMP
(1), length 84)
10.0.11.1 > 10.0.11.20: ICMP echo request, id 4, seq 9, length 64
08:55:32.895042 IP (tos 0x0, ttl 64, id 5554, offset 0, flags [none], proto
ICMP (1), length 84)
10.0.11.20 > 10.0.11.1: ICMP echo reply, id 4, seq 9, length 64
Regards,
Zhe
_______________________________________________
discuss mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-discuss