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 udev 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 sysfs – SMBIOS 2.6 standard method, or HP vendor method (patch in linux-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 • Kay Sievers • 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