[libvirt] Different mac address used in libvirtd

Daniel P. Berrange berrange at redhat.com
Fri Jun 29 15:53:01 UTC 2012


On Wed, Jun 20, 2012 at 07:01:17PM +0800, Yong Sheng Gong wrote:
> Hi,
> I found libvirtd will create vnet0 with a different mac other than the one defined in domain file. The mac in Domain file will be used by qemu-kvm.
> I want to know how libvirtd decides the mac for vnet0, Who can give me a hint about the location of the libvirtd codes which does this work?
> 
> I cannot find how the libvirtd translates the mac from one defined in domain file to vnet0's one in src/util/bridge.c: brSetInterfaceMac()

>     <interface type='bridge'>
>       <mac address='fa:16:3e:28:64:c2'/>
>       <source bridge='br100'/>
>       <target dev='vnet0'/>
>       <filterref filter='nova-instance-instance-00000002-fa163e2864c2'>
>         <parameter name='DHCPSERVER' value='10.0.1.1'/>
>         <parameter name='PROJNET' value='10.0.1.0'/>
>         <parameter name='PROJMASK' value='255.255.255.0'/>
>         <parameter name='IP' value='10.0.1.2'/>
>       </filterref>
>       <alias name='net0'/>
>       <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
>     </interface>

The XML mac address config, sets the MAC address for the *guest*
NIC, ie what the guest uses as its eth0.



> [root at robinlinux eclipsecdt]# ifconfig  vnet0
> vnet0     Link encap:Ethernet  HWaddr FE:16:3E:28:64:C2  
>           inet6 addr: fe80::fc16:3eff:fe28:64c2/64 Scope:Link
>           UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
>           RX packets:553 errors:0 dropped:0 overruns:0 frame:0
>           TX packets:1485 errors:0 dropped:0 overruns:0 carrier:0
>           collisions:0 txqueuelen:500 
>           RX bytes:136360 (133.1 KiB)  TX bytes:280590 (274.0 KiB)

vnet0 is the backend of the guest NIC, and its MAC addr
is more or less irrelevant to functioning of the guest
itself, since traffic does not originate on this NIC.
The only important thing is that this TAP device must
have a high value MAC address, to avoid the bridge
device using the TAP device's MAC as its own. Hence
when creating the TAP Device  libvirt takes the guest
MAC addr and simply sets the top byte to 0xFE


Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvir-list mailing list