1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- ========================
- QEMU virtio-net standby (net_failover)
- ========================
- This document explains the setup and usage of virtio-net standby feature which
- is used to create a net_failover pair of devices.
- The general idea is that we have a pair of devices, a (vfio-)pci and a
- virtio-net device. Before migration the vfio device is unplugged and data flows
- through the virtio-net device, on the target side another vfio-pci device is
- plugged in to take over the data-path. In the guest the net_failover kernel
- module will pair net devices with the same MAC address.
- The two devices are called primary and standby device. The fast hardware based
- networking device is called the primary device and the virtio-net device is the
- standby device.
- Restrictions
- ------------
- Currently only PCIe devices are allowed as primary devices, this restriction
- can be lifted in the future with enhanced QEMU support. Also, only networking
- devices are allowed as primary device. The user needs to ensure that primary
- and standby devices are not plugged into the same PCIe slot.
- Usecase
- -------
- Virtio-net standby allows easy migration while using a passed-through fast
- networking device by falling back to a virtio-net device for the duration of
- the migration. It is like a simple version of a bond, the difference is that it
- requires no configuration in the guest. When a guest is live-migrated to
- another host QEMU will unplug the primary device via the PCIe based hotplug
- handler and traffic will go through the virtio-net device. On the target
- system the primary device will be automatically plugged back and the
- net_failover module registers it again as the primary device.
- Usage
- -----
- The primary device can be hotplugged or be part of the startup configuration
- -device virtio-net-pci,netdev=hostnet1,id=net1,mac=52:54:00:6f:55:cc, \
- bus=root2,failover=on
- With the parameter failover=on the VIRTIO_NET_F_STANDBY feature will be enabled.
- -device vfio-pci,host=5e:00.2,id=hostdev0,bus=root1,failover_pair_id=net1
- failover_pair_id references the id of the virtio-net standby device. This
- is only for pairing the devices within QEMU. The guest kernel module
- net_failover will match devices with identical MAC addresses.
- Hotplug
- -------
- Both primary and standby device can be hotplugged via the QEMU monitor. Note
- that if the virtio-net device is plugged first a warning will be issued that it
- couldn't find the primary device.
- Migration
- ---------
- A new migration state wait-unplug was added for this feature. If failover primary
- devices are present in the configuration, migration will go into this state.
- It will wait until the device unplug is completed in the guest and then move into
- active state. On the target system the primary devices will be automatically hotplugged
- when the feature bit was negotiated for the virtio-net standby device.
|