Was bedeutet eno im Namen der Netzwerkschnittstelle 'eno16777736' für CentOS 7 oder RHEL 7?

16

Wofür steht bei einem einheitlichen Namensschema für Netzwerkgeräte der Name der Netzwerkschnittstelle eno16777736für CentOS 7 oder RHEL 7?

Andy Huang
quelle

Antworten:

18

Hmmm. Mehr als "en" und "o" würde ich mir mehr Sorgen um die "16777736" machen.

Sofern Sie nicht versehentlich zu Google gewechselt sind und sich auf einem Server mit einer benutzerdefinierten PCI-Architektur befunden haben, sehe ich nicht wirklich, wie 16777736 ein möglicher Wert sein könnte. Dies könnte ein Hinweis auf ein ernsthafteres Problem sein.

Nach dem aktuellen Schema kann ein System nicht mehr als 256 PCI-Busse adressieren (mit 32 Geräten pro Bus und maximal 8 Funktionen pro Gerät). Dies wird auch als Bus: Device.Function-Adressierung bezeichnet. Moderne Systeme verwenden Domain: Bus: Device.Function, um die 256-Bus-Beschränkung zu überwinden. Aber trotzdem, zurück zu deinem Problem ...

Können Sie Folgendes tun:

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

Wenn Sie etwas sehr Ähnliches sehen:

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

Dann schlage ich vor, dass Sie schnell laufen, bevor Google Sie beim Herumspielen mit ihren Servern ertappt.

Die /(0000:1000208:01.0)/ oben ist die Domain: Bus: Device.Function-Adresse mit dem Buswert "1000208" als hexadezimaler Darstellung von 16777736. Der Maximalwert sollte jedoch "0x100" (256) sein das können Sie für "Bus" haben.

Auf der anderen Seite, wenn Sie einen Wert erhalten, der unter 0x100 für den "Bus" liegt, wie zum Beispiel:

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

Dann würde ich denken, dass das Problem damit zusammenhängt, wie Ihr Bios / Firmware beim Start Informationen an udev (systemd) sendet. Um die mögliche Ursache herauszufinden, überprüfen Sie zunächst die Werte, die udev zurückgibt.

Normalerweise gibt es drei udev-Abfragen, um die PIN (Predictable Interface Name) zu erstellen.

  1. ACPI_DSM
  2. SMBIOS-Tabelle [insbesondere Aufzeichnungstyp "Slots" [9] und Typ 41]
  3. PCI-IRQ-Routing-Tabelle

[in dieser Reihenfolge]

Wir können (1) testen durch:

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

Wenn dies 16777736 ergibt, unterstützt Ihr System höchstwahrscheinlich nicht die PCI-Firmware-Spezifikation 3.1, die für die Unterstützung von ACPI_DSM erforderlich ist

Also müssen wir jetzt testen (2). Überprüfen wir also zuerst den Datensatztyp 41 in der SMBIOS-Tabelle (Typ 41 ist am relevantesten):

dmidecode -t 41 | more

Wenn nichts angezeigt wird oder die SMBIOS-Version kleiner als "2.62" ist, bedeutet dies, dass sich udev auf die PCI-IRQ-Routing-Tabelle stützt, um die PIN zu erstellen.

Also sollten wir überprüfen (3)

biosdecode

Achten Sie genau auf Ihren maximalen Slot-Eintrag ... er sollte in der folgenden Form vorliegen:

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

Wenn X aus Gründen des Arguments 25 ist, sollte sich Ihre Netzwerkkarte auf einem Steckplatz befinden, der kleiner oder gleich 25 ist. Andernfalls verweist udev weiterhin auf den Platzhalterwert 16777736.

In den meisten Fällen können Sie die Slot-Nummer Ihres Nic folgendermaßen überprüfen:

lspci -bv | grep -i -A10 ether

In den meisten Fällen sollte das Gerät in der BDF (Bus: Device.Function) der physischen Portnummer entsprechen (nachdem es von hex zu dezimal konvertiert wurde). In anderen Fällen (wo dies nicht der Fall ist) listet lspci den physischen Steckplatz in einer separaten Zeile in der Ausgabe auf, in der der obige lspci-Befehl ausgeführt wird.

Wenn also die angegebene physikalische Steckplatznummer größer als X ist (die maximale Anzahl, die wir in unserer PCI-IRQ-Routing-Tabelle gefunden haben), haben wir das Problem höchstwahrscheinlich isoliert.

Es gibt 5 mögliche Lösungen, die ich mir in diesem Fall vorstellen kann ...

  1. Kernel-Hacking ... Erstellen Sie den Kernel mit einer neuen PCI-IRQ-Routing-Tabelle neu. Schauen Sie sich /arch/x86/pci/irq.c an

[Dies ist die I-Need-to-Find-Better-Use-Of-My-Time-Lösung]

  1. Ordnen Sie das Gerät einem anderen Namen zu, indem Sie eine neue Regel erstellen

durch:

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

Fügen Sie dann Folgendes hinzu:

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

[Ich nenne das die Lasst uns das Problem ignorieren und die Dinge einfach hübsch aussehen lassen.]

  1. Sie können den Kernel-Boot-Optionen net.ifnames = 0 hinzufügen, um die Funktion insgesamt zu deaktivieren

[Dies ist natürlich die Lösung, wenn es pleite ist, es auszuschalten und in Einsamkeit zu weinen] (nicht wirklich eine Lösung) ...

  1. Und wenn Sie zufällig eine VM ausführen ... VMWare / VirtualBox, etc ... öffnen Sie die Konfigurationsdatei und ändern Sie die "pciSlotNumber" auf einen Wert unter X.

[Aber dies ist eine vorübergehende Hack-bis-meine-Software-wird-aktualisiert-Lösung]

  1. Kaufen Sie einen neuen Computer. [und schließlich die Lösung, wenn Sie sie nicht schlagen können]
Dominic Williams
quelle
3
Ich glaube, dass eine merkwürdig aussehende Zahl mit dem Netzgerät im VMWare-BIOS übereinstimmt. Das OP verwendet anscheinend CentOS 7-VMs.
Es ist auch nicht immer dasselbe - ich habe eno16780032. Was für ein Schmerz im Arsch.
Dan Pritts,
1
Diese Antwort ist so anstrengend, dass Sie bei der Beantwortung der Frage des OP eine präzise Referenz zur Identifizierung von Geräten anhand ihrer Indizes erstellen konnten.
Konrads
Solche Namen für VMware sind anscheinend keine Seltenheit. Beispielsweise habe ich meine Geräte benannt eno16777732.
Stefan Lasiewski
Das Problem, auf das ich in Bezug auf VMWare gestoßen bin, ist, dass es anscheinend keine Möglichkeit gibt, den acpi_index einer bestimmten Netzwerkkarte von der VSphere-API abzurufen.
Danny
14

Nur um Details zu früheren Antworten hinzuzufügen:

Zwei Zeichenpräfixe basierend auf dem Schnittstellentyp:

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

Art der Namen:

*   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

Quelle: http://ask.xmodulo.com/change-network-interface-name-centos7.html

sumid
quelle