Что означает eno в названии сетевого интерфейса eno16777736 для CentOS 7 или RHEL 7?

16

При последовательной схеме именования сетевых устройств, что означает «eno» в имени сетевого интерфейса eno16777736для CentOS 7 или RHEL 7?

Энди Хуан
источник

Ответы:

18

Хммм. Больше, чем «en» и «o», я бы больше беспокоился о «16777736».

Если вы случайно не зашли в Google и не оказались на сервере с пользовательской архитектурой PCI, я действительно не понимаю, как 16777736 может быть возможным значением. Это может быть намеком на более серьезную проблему.

Согласно существующей схеме, система не сможет адресовать более 256 шин PCI (с 32 устройствами на каждую шину и максимум 8 функциями на каждое устройство). Это также известно как Шина: 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)/ указан адрес домена: шина: устройство.Функция со значением шины «1000208», представляющим собой шестнадцатеричное представление 16777736. Однако «0x100» (256) должно быть максимальным значением что вы можете иметь для "Автобус".

С другой стороны, если вы получаете значение, которое ниже 0x100 для «Шины», например:

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

Тогда я думаю, что проблема будет связана с тем, как ваша биос / прошивка отправляет информацию в udev (systemd) при запуске. Чтобы выяснить потенциальную причину, сначала проверьте значения, которые udev возвращает обратно.

Обычно Udev запрашивает три места для создания ПИН (предсказуемого имени интерфейса)

  1. ACPI_DSM
  2. Таблица SMBIOS [в частности, тип записи "slots" [9] и тип 41]
  3. Таблица маршрутизации PCI IRQ

[в этой последовательности]

Мы можем проверить (1):

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

Если это дает вам 16777736, то, скорее всего, ваша система не поддерживает спецификацию прошивки PCI 3.1, которая необходима для поддержки ACPI_DSM

Итак, теперь мы должны проверить (2). Итак, давайте сначала проверим тип записи 41 в таблице SMBIOS (тип 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, для удобства аргумента ваша сетевая карта должна находиться в слоте ниже или равном 25. Если нет, udev будет продолжать ссылаться на значение заполнителя 16777736.

В большинстве случаев вы можете проверить номер игрового автомата:

lspci -bv | grep -i -A10 ether

И снова В большинстве случаев в BDF (Bus: Device.Function) устройство должно равняться номеру физического порта (после преобразования его из шестнадцатеричного в десятичный). В других случаях (где это не так) lspci перечислит Физический Слот в отдельной строке в результате выполнения вышеупомянутой команды lspci.

Поэтому, если указанный номер физического слота больше X (максимальное число, которое мы нашли в нашей таблице маршрутизации IRQ PCI), мы, скорее всего, изолировали проблему.

В этом случае я могу придумать 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.

[но это временное решение до тех пор, пока мое программное обеспечение не будет обновлено]

  1. Купить новый компьютер. [и, наконец, решение «если не можешь победить их присоединиться к ним»]
Доминик Уильямс
источник
3
Я считаю, что странное число соответствует сетевому устройству в BIOS VMWare. Похоже, что OP использует CentOS 7 VM.
Это не всегда то же самое - у меня есть eno16780032. Какая боль в заднице.
Дэн Притц
1
Этот ответ настолько утомителен, что, отвечая на вопрос ОП, вам удалось составить краткую справку о том, как идентифицировать устройства по их показателям.
Конрад
Такого рода имена для VMware, видимо, не редкость. Например, мне мои устройства названы eno16777732.
Стефан Ласевский
Проблема, с которой я столкнулся в отношении VMWare, заключается в том, что, похоже, нет способа получить acpi_index определенной сетевой карты из VSphere API.
Дэнни
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

sumid
источник