Feature changed by: Narendra K - (narendra_k)
Feature #311365, revision 8
Title: Include 71-biosdevname.rules to rename network interfaces based
on chassis labels
openSUSE Distribution: Unconfirmed
Priority
Requester: Important
Requested by: Narendra K - (narendra_k)
Developer: jordan hargrave (jhargrave)
Partner organization: openSUSE.org
Description:
On a Dell PowerEdge server with multiple add-in cards, the naming of
the network interfaces is non-deterministic. This results in 'eth0' not
mapping to "Embedded NIC 1" as labeled on the server chassis. This
issue is seen on Dell PowerEdge 10G above. This feature addresses this
issue by renaming network interfaces based on their location on the
system motherboard.
The naming policy it suggests are as follows -
Embedded devices: em<port> Add-in PCI cards: pci<slot>p<port>_<virtual
function instance>
Please refer to "Consistent Network device naming-Name network
interfaces to match chassis labels"
(https://features.opensuse.org/310896).
Business case (Partner benefit):
openSUSE.org: This allows system administrators to refer to the network
interfaces by names based on their location on the motherboard. The
naming becomes deterministic and there is no state such as HWADDR
embedded into the configuration files.
Discussion:
#1: Narendra K - (narendra_k) (2011-03-01 16:28:05)
This request is for the inclusion of 71-biosdevname.rules which define
how the rename happens. 71-biosdevname.rules looks like this -
SUBSYSTEM!="net", GOTO="netdevicename_end" KERNEL!="eth*", GOTO="
netdevicename_end" ACTION!="add", GOTO="netdevicename_end" NAME=="?*",
GOTO="netdevicename_end"
# kernel command line "biosdevname={0|1}" can turn off/on biosdevname
IMPORT{cmdline}="biosdevname" ENV{biosdevname}=="?*", ENV
{UDEV_BIOSDEVNAME}="$env{biosdevname}" # ENV{UDEV_BIOSDEVNAME} can be
used for blacklist/whitelist # but will be overwritten by the kernel
command line argument ENV{UDEV_BIOSDEVNAME}=="0", GOTO="
netdevicename_end" ENV{UDEV_BIOSDEVNAME}=="1", GOTO="
netdevicename_start"
# uncomment the next line for biosdevname to be off by default # GOTO="
netdevicename_end"
LABEL="netdevicename_start"
# using NAME= instead of setting INTERFACE_NAME, so that persistent #
names aren't generated for these devices, they are "named" on each
boot. PROGRAM="/sbin/biosdevname --policy physical -i %k", NAME="%c",
OPTIONS+="string_escape=replace"
LABEL="netdevicename_end"
#2: Mark Cowley (mcowley) (2011-03-01 10:47:48) (reply to #1)
Yikes, that is pretty jumbled together and hard to read. Could you
please resubmit it formatted? HTML tags can be used, and consider just
using "pre" for your already formatted text. Or if that doesn't work,
you can email a formatted document to me and I will copy it over here.
#3: Narendra K - (narendra_k) (2011-03-03 08:13:33)
I got biosdevname working on openSUSE 11.4 RC2 installed on PowerEdge
R710. These are the observations -
1) Remove 70-persistent-net.rules in /etc/udev/rules.d/
2) make sure that the ifcfg-ethN file in /etc/sysconfig/network is
renamed to ifcfg-emN. Also, i observed that the ifcfg-ethN file did not
have any state such as MAC address embedded.
3) Install latest version of biosdevname utility biosdevname-0.3.7
4) reboot the system and observe that the biosdevname suggested names
are in place and the configured ifcfg-emN is up.
Here is how the naming looks with the above changes -
linux-bt6c:/etc/sysconfig/network # cat /etc/issue
Welcome to openSUSE 11.4 "Celadon" - Kernel \r (\l). linux-bt6c:
/etc/sysconfig/network # ifconfig
em1 Link encap:Ethernet HWaddr 00:24:E8:2E:DE:FF inet addr:172.16.65.55
Bcast:172.16.127.255 Mask:255.255.192.0 inet6 addr: fe80::224:e8ff:fe2e:
deff/64 Scope:Link inet6 addr: fc07:1::1:bb/64 Scope:Global UP
BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:207460 errors:
0 dropped:0 overruns:0 frame:0 TX packets:2417 errors:0 dropped:0
overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:14024994
(13.3 Mb) TX bytes:253854 (247.9 Kb) Interrupt:36 Memory:d6000000-
d6012800
lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6
addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX
packets:92 errors:0 dropped:0 overruns:0 frame:0 TX packets:92 errors:0
dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:9602
(9.3 Kb) TX bytes:9602 (9.3 Kb)
The system has 4 BCM5709 Lan-On-Motherboard ports, 1 single port
82572EI adapter on PCI slot 4, 1 dual port Intel 82576 adapter on PCI
slot 3. The naming looks like this -
linux-bt6c:/etc/sysconfig/network # ls /sys/class/net/
em1 em2 em3 em4 lo pci3p1 pci3p2 pci4p1
+ #4: Narendra K - (narendra_k) (2011-03-03 08:18:31)
+ Onboard device names -
+ em1 - ethernet-on-motherboard 1
+ em2 - ethernet-on-motherboard 2
+ PCI Add-in interface names -
+ pci3p1 - pci