Re: [libvirt] Live Migration with Pass-through Devices proposal

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
participants (1)
-
Izumi, Taku