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