how is the MAC for tap(4) computed?

John-Mark Gurney jmg at funkthat.com
Tue Nov 5 18:24:39 UTC 2013


illoai at gmail.com wrote this message on Mon, Nov 04, 2013 at 16:08 -0500:
> On 4 November 2013 12:09, Dan Nelson <dnelson at allantgroup.com> wrote:
> > In the last episode (Nov 04), Aryeh Friedman said:
> >> There seems to be a very high rate of MAC address collisions when tap is
> >> running on different machines....  is there anyway to make the selection
> >> of MAC more random
> >
> > It looks like it's generated based on the number of ticks since boot, plus
> > the unit number of the tap device:
> >
> > http://fxr.watson.org/fxr/source/net/if_tap.c#L434
> >
> > So if you have devices created on boot on a bunch of machines, chances are
> > high that you'll get conflicts.  Maybe instead of using the 'ticks' value,
> > kern.hostid could be used instead?  That has much better randomness than
> > 'ticks'.
> 
> With physical interfaces you can use something like
> ifconfig ath0 ether 00:2d:44:88:ff:00
> (assuming the device & the driver support changing MAC
> addresses)
> 
> I've never tried it with a virtual interface, but it should work if the
> device supports it.

But remeber when choosing an address like that, that you set the second
low bit of the first octect to one to designate that it's a locally
administered address...

See wikipedia for more info:
https://en.wikipedia.org/wiki/MAC_address#Address_details

-- 
  John-Mark Gurney				Voice: +1 415 225 5579

     "All that I will do, has been done, All that I have, has not."


More information about the freebsd-stable mailing list