Network Device Naming Matt Domsch Technology Strategist, Office of - - PowerPoint PPT Presentation

network device naming
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 1

Office of the CTO

Network Device Naming

Matt Domsch Technology Strategist, Office of the CTO

slide-2
SLIDE 2

Office of the CTO

Which is eth0?

2

slide-3
SLIDE 3

Office of the CTO

Inspiration: Network Switches

3

Ports labeled with slot and port (4/2). Config tools use this label.

slide-4
SLIDE 4

Office of the CTO

Chassis Labels

4

slide-5
SLIDE 5

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

slide-6
SLIDE 6

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

slide-7
SLIDE 7

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!

slide-8
SLIDE 8

Office of the CTO

Idea #1: Rename devices

8

slide-9
SLIDE 9

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

slide-10
SLIDE 10

Office of the CTO

Shootdown #1:

10

slide-11
SLIDE 11

Office of the CTO

Idea #2: /dev/netdev/eth0

11

slide-12
SLIDE 12

Office of the CTO

Shootdown #2:

12

slide-13
SLIDE 13

Office of the CTO

Idea #3: Punt to the OS Installers!

13

slide-14
SLIDE 14

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 |
slide-15
SLIDE 15

Office of the CTO

Shootdown #3:

15

slide-16
SLIDE 16

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

slide-17
SLIDE 17

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

slide-18
SLIDE 18

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

slide-19
SLIDE 19

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