[libvirt] Live Migration with Pass-through Devices proposal

Izumi, Taku izumi.taku at jp.fujitsu.com
Fri Jan 23 06:31:37 UTC 2015

Hi Chen-san,

> Hi all,
> backgrond:
> Live migration is one of the most important features of virtualization
> technology.
> With regard to recent virtualization techniques, performance of network
> I/O is critical.
> Current network I/O virtualization (e.g. Para-virtualized I/O, VMDq) has
> a significant
> performance gap with native network I/O. Pass-through network devices
> have near
> native performance, however, they have thus far prevented live
> migration. No existing
> methods solve the problem of live migration with pass-through devices
> perfectly.
> There was an idea to solve the problem in website:
> https://www.kernel.org/doc/ols/2008/ols2008v2-pages-261-267.pdf
> Please refer to above document for detailed information.
> So I think this problem maybe could be solved by using the combination
> of existing
> technology.  the attached was the architecture of migration with
> passthrough device
>   we proposed. and the following steps are we considering to implement:
>       -  before boot VM, we anticipate to specify two NICs for creating
> bonding device
>          (one plugged and one virtual NIC) in XML. here we can specify
> the NIC's mac addresses
>          in XML, which could facilitate qemu-guest-agent to find the
> network interfaces in guest.
>       -  when boot VM, we monitor the qemu-guest-agent process in guest
> OS that
>          when qemu-guest-agent is available, sending command to
> qemu-guest-agent to
>          let it create the bonding device at once according to the XML
> configuration.
>          here netcf maybe a good tool to create bonding device easily.

    If I understand correctly, in your scenario, bonding device (bondX) is created 
    by qemu-guest agent dynamicaly at every boot time. Is that right ?
    If so, I think it's hard for a guest administrator to configure bonding device
    (such as IP address).  How about creating configuration file like
    /etc/sysconfig/network-scripts/ifcfg-bond0 (in Red Hat environment) 
    to persistent boinding device ?

>        - if need to do migration, checking the bonding's virtual NIC
> whether able to
>          access the plugged NIC's LAN. otherwise, when the passthroughed
> NIC is unplugged,
>          the network would be broken.

    I think this check should be done before enslaving each NIC.
    By the way, how do you check whether both NICs are connected to the same network
    segment?  I wonder if it's difficult ...

>        - during migration, unplug the passthroughed NIC. then do native
> magration.
>        - on destination side, check whether need to hotplug new NIC
> according to XML.
>          then hotplug the deivce according the source node in XML, tell
> qemu-guest-agent
>          to switch the hotplugged NIC activities.
> Thanks,
> Chen

Taku Izumi

More information about the libvir-list mailing list