I've got what I think is the standard qemu bridge/ubuntu tap interfaces set up running variety of VMs on my Ubuntu host. All the VMs I'm having trouble with are Windows images.

I have researched this for weeks, and tried everything I've found, from promiscuous mode to txqueuelength to unique/different vlans to statically defining the tap interfaces to various sysctl settings to various /proc settings, etc. etc. etc. Nothing works.

When I bring up a single image, TAP works fine. But two, three, four, and inevitably one or more fails, and in Ubuntu, you can see it just dropping all of the packets. I've got to get this resolved. I know I'm providing very little specific information, but I need somebody to ask certain questions so I can post relevant answers.

Anyone know why Ubuntu + bridge + tap + qemu + virtio + Windows 7 drops packets and has network failures? Can somebody point me in a direction I haven't already tried?

I can provide this level of detail. This is basically what's happening. It will work fine for some random amount of time, then starts dropping transmit packets. Once that happens, it can never recover:

tap1  Link encap:Ethernet  HWaddr 9a:14:12:5c:12:27  
      inet6 addr: fe80::9814:12ff:fe5c:1227/64 Scope:Link
      RX packets:3466 errors:0 dropped:0 overruns:0 frame:0
      TX packets:16748 errors:0 dropped:232 overruns:0 carrier:0
      collisions:0 txqueuelen:500 
      RX bytes:319576 (319.5 KB)  TX bytes:23245045 (23.2 MB)


  • It's not the router. I've tried three.
  • It's not the ethernet card. I've got two, and tried them both.
  • It's not the "ethtool" offload settings. I tried turning them all off.
  • iptables -I FORWARD -d -j ACCEPT didn't solve the problem.
  • The settings in /proc/sys/net/bridge already appear correct.
  • Setting the card to promisc mode (or the bridge) didn't solve the problem.
  • Increasing the length of txqueuelen in the tap, br, and eth didn't either.

OK, thanks to the bridge guys, I found the answer. My main problem was that I didn't realize that the "TX queue" means the bridge is transmitting TO the guest (i.e. the Windows virtio driver.) Basically the Windows virtio driver I was using was crashing. I was pointed at these:
I was careful to go to the virtio web site and download the latest drivers, uninstall the ones on my VMs and re-install the latest, and it seems to work.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.