2011/5/8 Richard W.M. Jones <rjones(a)redhat.com <mailto:rjones@redhat.com>>
On Sun, May 08, 2011 at 10:56:54AM +0800, guan qin wrote:
> The second solution you mentioned may be difficult , because
when I assign
> the ethX to the VM, the X in the 'ethX' is random (the 'X' in
the host may
> be different in the VM),I don't know it before I boot the VM .
so maybe I
> couldn't edit the guest correctly before booting VM.
AFAIK the guest should always see "eth0", so this shouldn't be any
problem. If not, write udev rule(s) in the guest to force the name to
be stable.
> The first solution :
> The network card's MAC address I can know and assign an fixed IP in
> advance, but for the VFs , before I create the VF by "modprobe
> igb/ixgbe
> max_vfs=num1,num2" ,I couldn't know the MAC address before
either,the MAC
> address generated randomly too.
> So maybe I should edit the DHCP server configure file after
creating the
> VFs.
It seems that for SR-IOV, MAC addresses are assigned to VFs randomly
by the kernel. It should be possible to read out the VF using (eg)
libvirt before the VM has booted (if not, it would be a bug). I think
you can also assign fixed MAC addresses to VFs in advance if that
would be simpler. However I've not really used SR-IOV in anger so
this may be wrong.
On 05/08/2011 10:35 AM, guan qin wrote:
If I use SR-IOV, the guest may be always "eth0" , but
when I use
the VT-d ,I often got an ethX with a random X in VM.
AFAIK, udev make the NIC name be stable by the MAC address. So when I
haven't assigned a VF or NetworkCard to the VM,
how can I force the name in the guest to 'eth0' ?
(Please don't top-quote. It makes it hard to follow the discussion later).
As I understand it (and I may have it wrong, as I don't actually have
any SRIOV hardware to play with), an SRIOV VF gets a different random
MAC address each time the host boots. However, udev on the host
apparently ignores VFs when saving off its mac address <--> ethX mapping
for reference on subsequent boots, so the VFs as seen from the host will
have a stable name (but unstable mac address).
When you map that VF through to the guest, the guest probably doesn't
know that it's a VF of an SRIOV card, it thinks it's a standard ethernet
card, so the guest's udev saves that particular MAC address<->ethX
mapping for subsequent boots; the problem is that the next time it
boots, it will get *yet another* mac address, which will be mapped to
*yet another* ethX name.
The solution is to clear out the udev mapping on the guest before each
boot, or otherwise teach it to not save the mapping. Alternately, use a
different method of attaching your guest to the network (ie, instead of
using PCI Passthrough, use <interface type='direct'> to attach a guest
interface to one of the VFs, and give the guest a fixed MAC address of
your own choosing.)