network device naming
play

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


  1. Network Device Naming Matt Domsch Technology Strategist, Office of the CTO Office of the CTO

  2. Which is eth0? Office of the CTO 2

  3. Inspiration: Network Switches Ports labeled with slot and port (4/2). Config tools use this label. Office of the CTO 3

  4. Chassis Labels Office of the CTO 4

  5. 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 Office of the CTO 5

  6. 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. Office of the CTO 6

  7. 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! Office of the CTO 7

  8. Idea #1: Rename devices Office of the CTO 8

  9. 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 Office of the CTO 9

  10. Shootdown #1: Office of the CTO 10

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

  12. Shootdown #2: Office of the CTO 12

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

  14. 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 | ------------ Office of the CTO 14

  15. Shootdown #3: Office of the CTO 15

  16. 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” Office of the CTO 16

  17. 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 Office of the CTO 17

  18. 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. Office of the CTO 18

  19. 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 Office of the CTO 19

Recommend


More recommend