Co oznacza eno w nazwie interfejsu sieciowego „eno16777736” dla CentOS 7 lub RHEL 7?


16

W ramach spójnego schematu nazewnictwa urządzeń sieciowych, co oznacza „eno” w nazwie interfejsu sieciowego eno16777736dla CentOS 7 lub RHEL 7?

Odpowiedzi:



18

Hmmm. Bardziej niż „en” i „o” bardziej martwi mnie „16777736”.

Chyba że przypadkowo wszedłeś do Google i znalazłeś się na serwerze z niestandardową architekturą PCI, tak naprawdę nie rozumiem, jak 16777736 może być możliwą wartością. Może to wskazywać na poważniejszy problem.

W obecnym schemacie system nie byłby w stanie zaadresować więcej niż 256 magistral PCI (z 32 urządzeniami pod każdą magistralą i maksymalnie 8 funkcjami pod każdym urządzeniem). Jest to również znane jako Bus: Device.Funkcja adresowania. Nowoczesne systemy używają Domain: Bus: Device.Function, aby przekroczyć ograniczenie magistrali 256. W każdym razie wracając do problemu ...

Czy możesz zrobić:

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

Jeśli zobaczysz coś bardzo podobnego do:

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

Następnie sugeruję, abyś biegał szybko, zanim Google przyłapie cię na zabawie na swoich serwerach.

Powyższy /(0000:1000208:01.0)/ powyżej to Domena: Magistrala: Urządzenie. Adres funkcji z wartością magistrali „1000208”, będącą reprezentacją szesnastkową 16777736. Jednak „0x100” (256) powinna być wartością maksymalną które możesz mieć dla „Bus”.

Z drugiej strony, jeśli wartość „Bus” jest mniejsza niż 0x100, na przykład:

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

Wtedy pomyślałem, że problem będzie związany z tym, jak twoje Bios / Firmware wysyła informacje do udev (systemd) podczas uruchamiania. Aby ustalić potencjalną przyczynę, najpierw sprawdź wartości, do których wraca z powrotem udev.

Zwykle istnieją trzy miejsca, w których zapytania udev tworzą kod PIN (przewidywalna nazwa interfejsu)

  1. ACPI_DSM
  2. Tabela SMBIOS [konkretnie „sloty” typu rekordu [9] i typ 41]
  3. Tabela routingu PCI IRQ

[w tej kolejności]

Możemy przetestować (1) przez:

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

Jeśli to daje 16777736, najprawdopodobniej twój system nie obsługuje PCI Firmware Specification 3.1, który jest potrzebny do obsługi ACPI_DSM

Musimy teraz przetestować (2). Najpierw sprawdźmy najpierw rekord typu 41 w tabeli SMBIOS (typ 41 jest najbardziej odpowiedni):

dmidecode -t 41 | more

Jeśli nic się nie pokazuje lub wersja SMBIOS jest mniejsza niż „2.62”, oznacza to, że udev będzie opierał się na tablicy routingu PCI IRQ w celu utworzenia kodu PIN.

Więc powinniśmy sprawdzić (3)

biosdecode

Zwróć szczególną uwagę na maksymalną liczbę miejsc na automacie ... powinna ona mieć postać:

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

Jeśli X wynosi 25, ze względu na argument, twoja karta sieciowa powinna znajdować się w gnieździe mniejszym lub równym 25. Jeśli nie, udev będzie nadal odwoływał się do wartości zastępczej 16777736.

W większości przypadków możesz sprawdzić numer swojej nici poprzez:

lspci -bv | grep -i -A10 ether

I znowu W większości przypadków w BDF (Bus: Device.Function) urządzenie powinno być równe numerowi portu fizycznego (po konwersji z szesnastkowego na dziesiętny). W innych przypadkach (jeśli tak nie jest), lspci wyświetli fizyczne gniazdo w osobnym wierszu w wyniku wykonania powyższego polecenia lspci.

Więc jeśli wymieniony numer gniazda fizycznego jest większy niż X (maksymalna liczba, którą znaleźliśmy w naszej tabeli routingu PCI IRQ), najprawdopodobniej wyodrębniliśmy problem.

W tym przypadku jest 5 możliwych rozwiązań ...

  1. Hackowanie jądra ... Odbuduj jądro z nową tabelą routingu PCI IRQ. Zajrzyj na /arch/x86/pci/irq.c

[To jest rozwiązanie, którego potrzebuję, aby znaleźć lepsze zastosowania mojego czasu]

  1. Odwzoruj urządzenie na inną nazwę, tworząc nową regułę

przez:

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

następnie dodaj:

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

[Nazywam to rozwiązaniem „zignorujmy problem i po prostu zróbmy rzeczy”.

  1. Możesz dodać net.ifnames = 0 do opcji rozruchu jądra, aby całkowicie wyłączyć tę funkcję

[Jest to oczywiście rozwiązanie, jeśli jest zepsute, skręca, wyłącza i płacze w samotności] (nie jest to rozwiązanie) ...

  1. A jeśli zdarzy ci się uruchomić VM ... VMWare / VirtualBox itp. ... otwórz plik konfiguracyjny i zmodyfikuj „pciSlotNumber” na coś poniżej X.

[ale jest to rozwiązanie polegające na tymczasowym hackowaniu, aż moje oprogramowanie zostanie zaktualizowane]

  1. Kup nowy komputer. [i na koniec rozwiązanie jeśli nie możesz ich pokonać]

3
Uważam, że dziwnie wyglądająca liczba odpowiada urządzeniu sieciowemu w VMWare BIOS. Wygląda na to, że OP używa maszyn wirtualnych CentOS 7.

Nie zawsze jest tak samo - mam eno16780032. Co za tyłek.
— Dan Pritts

1
Ta odpowiedź jest tak wyczerpująca, że ​​odpowiadając na pytanie PO udało się uzyskać zwięzłe odniesienie do tego, jak identyfikować urządzenia według ich wskaźników.
— Konrads

Tego rodzaju nazwy dla VMware najwyraźniej nie są rzadkie. Na przykład, moje urządzenia mają nazwy eno16777732.
— Stefan Lasiewski

Problem, na jaki natknąłem się w związku z VMWare, polega na tym, że nie ma sposobu na uzyskanie acpi_index danej karty sieciowej z interfejsu API VSphere.
— Danny

14

Aby dodać szczegóły do ​​poprzednich odpowiedzi:

Dwa prefiksy znaków w zależności od typu interfejsu:

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

Rodzaj nazw:

*   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

Źródło: http://ask.xmodulo.com/change-network-interface-name-centos7.html

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.