SUSE Support

Here When You Need Us

Persistent names of certain network interfaces changed after upgrading to SLES 15 SP6

This document (000021650) is provided subject to the disclaimer at the end of this document.

Environment

SUSE Linux Enterprise Server 15 Service Pack 6


Situation

A setup with Intel XXV710 (i40e) and E810-C (ice) network interfaces has been using predictable interface naming in SLES 15 SP4 and SP5.
Network drivers for these devices are i40e and ice respectively.
 
On SLES 15 SP6 the interface names for the i40e and ice devices have been appended with an additional 'np{digit}' part.

During boot of a SLES 15 SP5 system with i40e driver loaded, messages like the following would be logged :
i40e 0000:5e:00.0 enp94s0f0: renamed from eth6
i40e 0000:5e:00.1 enp94s0f1: renamed from eth7
 
Similar system on SLES 15 SP6 :
i40e 0000:5e:00.0 enp94s0f0np0: renamed from eth6
i40e 0000:5e:00.1 enp94s0f1np1: renamed from eth7

Resolution

As of writing this document udev-254.20-150600.4.18.2 is the current version. The fix is planned to be released in an upcoming udev maintenance update for SLES 15 SP6.

If you are in need of the fix before the update being released, please open a ticket with SUSE Support and reference bsc#1234015 in order to get a temporary fix.
 
This document will be updated with information about which udev version contains the fix once it has been released.
 
SUSE engineering has backported an upstream patch which allows for an allow/deny list of sysfs attributes that could be used when composing network interface names.
  
These lists can be supplied as an hwdb entry in a file named <something>.hwdb stored in /etc/udev/hwdb.d/.
Keep in mind that the new interface names is caused by changes in the upstream driver code (devlink support). It is not as such a SLES 15 SP6 change.
 
With the updated udev packages installed 'man systemd.net-naming-scheme' contains the section "LIMITING THE USE OF SPECIFIC SYSFS ATTRIBUTES" :
 
       When creating names for network cards, some naming schemes use data from
       sysfs populated by the kernel. This means that although a specific naming
       scheme in udev is picked, the network card's name can still change when a
       new kernel version adds a new sysfs attribute. For example if kernel starts
       setting the phys_port_name, udev will append the "nphys_port_name" suffix
       to the device name.
....
       Example 11. Set a denylist so that specified sysfs attribute are ignored
           /etc/udev/hwdb.d/50-net-naming-denylist.hwdb
           net:naming:drvirtio_net:*
             ID_NET_NAME_ALLOW=1
             ID_NET_NAME_ALLOW_DEV_PORT=0
             ID_NET_NAME_ALLOW_PHYS_PORT_NAME=0
 
The reference to the driver in the filtering line 'net:naming:dr<driver-name>:*' is the value of the ID_NET_DRIVER property (prepended by 'dr').
 
This can be obtained with the command:
 
udevadm info -e|grep '^E: ID_NET_DRIVER' |sort |uniq
 
The driver in example above is virtio_net, which is appended by 'dr', so for i40e the filter line would read 
net:naming:dri40e:*
 
So, in order to prevent e.g the PHYS_PORT_NAME (e.g. 'np0') from being appended to the interface named, carry out the steps outlined below in order to handle ice and i40e drivers :
 
1. Create a file named e.g. /etc/udev/hwdb.d/50-net-naming-denylist.hwdb
with the following content  :

net:naming:dri40e:*
  ID_NET_NAME_ALLOW=1
  ID_NET_NAME_ALLOW_PHYS_PORT_NAME=0
  
net:naming:drice:*
  ID_NET_NAME_ALLOW=1
  ID_NET_NAME_ALLOW_PHYS_PORT_NAME=0
 
Note that an empty line in between each driver filter is required.
 
2. Once the .hwdb file has been created (or changed), the binary hardware database must be rebuilt with the following command : 

# systemd-hwdb update

3. Test that the changes are active with the 'systemd-hwdb query' command for each driver. For our example  :
 
systemd-hwdb query net:naming:dri40e
 
The dialog would look like this :
# systemd-hwdb query net:naming:dri40e:
ID_NET_NAME_ALLOW=1
ID_NET_NAME_ALLOW_PHYS_PORT_NAME=0
# systemd-hwdb query net:naming:drice:
ID_NET_NAME_ALLOW=1
ID_NET_NAME_ALLOW_PHYS_PORT_NAME=0
 
4. Reboot and the undesired appendix to the interface should be gone.

Cause

The main reason for this is that some of the Intel network drivers in the SLES 15 SP6 kernel have been enhanced in a way that new properties of the devices get exposed as sysfs attributes to the Linux kernel.

One example of such a driver change is the upstream commit 
  https://github.com/torvalds/linux/commit/9e479d64dc58 : Add initial devlink support
which changes the behavior for i40e.
 
Similar change has been done for the ice driver and will probably also happen to other drivers in the future.

Additional Information

Regarding persistent interfact naming setup, see also 
https://www.suse.com/support/kb/doc/?id=000020541

Disclaimer

This Support Knowledgebase provides a valuable tool for SUSE customers and parties interested in our products and solutions to acquire information, ideas and learn from one another. Materials are provided for informational, personal or non-commercial use within your organization and are presented "AS IS" WITHOUT WARRANTY OF ANY KIND.

  • Document ID:000021650
  • Creation Date: 18-Dec-2024
  • Modified Date:18-Dec-2024
    • SUSE Linux Enterprise Server

< Back to Support Search

For questions or concerns with the SUSE Knowledgebase please contact: tidfeedback[at]suse.com

tick icon

SUSE Support Forums

Get your questions answered by experienced Sys Ops or interact with other SUSE community experts.

tick icon

Support Resources

Learn how to get the most from the technical support you receive with your SUSE Subscription, Premium Support, Academic Program, or Partner Program.

tick icon

Open an Incident

Open an incident with SUSE Technical Support, manage your subscriptions, download patches, or manage user access.