[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
Sincrely,
Taku Izumi
More information about the libvir-list
mailing list