Add hvparam to disable VNET_HDR on tap devices
authorStratos Psomdakis <psomas@grnet.gr>
Wed, 24 Jul 2013 11:52:55 +0000 (14:52 +0300)
committerGuido Trotter <ultrotter@google.com>
Thu, 25 Jul 2013 11:20:32 +0000 (13:20 +0200)
commit8a534fbe5ee6968af409dd2c056b5f7def94b297
treef66df8a7dac1aeea91b94df39344e1732b786f72
parentd08a835946d26a5915d0e72f1bc36f2efc84c2f9
Add hvparam to disable VNET_HDR on tap devices

IFF_VNET_HDR allows tap devices to extract a VIRTIO_NET_HDR from pkts
going through the tap iface, enabling segmentation offload for the
virtio nics.

Current (Debian) kernels (3.2 for Debian Squeeze backrports / Wheezy)
don't seem able to handle well VMs with 'broken' virtio ifaces (e.g.
FreeBSD virtio-net driver), using GSO. Broken or malicious virtio-net
drivers can cause the host kernel to flood the logs with WARNs(),
effectively live-locking the system and affecting its overall stabitlity
(eg DRBD disconnects).

The WARN() flooding has been fixed / ratelimited in Linus' tree, but it
hasn't been backported to -stable.

This patch adds the vnet_hdr hvparam for KVM, to select whether the tap
devices used for KVM virtio ifaces will get created with VNET_HDR
support (IFF_VNET_HDR), even when the underlying kernel supports it, in
order to avoid this issue.

Signed-off-by: Stratos Psomadakis <psomas@grnet.gr>
Reviewed-by: Guido Trotter <ultrotter@google.com>
lib/constants.py
lib/hypervisor/hv_kvm.py