Hi everyone,
I found that a bridged vmnet interface duplicates broadcast packets.
I have a physical machine (vmhost, 10.10.252.254 on eth1) running several virtual machines. One of the virtual machines (sender, 10.10.252.1) is streaming multicast traffic. Networking on the virtual machines is provided by a virtual network bridged to the physical eth1 on vmhost. Other virtual machines on the same vmhost receive the multicast traffic with no problems, but physical machines attached to the 10.10.250.x network receive every single packet duplicated. I could replicate this behavior with a simple ping:
root@vmhost:~# tcpdump -i eth1 -n -v 'icmp'
root@vm:~# tcpdump -i eth0 -n -v 'icmp'
root@sender:~# ping -b 10.10.252.255
WARNING: pinging broadcast address
PING 10.10.252.255 (10.10.252.255) 56(84) bytes of data.
^C
--- 10.10.252.255 ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2009ms
Result at "vm":
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
12:16:44.266957 IP (tos 0x0, ttl 64, id 0, offset 0, flags , proto ICMP (1), length 84) 10.10.252.24 > 10.10.252.255: ICMP echo request, id 20828, seq 1, length 64
12:16:45.275326 IP (tos 0x0, ttl 64, id 0, offset 0, flags , proto ICMP (1), length 84) 10.10.252.24 > 10.10.252.255: ICMP echo request, id 20828, seq 2, length 64
12:16:46.275358 IP (tos 0x0, ttl 64, id 0, offset 0, flags , proto ICMP (1), length 84) 10.10.252.24 > 10.10.252.255: ICMP echo request, id 20828, seq 3, length 64
Result at "vmhost":
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
12:17:05.721040 IP (tos 0x0, ttl 64, id 0, offset 0, flags , proto ICMP (1), length 84) 10.10.252.24 > 10.10.252.255: ICMP echo request, id 20828, seq 1, length 64
12:17:05.721046 IP (tos 0x0, ttl 64, id 0, offset 0, flags , proto ICMP (1), length 84) 10.10.252.24 > 10.10.252.255: ICMP echo request, id 20828, seq 1, length 64
12:17:06.730157 IP (tos 0x0, ttl 64, id 0, offset 0, flags , proto ICMP (1), length 84) 10.10.252.24 > 10.10.252.255: ICMP echo request, id 20828, seq 2, length 64
12:17:06.730162 IP (tos 0x0, ttl 64, id 0, offset 0, flags , proto ICMP (1), length 84) 10.10.252.24 > 10.10.252.255: ICMP echo request, id 20828, seq 2, length 64
12:17:07.730209 IP (tos 0x0, ttl 64, id 0, offset 0, flags , proto ICMP (1), length 84) 10.10.252.24 > 10.10.252.255: ICMP echo request, id 20828, seq 3, length 64
12:17:07.730214 IP (tos 0x0, ttl 64, id 0, offset 0, flags , proto ICMP (1), length 84) 10.10.252.24 > 10.10.252.255: ICMP echo request, id 20828, seq 3, length 64
In this example, "vmhost" is a physical machine hosting the virtual images, and "vm" and "sender" are virtual machines. "vmhost" has address 10.10.252.254 at eth1, "vm" has 10.10.252.13" and "sender" has 10.10.252.24. Notice how "vm" received 3 echo requests, and "vmhost" received the same 3 echo requests but duplicated (notice the echo request sequence numbers).
This only happens for broadcast packets, not for other traffic.
Is this a known issue? Is there any way to fix this problem or to diagnose it?
Many thanks,
João
"vmhost" settings:
Linux 2.6.24-23-server #1 SMP Thu Nov 27 18:45:02 UTC 2008 x86_64 GNU/Linux
VMware Server 2.0.1 build-156745
Intel(R) Xeon(R) CPU 3075 @2.66GHz
root@vmhost:~# ethtool -i eth1
driver: tg3
version: 3.86
firmware-version: 5715-v3.28
bus-info: 0000:03:04.1
"vm" and "server" settings:
Linux 2.6.28-11-server #42-Ubuntu SMP Fri Apr 17 02:48:10 UTC 2009 i686 GNU/Linux