Office of the CTO
Network Device Naming Matt Domsch Technology Strategist, Office of - - PowerPoint PPT Presentation
Network Device Naming Matt Domsch Technology Strategist, Office of - - PowerPoint PPT Presentation
Network Device Naming Matt Domsch Technology Strategist, Office of the CTO Office of the CTO Which is eth0? Office of the CTO 2 Inspiration: Network Switches Ports labeled with slot and port (4/2). Config tools use this label. Office of
Office of the CTO
Which is eth0?
2
Office of the CTO
Inspiration: Network Switches
3
Ports labeled with slot and port (4/2). Config tools use this label.
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
7
Great, so now we have PCI device to BIOS label mappings. Let’s use them!
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
14
- --------- 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 |
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 netdev@vger.kernel.org linux-hotplug@vger.kernel.org
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
- David Miller
- Alan Cox
- Stephen Hemminger
- Kay Sievers
- Narendra K
- Jordan Hargrave
- Peter Jones
- Jon Masters
- Bill Nottingham
- Ben Hutchings
- Dann Frazier
- Marco d'Itri
- Bryan Kadzban
- Scott James Remnant
- Dan Williams
- John Linville
- Sujit K M
- David Zeuthen
- Bill Fink
- Rob Townley
- Kurt Van Dijck
- Hannes Reinecke
- Karl O. Pinc
- Alex Chiang
- Bjorn Helgaas
- Neil Horman
- Thomas Cantwell
- Chip Webb
- Mukund Khatri
- Charles Rose
- Richard Chan
- Vijay Nijhawan
- Vinod Kutty
- Jesse Barnes
19