I am running several qemu/kvm guests on my server. Both server and guests are running Linux. The guests images all need to be able to communicate with each other, the server and other machines on the network. Because of that I chose to setup a bridged
network using tun/tap interfaces. On the server I created a bridge interface. The server interface eth0 is placed in that bridge. I also created tunnel endpoints with the tunctl command. Those tunnel endpoints also go into the bridge. The args to qemu
include the following:
-netdev type=tap,id=eth0,ifname=tun0,script=no,downscript=no –device virtio-net-pci,netdev=eth0
I assign IP addresses to the various interfaces. The network runs fine and I have the necessary connectivity everywhere.
The problem is when there is a large amount of traffic on the server network. We have had several broadcast storms, or other heavy blasts of traffic. This seems to bring the qemu guests to their knees. I suspect it is because the qemu guests receive
all of that traffic and have a hard time handling it. Since the server eth0 is part of a bridge it is in promiscuous mode, so instead of filtering traffic in the NIC by MAC address all traffic is received and sent to the bridge. The bridge has to handle it
all and flood it to each of the qemu guests. Each of those guests in turn have to handle all that traffic in software.
Just wondering if there is a better way to design the network, or some recommendations on how to prevent or reduce the impact of such traffic.