对于CentOS 7或RHEL 7,eno在网络接口名称“ eno16777736”中是什么意思?


16

在一致的网络设备命名方案下,eno16777736CentOS 7或RHEL 7的网络接口名称中的“ eno”代表什么?

Answers:



18

嗯 除了“ en”和“ o”之外,我将更加关注“ 16777736”。

除非您不经意地走进了Google,发现自己坐在具有自定义PCI架构的服务器上,否则我真的看不到16777736可能有什么价值。这可能暗示了一个更严重的问题。

在当前模式下,系统将不能寻址超过256个PCI总线(每个总线下有32个设备,每个设备下最多有8个功能)。这也称为Bus:Device.Function寻址。现代系统使用Domain:Bus:Device.Function来克服256 Bus限制。但是无论如何,回到您的问题...

你可以做:

ls -la /sys/class/net | grep eno16777736

如果您看到与以下内容非常相似的内容:

eno16777736 -> ../.../devices/pci0000:00/0000:00:11.0/0000:1000208:01.0/net/eno16777736

然后,我建议您在Google赶上他们的服务器之前,先运行得快。

上面的/(0000:1000208:01.0)/是Domain:Bus:Device.Function地址,总线值为“ 1000208”,以16777736的十六进制表示。但是,“ 0x100”(256)应该是最大值您可以拥有“公交车”。

另一方面,如果“总线”的值小于0x100,例如:

eno16777736 -> ../.../devices/pci0000:00/0000:00:11.0/0000:1c:01.0/net/eno16777736

然后,我认为问题可能与您的BIOS /固件在启动时如何向udev(systemd)发送信息有关。为了找出潜在的原因,首先检查udev返回到它的值。

通常,udev查询可在三个地方创建PIN(可预测的接口名称)

  1. ACPI_DSM
  2. SMBIOS表[特别记录类型“插槽” [9]和类型41]
  3. PCI IRQ路由表

[以该顺序]

我们可以通过以下方法测试(1):

udevadm info --path=/sys/class/net/eno16777736 --attribute-walk | grep acpi

如果这给您16777736,则您的系统很可能不支持支持ACPI_DSM的PCI固件规范3.1。

因此,我们现在必须进行测试(2)。因此,让我们首先检查SMBIOS表中的记录类型41(类型41是最相关的):

dmidecode -t 41 | more

如果未显示任何内容,或者SMBIOS版本小于“ 2.62”,则表明udev将依赖PCI IRQ路由表创建PIN。

所以我们应该检查(3)

biosdecode

请密切注意您的最大插槽项...它应采用以下形式:

Slot Entry X: ID 00:00, (slot number X| status)

如果X为25,则为了论证,您的NIC应该位于小于或等于25的插槽中。否则,udev将继续引用占位符值16777736。

在大多数情况下,您可以通过以下方法检查网卡的插槽号:

lspci -bv | grep -i -A10 ether

同样,在大多数情况下,在BDF(Bus:Device.Function)中,设备应等于物理端口号(将其从十六进制转换为十进制后)。在其他情况下(不是),lspci将在执行上述lspci命令的输出中在单独的行上列出物理插槽。

因此,如果列出的物理插槽号大于X(在PCI IRQ路由表中找到的最大数目),则我们很可能已隔离了该问题。

在这种情况下,我可以想到5种可能的解决方案...

  1. 内核入侵...使用新的PCI IRQ路由表重建内核。看看/arch/x86/pci/irq.c

[这是我需要更好地利用我的时间的解决方案]

  1. 通过创建新规则将设备映射到其他名称

通过:

vi /etc/udev/rules.d/70-my-net-names.rules

然后添加以下内容:

ACTION=="add", SUBSYSTEM=="net", ENV{ID_BUS}=="pci", 
KERNELS=="{Domain:Bus:Device.Function}", NAME="{name: i.e. eno1 or eth0}" 

[我称这为让我们忽略问题,只是让事情看起来很漂亮的解决方案]

  1. 您可以将net.ifnames = 0添加到内核引导选项中以完全禁用该功能

[当然,这是如果要解决的话,请先关闭它然后哭泣](不是真正的解决方案)...

  1. 如果您恰巧正在运行VM ... VMWare / VirtualBox等...,请打开配置文件,然后将“ pciSlotNumber”修改为X以下的值。

[但这是一个临时的hack,直到我的软件获取更新的解决方案为止]

  1. 买一台新电脑。[最后是如果您不能击败他们,请加入他们的解决方案]

3
我相信,看起来奇怪的数字与VMWare BIOS中的网络设备匹配。看起来OP正在使用CentOS 7 VM。

也不总是一样-我有eno16780032。屁股好痛。
丹·普里茨

1
这个答案非常详尽,以至于在回答OP的问题时,您就如何通过设备索引识别设备提供了简洁的参考。
Konrads 2015年

VMware的这类名称显然并不罕见。例如,我的设备命名为eno16777732
Stefan Lasiewski '16

我遇到的关于VMWare的问题是似乎没有办法从VSphere API获取给定网卡的acpi_index。
丹尼

14

只是为先前的答案添加详细信息:

基于接口类型的两个字符前缀:

*   en -- ethernet
*   sl -- serial line IP (slip)
*   wl -- wlan
*   ww -- wwan
*   ib -- Infiniband

名称类型:

*   b<number>                             -- BCMA bus core number
*   ccw<name>                             -- CCW bus group name
*   o<index>                              -- on-board device index number
*   s<slot>[f<function>][d<dev_port>]     -- hotplug slot index number
*   x<MAC>                                -- MAC address
*   [P<domain>]p<bus>s<slot>[f<function>][d<dev_port>]
                                          -- PCI geographical location
*   [P<domain>]p<bus>s<slot>[f<function>][u<port>][..]1[i<interface>]
                                          -- USB port number chain

资料来源:http : //ask.xmodulo.com/change-network-interface-name-centos7.html

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.