Public bug reported: Versions: Ubuntu: 12.04.1 LTS linux-server 3.2.0.30.32 bridge-utils 1.5-2ubuntu6 ifenslave-2.6 1.1.0-19ubuntu5 qemu-kvm 1.0+noroms-0ubuntu14.1 libvirt0 0.9.8-2ubuntu17.3 iperf 2.0.5-2.1
Description: I have got a typical setup for a kvm virtualizer with two network interfaces bonded together and bridged for vm-use. I.e. two ethernet interfaces eth2+eth4 bonded together with IEEE 802.3ad Dynamic link aggregation to bond2. bond2 is bridged to a bridge interface named brb2. Then I have got kvm virtual machines attached with their interfaces to brb2 as well. When I test network performance (and generate heavy load) after a few seconds, the bridge stops forwarding packets to the virtual machine interface. Overview: workstation (172.16.2.231) | manageable switch with IEEE 802.3ad cap. | | eth2 eth4 | | bond2 | brb2 Hypervisor (172.16.2.225) | vnet0 | eth0 on virtual machine (172.16.2.222) /etc/network/interfaces on Hypervisor: # Slave für bond2 allow-eths eth2 iface eth2 inet manual bond-master bond2 bond-primary eth2 eth4 pre-up ip link set eth2 up post-up ifconfig eth2 -multicast # Slave für bond2 allow-eths eth4 iface eth4 inet manual bond-master bond2 bond-primary eth2 eth4 pre-up ip link set eth4 up post-up ifconfig eth4 -multicast # Master für eth2+eth4, Slave für brb2 allow-bonds bond2 iface bond2 inet manual bond-slaves none bond_mode 4 bond_miimon 100 bond_updelay 200 bond_downdelay 200 post-up ip link set bond2 address $(ethtool -P eth2 | awk '{print $3}') post-up ifconfig bond2 -multicast # Master für bond2 allow-brbs brb2 iface brb2 inet static address 172.16.2.225 netmask 255.255.255.0 network 172.16.2.0 broadcast 172.16.2.255 gateway 172.16.2.254 bridge_ports bond2 bridge_stp off bridge_fd 0 bridge_maxwait 0 post-up ifconfig brb2 -multicast post-up echo 0 > /sys/devices/virtual/net/brb2/bridge/multicast_router post-up echo 0 > /sys/devices/virtual/net/brb2/bridge/multicast_snooping # "pre-up ip link set ethX up" is used as a workaround for buggy eth-drivers to come up # "post-up ip link set bond2 address $(ethtool -P eth2 | awk '{print $3}')" is used to insure bond2 to get always the same MAC (the one from eth2) # these interfaces are set up by a separate script using ifup /etc/network/interfaces on virtual machine: # The primary network interface auto eth0 iface eth0 inet static address 172.16.2.222 netmask 255.255.255.0 network 172.16.2.0 broadcast 172.16.2.255 gateway 172.16.2.254 cat /proc/net/bonding/bond2: Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011) Bonding Mode: IEEE 802.3ad Dynamic link aggregation Transmit Hash Policy: layer2 (0) MII Status: up MII Polling Interval (ms): 100 Up Delay (ms): 200 Down Delay (ms): 200 802.3ad info LACP rate: slow Min links: 0 Aggregator selection policy (ad_select): stable Active Aggregator Info: Aggregator ID: 2 Number of ports: 1 Actor Key: 17 Partner Key: 1 Partner Mac Address: 00:15:77:c1:76:92 Slave Interface: eth2 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 00:e0:81:cd:fc:dc Aggregator ID: 1 Slave queue ID: 0 Slave Interface: eth4 MII Status: up Speed: 1000 Mbps Duplex: full Link Failure Count: 0 Permanent HW addr: 90:e2:ba:1b:ba:9c Aggregator ID: 2 Slave queue ID: 0 brctl show: bridge name bridge id STP enabled interfaces brb2 8000.00e081cdfcdc no bond2 vnet0 ifconfig: bond2 Link encap:Ethernet Hardware Adresse 00:e0:81:cd:fc:dc UP BROADCAST RUNNING MASTER MTU:1500 Metrik:1 RX packets:125371104 errors:0 dropped:2630 overruns:13000 frame:0 TX packets:102064536 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:0 RX-Bytes:161005246299 (161.0 GB) TX-Bytes:76855627386 (76.8 GB) brb2 Link encap:Ethernet Hardware Adresse 00:e0:81:cd:fc:dc inet Adresse:172.16.2.225 Bcast:172.16.2.255 Maske:255.255.255.0 UP BROADCAST RUNNING MTU:1500 Metrik:1 RX packets:347889 errors:0 dropped:19655 overruns:0 frame:0 TX packets:145157 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:0 RX-Bytes:97420273 (97.4 MB) TX-Bytes:259259608 (259.2 MB) eth2 Link encap:Ethernet Hardware Adresse 00:e0:81:cd:fc:dc UP BROADCAST RUNNING SLAVE MTU:1500 Metrik:1 RX packets:410 errors:0 dropped:410 overruns:0 frame:0 TX packets:2803 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:1000 RX-Bytes:243540 (243.5 KB) TX-Bytes:642578 (642.5 KB) Interrupt:47 Speicher:fe7e0000-fe800000 eth4 Link encap:Ethernet Hardware Adresse 00:e0:81:cd:fc:dc UP BROADCAST RUNNING SLAVE MTU:1500 Metrik:1 RX packets:125370694 errors:0 dropped:0 overruns:13000 frame:0 TX packets:102061733 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:1000 RX-Bytes:161005002759 (161.0 GB) TX-Bytes:76854984808 (76.8 GB) Speicher:fcbe0000-fcc00000 lo Link encap:Lokale Schleife inet Adresse:127.0.0.1 Maske:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metrik:1 RX packets:204109 errors:0 dropped:0 overruns:0 frame:0 TX packets:204109 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:0 RX-Bytes:263565238 (263.5 MB) TX-Bytes:263565238 (263.5 MB) vnet0 Link encap:Ethernet Hardware Adresse fe:54:00:5b:5a:4d UP BROADCAST RUNNING MULTICAST MTU:1500 Metrik:1 RX packets:451926 errors:0 dropped:0 overruns:0 frame:0 TX packets:1880757 errors:0 dropped:0 overruns:0 carrier:0 Kollisionen:0 Sendewarteschlangenlänge:500 RX-Bytes:4926362916 (4.9 GB) TX-Bytes:2461725339 (2.4 GB) First ping works on virtual machine: ping -c 4 172.16.2.231 PING 172.16.2.231 (172.16.2.231) 56(84) bytes of data. 64 bytes from 172.16.2.231: icmp_req=1 ttl=64 time=0.503 ms 64 bytes from 172.16.2.231: icmp_req=2 ttl=64 time=0.601 ms 64 bytes from 172.16.2.231: icmp_req=3 ttl=64 time=0.608 ms 64 bytes from 172.16.2.231: icmp_req=4 ttl=64 time=0.538 ms --- 172.16.2.231 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3000ms rtt min/avg/max/mdev = 0.503/0.562/0.608/0.049 ms And on workstation, too: ping -c 4 172.16.2.222 PING 172.16.2.222 (172.16.2.222) 56(84) bytes of data. 64 bytes from 172.16.2.222: icmp_seq=1 ttl=64 time=0.704 ms 64 bytes from 172.16.2.222: icmp_seq=2 ttl=64 time=0.588 ms 64 bytes from 172.16.2.222: icmp_seq=3 ttl=64 time=0.531 ms 64 bytes from 172.16.2.222: icmp_seq=4 ttl=64 time=0.560 ms --- 172.16.2.222 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 2997ms rtt min/avg/max/mdev = 0.531/0.595/0.704/0.072 ms Then I start iperf server on virtual machine: iperf -s -i 1 And iperf client on workstation: iperf -c 172.16.2.222 -t 3600 -i 1 -d ------------------------------------------------------------ Server listening on TCP port 5001 TCP window size: 85.3 KByte (default) ------------------------------------------------------------ ------------------------------------------------------------ Client connecting to 172.16.2.222, TCP port 5001 TCP window size: 108 KByte (default) ------------------------------------------------------------ [ 5] local 172.16.2.231 port 56734 connected with 172.16.2.222 port 5001 [ 4] local 172.16.2.231 port 5001 connected with 172.16.2.222 port 38241 [ 4] 0.0- 1.0 sec 101 MBytes 850 Mbits/sec [ 5] 0.0- 1.0 sec 54.8 MBytes 460 Mbits/sec [ 5] 1.0- 2.0 sec 50.5 MBytes 423 Mbits/sec [ 4] 1.0- 2.0 sec 107 MBytes 898 Mbits/sec [ 5] 2.0- 3.0 sec 52.5 MBytes 440 Mbits/sec [ 4] 2.0- 3.0 sec 108 MBytes 904 Mbits/sec [ 4] 3.0- 4.0 sec 107 MBytes 899 Mbits/sec [ 5] 3.0- 4.0 sec 52.0 MBytes 436 Mbits/sec [ 4] 4.0- 5.0 sec 108 MBytes 904 Mbits/sec [ 5] 4.0- 5.0 sec 50.5 MBytes 423 Mbits/sec [ 4] 5.0- 6.0 sec 107 MBytes 900 Mbits/sec [ 5] 5.0- 6.0 sec 51.6 MBytes 433 Mbits/sec [ 5] 6.0- 7.0 sec 51.3 MBytes 431 Mbits/sec [ 4] 6.0- 7.0 sec 108 MBytes 906 Mbits/sec [ 5] 7.0- 8.0 sec 50.8 MBytes 426 Mbits/sec [ 4] 7.0- 8.0 sec 108 MBytes 906 Mbits/sec [ 5] 8.0- 9.0 sec 52.7 MBytes 442 Mbits/sec [ 4] 8.0- 9.0 sec 105 MBytes 877 Mbits/sec After a few seconds it stops receiving and tranmitting data. Ping does not work any longer on virtual machine: ping -c 4 172.16.2.231 PING 172.16.2.231 (172.16.2.231) 56(84) bytes of data. --- 172.16.2.231 ping statistics --- 4 packets transmitted, 0 received, 100% packet loss, time 2999ms Nor on workstation: ping -c 4 172.16.2.222 PING 172.16.2.222 (172.16.2.222) 56(84) bytes of data. >From 172.16.2.231 icmp_seq=1 Destination Host Unreachable >From 172.16.2.231 icmp_seq=2 Destination Host Unreachable >From 172.16.2.231 icmp_seq=3 Destination Host Unreachable >From 172.16.2.231 icmp_seq=4 Destination Host Unreachable --- 172.16.2.222 ping statistics --- 4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3026ms, pipe 3 After a reboot of the virtual machine ping works again: Ping on workstation: ping -c 4 172.16.2.222 PING 172.16.2.222 (172.16.2.222) 56(84) bytes of data. 64 bytes from 172.16.2.222: icmp_seq=1 ttl=64 time=14.7 ms 64 bytes from 172.16.2.222: icmp_seq=2 ttl=64 time=0.774 ms 64 bytes from 172.16.2.222: icmp_seq=3 ttl=64 time=0.770 ms 64 bytes from 172.16.2.222: icmp_seq=4 ttl=64 time=0.777 ms ** Affects: qemu-kvm (Ubuntu) Importance: Undecided Status: New -- You received this bug notification because you are a member of Ubuntu Server Team, which is subscribed to qemu-kvm in Ubuntu. https://bugs.launchpad.net/bugs/1050934 Title: VM stops receiving packets on heavy load from virtio network interface briged to a bonded interface on kvm hypervisor To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/qemu-kvm/+bug/1050934/+subscriptions -- Ubuntu-server-bugs mailing list Ubuntu-server-bugs@lists.ubuntu.com Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/ubuntu-server-bugs