[libvirt] how to assign an ip when assign a NIC or VF to the Virtual Machine?
Laine Stump
laine at laine.org
Tue May 10 15:44:02 UTC 2011
>
> 2011/5/8 Richard W.M. Jones <rjones at redhat.com <mailto:rjones at 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.)
More information about the libvir-list
mailing list