On 7 April 2013, at 16:35, Pandu Poluan wrote:
> On Apr 7, 2013 3:56 PM, "Stroller" <strol...@stellar.eclipse.co.uk> wrote:
> 
>> AIUI the motive for these changes are so that you can unpack an 
>> enterprise-type server, the ones with two NICs on the motherboard, and 
>> always know which NIC is which. You can then unpack a pallet load of them, 
>> and deploy them without any need for determining which is which or for any 
>> manual intervention. This is actually pretty important and useful, but I'm 
>> not sure this has all been done the best way.
> 
> AFAICT, on-board NICs have sequential MAC Adresses, with the one labeled 
> "Port 1" has the smallest MAC Address. So far, *all* Linux distros I've used 
> on a server will reliably name "Port X" as "eth$((X-1))". So it's never a 
> puzzle as to which port bears which "ethX" moniker.

I would expect this to be the case, too, but I'm told it's not always so - you 
cannot be certain of it.

I think that the kernel allocates interfaces to NICs in the order in which 
they're found - eth0 to the first one, eth1 to the second, and so on. A pair of 
on-board NICs may be allocated interface IDs in the same order as their MACs, 
but they may not be - especially if, for some reason, one responds abnormally 
slowly to probing from the kernel. 

A really good long discussion of this is available at [1], see also [2]:

   Without biosdevname, you get all ethX names - they're just in completely
   non-deterministic order.  Often times after the first non-deterministic
   order is set in 70-persistent-net.names, and with no other configuration
   changes to your system, on reboot you'll get those same names for those
   devices again, but only because no renames are actually taking place -
   the kernel accidentally names them in the same way each time.
   
   You cannot swizzle them within the ethX namespace and have it work -
   it's racy and failure-prone.  You must change out of ethX in order to
   get consistency at all.

> The new naming scheme, however, is much less intuitive. Where originally I 
> just immediately use eth0, now I have to enumerate the monikers first, 
> because even between servers of the same model (let's say, HP's DL360 G7), 
> the PCI attachment point might differ.

I agree. However, attempts to solve this in kernel (I think *several* of them), 
which would have allowed the eth0, ethX namespaces to be retained, were 
rejected. See [3].

I believe that HP shared involvement in this - I think they collaborated with 
Dell on how the BIOS would declare the NICs in a way that would be available to 
the kernel.

Stroller.



[1] http://marc.info/?l=linux-netdev&m=128163454631618&w=3
[2] http://lists.us.dell.com/pipermail/linux-poweredge/2010-November/043586.html
[3] http://marc.info/?l=linux-netdev&m=128518030400371&w=3


Reply via email to