Network Device Naming

Matt Domsch Technology Strategist, Office of the CTO

Office of the CTO Which is eth0?

2 Office of the CTO Inspiration: Network Switches

Ports labeled with slot and port (4/2).

Config tools use this label.

3 Office of the CTO Chassis Labels

4 Office of the CTO Problem: Enumeration != Naming

• System Administers expect that names are deterministic. Enumeration is non-deterministic. – Racing modprobes (hack: serialized by in RHEL6) – Racing firmware loading – Racing udev renames (fixed Sept’09) – PCI depth-first discovery varies based on motherboard layout • Undefined relationship between chassis label and kernel name • Only one name for each device allowed

5 Office of the CTO Current Solutions^WHacks

• ifcfg-eth0 and 70-persistent-net.rules – introduces state to stateless systems • pci=bfsort – Whitelists, assumes PCI bus topology is meaningful • Force sane PCI Bus layout – Breadth-first vs. depth-first list – PCI Express is switched, not a bus hierarchy anymore • PXELINUX + ks=bootif – Only works for 1 NIC, and only if you use PXE

We need a better solution.

6 Office of the CTO Standards!

• HP added NIC ordering information to SMBIOS vendor fields – Displayed by dmidecode, but not otherwise used • Dell added labels to device objects in SMBIOS 2.6 standard – PowerEdge 10G, 11G implement this • Dell proposed labels and index in ACPI _DSM in PCI Firmware

Great, so now we have PCI device to BIOS label mappings. Let’s use them!

7 Office of the CTO Idea #1: Rename devices

8 Office of the CTO Code #1: biosdevname & udev rules

• Biosdevname written • Udev rules call biosdevname • Distros didn’t like it – “not upstream enough” • Didn’t solve all the problems – USB network devices – Systems w/o BIOS information – Names limited to 15 characters – Still only 1 “correct” name for each device

9 Office of the CTO Shootdown #1:

10 Office of the CTO Idea #2: /dev/netdev/eth0

11 Office of the CTO Shootdown #2:

12 Office of the CTO Idea #3: Punt to the OS Installers!

13 Office of the CTO Proposal #3: Installer Screen

------Network Configuration ------

Default [ ] | SMBIOS Names [x] | Driver Names [] | MAC Names [] ------eth0 | Addin_NIC_1 | ice0 | ------eth1 | Embedded_NIC_1 | bce0 | ------eth2 | Embedded_NIC_2 | bce1 | ------eth3 | Embedded_NIC_3 | bce2 | ------eth4 | Embedded_NIC_4 | bce3 | ------

------| Next | ------

14 Office of the CTO Shootdown #3:

15 Office of the CTO Idea #4: libnetdevname

• Export names from BIOS into – SMBIOS 2.6 standard method, or HP vendor method (patch in -next) – PCI SIG Firmware Working Group ECN, ACPI _DSM (pending) • Userspace library maps BIOS name to kernel name extern int netdev_kernelname_to_alias (char *, struct alias **); extern int netdev_alias_to_kernelname (char *, char *); • All userspace programs that handle network names need to be patched to call libnetdevname – ethtool, iproute2, net-tools patches written – NetworkManager, distro installers still needed # ifconfig “Embedded NIC 1” # ethtool –p “Embedded NIC 2”

16 Office of the CTO libnetdevname futures

• Handle add-in PCI cards • Additional names “by function” – “public”, “dmz”, “storage”, “backup”, “admin”, … • Methods to get names from other sources • Handle non-PCI devices • Add method to show which NIC is the “boot device” http://linux.dell.com/wiki/index.php/Oss/libnetdevname [email protected] [email protected]

17 Office of the CTO Call to Action

• Got a better idea? Suggest it! • BIOS authors: add ACPI _DSM with labels • Kernel: accept our patches to expose names from BIOS (in linux-next on 7/30) • Network tools authors: incorporate libnetdevname • OS installers: incorporate libnetdevname • Network GUI tools (NetworkManager): display all available names for each interface somehow.

18 Office of the CTO Thanks • Greg Kroah-Hartman • Marco d'Itri • Alex Chiang • David Miller • Bryan Kadzban • Bjorn Helgaas • Alan Cox • Scott James Remnant • Neil Horman • Stephen Hemminger • Dan Williams • Thomas Cantwell • • John Linville • Chip Webb • Narendra K • Sujit K M • Mukund Khatri • Jordan Hargrave • David Zeuthen • Charles Rose • Peter Jones • Bill Fink • Richard Chan

• Jon Masters • Rob Townley • Vijay Nijhawan • Bill Nottingham • Kurt Van Dijck • Vinod Kutty • Ben Hutchings • Hannes Reinecke • Jesse Barnes • Dann Frazier • Karl O. Pinc

19 Office of the CTO