Networking in qemu 2.0.0 and beyond is not compatible with Open Solaris (Illumos) 5.11
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
QEMU |
Expired
|
Undecided
|
Unassigned |
Bug Description
The networking code in qemu in versions 2.0.0 and beyond is non-functional with Solaris/Illumos 5.11 images.
Building 1.7.1, 2.0.0, 2.0.2, 2.1.2,and 2.2.0rc1with the following standard Slackware config:
# From Slackware build tree . . .
./configure \
--prefix=/usr \
--libdir=
--sysconfdir=/etc \
--localstated
--enable-gtk \
--enable-system \
--enable-kvm \
--disable-
--enable-virtfs \
--enable-sdl \
--audio-
--enable-libusb \
--disable-vnc \
--target-
--enable-spice \
--enable-
And attempting to run the same VM image with the following command (or via virt-manager):
macaddress=
qemu-system-x86_64 nex4x -cdrom /dev/cdrom -name "Nex41" -cpu Westmere
-machine accel=kvm -smp 2 -m 4000 -net nic,macaddr=
r0 -net dump,file=
-enable-kvm
Gives success on 1.7.1, and a deaf VM on all subsequent versions.
Notable in validating my config, is that a Windows 7 image runs cleanly with networking on *all* builds, so my configuration appears to be good - qemu just hates Solaris at this point.
Watching with wireshark (as well as pulling network traces from qemu as noted above) it appears that the notable difference in the two configs is that for some reason, Solaris gets stuck arping for it's own interface on startup, and never really comes on line on the network. If other hosts attempt to ping the Solaris instance, they can successfully arp the bad VM, but not the other way around.
Changed in qemu: | |
assignee: | nobody → Tim Dawson (tadawson) |
assignee: | Tim Dawson (tadawson) → nobody |
Note that the host system, network config, etc. are identical, qemu is built with an identical config, and started with the same command - the *ONLY* variable is the qemu version. This is utilizing the bridge-helper binary, but as noted earlier, using virt-manager whether allowing it to define it's on network, or using the existing bridge config on this box, the behaviour is the same, and only Solaris is failing.
I note also that the failure happens with both the e1000 and the rtl8139 interfaces - this does not appear to be an issue with the drivers, but more a case of how qemu passes traffic to and from the tap device. Looking at the tap device with wireshark, I can see the external traffic as well as traffic from qemu - it just appears that some does not make it into Solaris.
I also noted discussions several years ago regarding a very similar issue, but do not have a bug number at this point (2010 vintage). Not certain that that is relevant, but it definitely is similar.