[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [libvirt] how to assign an ip when assign a NIC or VF to the Virtual Machine?





2011/5/8 Richard W.M. Jones <rjones 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.)


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]