Today is the official Fedora Test Day for Consistent Network Device Naming. Given all the coverage this week on NetworkWorld and Slashdot, I would like to see widespread testing of this feature, to assuage the concerns and misconceptions raised there. Testing is simple – download and boot the LiveISO, and report success or failure on the wiki page. You can even try it out on a running Fedora 14 instance if you like.
One of my long-standing pet projects – Consistent Network Device Naming, is finally coming to Fedora (emphasizing the 2 of the Fedora F’s: Features and First), and thereafter, all Linux distributions. What is this, you ask?
Systems running Linux have long had ethernet network devices named ethX. Your desktop likely has one ethernet port, named eth0. This works fine if you have only one network port, but what if, like on Dell PowerEdge servers, you have four ethernet ports? They are named eth0, eth1, eth2, eth3, corresponding to the labels on the back of the chassis, 1, 2, 3, 4, respectively. Sometimes. Aside from the obvious confusion of names starting at 0 verses starting at 1, other race conditions can happen such that each port may not get the same name on every boot, and they may get named in an arbitrary order. If you add in a network card to a PCI slot, it gets even worse, as the ports on the motherboard and the ports on the add-in card may have their names intermixed.
While several solutions have been proposed over time (detailed at Linux Plumbers Conference last year), none were deemed acceptable, until now.
Enter biosdevname, the tool Dell has developed to bring sanity (and consistency!) to network device names. Biosdevname is a udev helper, which renames network interfaces based on information presented by system BIOS.
The new naming convention is as follows:
- em[1-N] for on-board (embedded) NICs (# matches chassis labels)
- pci<slot>#<port> for cards in PCI slots, port 1..N
- NPAR & SR-IOV devices add a suffix of _<vf>, from 0..N depending on the number of Partitions or Virtual Functions exposed on each port.
- Other Linux conventions, such as .<vlan> and :<alias> suffixes remain unchanged and are still applicable.
This provides a sane mapping of Linux network interface name to externally visible network port (RJ-45 jack).
Where do we get this information? The algorithm is fairly simple:
- If system BIOS exposes the new PCI Firmware Specification 3.1 ACPI _DSM method, we get the interface label and index from ACPI, and use those.
- Else if system BIOS exposes an index and label in SMBIOS 2.6 types 9 and 41, use the index value.
- Else if system BIOS exposes index via the HP proprietary SMBIOS extension, use that.
- Else fall back to using the legacy PCI IRQ Routing Table to figure out which slots devices are in, sort the PCI device list in breadth-first order, and assign index values.
How will this affect you?
If you have scripts that have hard-coded eth0 or have assumptions that ethX is a particular port, your scripts are already broken (you may just not know it yet). Begin planning on using the new interface names going forward, adjusting your scripts as necessary.
Fedora 15 will be the first distribution to use biosdevname by default. There will be a Test Day on Thursday, January 27. I encourage you to download the Live image, boot it on your system, and verify that your network interfaces are now named according to the above convention, and that all works as expected. You may also take the opportunity to review your custom scripts, looking for hard-coded ethX values, and prepare for the coming name change.
Once we get sufficient exposure and verification using Fedora, I expect to see this change roll into other Linux distributions, and other operating systems, over time. Consider yourself warned.
Noted on the Dell blog, the auto-entitlement system we rolled out to the US and Europe a few years ago is finally available worldwide. What is auto-entitlement, you ask?
If you’ve ever purchased a Red Hat Enterprise Linux subscription when purchasing a Dell PowerEdge server, shrink-wrapped alongside the CDs is a “registration card”, with a long string of numbers on it. Upon unboxing your system, you had to a) not throw away that card; b) not lose that card; c) get that card to some responsible party at your organization; d) ensure that responsible party went to http://redhat.com/activate to activate the subscription, using the number on that card. See how many steps that took? Can you guess how many ways something could go wrong in the process?
With auto-entitlement, the system administrator is able to simply log their new system into Red Hat Network the first time they use it (as they would to get updates and to manage their system). Red Hat Network is then smart enough to recognize that the system was purchased from Dell, knows the subscription type and duration, and Bob’s your Uncle. No registration card to lose, no extra steps to take. Oh, and if you manage to blow away the hard disk image and re-install RHEL before connecting to Red Hat Network for the first time – no worries – auto-entitlement will still work.
Oh, and while we’re at it, the new 5-year RHEL subscription matches the available 5-year ProSupport hardware service contract, so there’s never any mess with having out-of-sync support subscriptions.
Just two more ways Dell ensures Linux, in this case Red Hat Enterprise Linux, “Just Works”.