BEZEICHNUNG
systemd.net-naming-scheme - Benennungsschema für NetzwerkgeräteBESCHREIBUNG
Netzwerkschnittstellennamen und MAC-Adressen können auf Basis bestimmter gleichbleibender Schnittstellenattribute erstellt werden. Dies ist möglich, wenn es genug Informationen über das Gerät gibt, um diese Attribute zu erstellen und die Verwendung dieser Information konfiguriert wurde. Diese Seite beschreibt die Schnittstellenbenennung, d.h. welche möglichen Namen erstellt werden können. Diese Namen werden durch das in systemd-udevd.service(8) eingebaute net_id und als Udev-Eigenschaften ( ID_NET_NAME_ONBOARD=, ID_NET_LABEL_ONBOARD=, ID_NET_NAME_PATH=, ID_NET_NAME_SLOT=) exportiert. Namen und MAC-Adressen werden aus verschiedenen gleichbleibenden Metadatenattributen abgeleitet. Neuere Versionen von Udev berücksichtigen mehr dieser Attribute und verbessern (und damit ändern) die für die gleichen Geräte verwandten Namen und Adressen. Verschiedene Versionen dieser Erstellungsregeln werden »Benennungsschema« genannt. Das Standard-Benennungsschema wird zum Kompilierungszeitpunkt ausgewählt. Normalerweise wird dies die neuste implementierte Version sein, aber es ist auch möglich, dies auf eine ältere Version zur Erhaltung der Kompatibilität zu setzen. Dies könnte beispielsweise für Distributionen nützlich sein, die neuere Versionen von Systemd in stabilen Veröffentlichungen integrieren, ohne das Benennungschema zu ändern. Das Benennungschema kann auch mittels des Kernelbefehlszeilenschalters net.naming-scheme= außer Kraft gesetzt werden, siehe systemd-udevd.service(8). Verfügbare Benennungsschemas werden nachfolgend beschrieben. Nachdem die Udev-Eigenschaften erstellt worden sind, können Geräte anhand dieser Eigenschaften und den geeigneten Udev-Regeln tatsächlich umbenannt werden. Siehe die Beschreibung von NamePolicy= und MACAddressPolicy= in systemd.link(5). Beachten Sie, dass das Konzept der Netzwerkschnittstellenbenennung zwar primär im Kontext von systemd-udevd.service relevant ist, aber der Container-Verwalter systemd-nspawn(1) sie auch bei der Benennung von Schnittstellennamen in Betracht zieht, siehe unten.BENENNUNG
Alle Namen beginnen mit einem Zwei-Zeichen-Präfix, das den Schnittstellentyp kennzeichnet.Präfix | Beschreibung |
en | Ethernet |
ib | InfiniBand |
sl | IP über serielle Leitung (Slip) |
wl | Schnurloses lokales Netzwerk (WLAN) |
ww | Schnurloses Weitverkehrsnetz (WWAN) |
Dieser Name wird basierend auf der numerischen
Anordnungsinformation, die durch die Firmware für Geräte auf dem
Mainboard angegeben wird, gesetzt. Abhängig von dem Firmware-Typ werden
verschiedene Schemata verwandt, wie in nachfolgender Tabelle dargestellt.
Tabelle 2. Mainboard-Benennungsschema
ID_NET_LABEL_ONBOARD=Präfix Kennzeichen
Format | Beschreibung |
PräfixoNummer | PCI-Mainboard-Index |
PräfixdNummer | Devicetree-Alias-Index |
Diese Eigenschaft wird basierend auf der durch
die Firmware von Geräten, die auf dem Mainboard sind, gegebenen
textuellen Kennzeichnung gesetzt. Der Name besteht aus dem Präfix, dem
die Kennzeichnung angehängt ist. Dies ist nur für
PCI-Geräte verfügbar.
ID_NET_NAME_MAC=PräfixxAABBCCDDEEFF
Dieser Name besteht aus dem
Präfixbuchstaben x und den 12 hexadezimalen Ziffern der
MAC-Adresse. Er ist verfügbar, falls das Gerät über eine
konstante MAC-Adresse verfügt. Da dieser Name auf einem Attribut der
Karte selbst basiert, bleibt er »stabil«, selbst wenn das
Gerät (sogar zwischen Maschinen) verschoben wird, aber ändert
sich, wenn die Hardware ersetzt wird.
ID_NET_NAME_SLOT=Präfix[PDomäne]sSlot[fFunktion][nPort_Name|dGer_Port],
ID_NET_NAME_SLOT=PräfixvSlot,
ID_NET_NAME_SLOT= PräfixxSlot,
ID_NET_NAME_SLOT=
Präfix[PDomäne
]sSlot
[fFunktion][nPort_Name|dGer_Port]bNummer,
ID_NET_NAME_SLOT=Präfix[PDomäne]sSlot[fFunktion][nPort_Name|dGer_Port]uPort…[cKonfiguration][iSchnittstelle],
ID_NET_NAME_SLOT=Präfix[PDomäne]sSlot[fFunktion][nPort_Name|dGer_Port]vSlot
Diese Eigenschaft beschreibt die
Slot-Position. Verschiedene Schemata werden abhängig vom Bus-Typ
verwandt. Diese beschreibt die nachfolgende Tabelle. Im Falle von USB-, BCMA-
und SR-VIO-Geräten besteht der komplette Name aus dem Präfix,
dem PCI-Slot-Kennzeichner und dem USB- oder BCMA- oder
SR-VIO-Slot-Kennzeichner. Die ersten zwei werden in der nachfolgenden Tabelle
durch »…« angezeigt.
Tabelle 3. Slot-Benennungsschema
Die PCI-Domäne wird nur vorangestellt, wenn sie nicht 0 ist. Alle
multifunktionalen PCI-Geräte werden die fFunktion-Nummer
im Gerätenamen tragen, einschließlich der
Funktion-0-Geräte. Für nicht-multifunktionale Geräte wird
die Nummer unterdrückt, falls sie 0 ist. Der Port-Name Port_Name
wird verwandt oder die Port-Nummer dGer_Port, falls der Name
nicht bekannt ist.
Für BCMA-Geräte wird die Kernnummer unterdrückt, wenn diese
0 ist.
Für USB-Geräte wird die komplette Kette von Port-Nummern der Hubs
zusammengesetzt. Falls der Name länger als die maximale Anzahl von 15
Zeichen ist, wird der Name nicht exportiert. Die Werte der normalen
USB-Konfigurationsnummer 1 und Schnittstellennummer 0 werden
unterdrückt.
Der Name von virtuellen SR-IOV-Geräten basiert auf dem Namen der
übergeordneten Schnittstelle, gefolgt von v und der virtuellen
Gerätenummer, wobei alle führenden Nullen entfernt werden. Die
Busnummer wird ignoriert.
In einigen Konfigurationen kann eine übergeordnete PCI-Bridge eines
angegebenen Netzwerk-Controllers einem Steckplatz zugewiesen sein. In diesen
Fällen wird diese Geräteeigenschaft nicht erstellt, um
Benennungskonflikte zu vermeiden.
ID_NET_NAME_PATH=PräfixcBuskennung,
ID_NET_NAME_PATH=
PräfixaLieferantModell
iInstanz,
ID_NET_NAME_PATH=PräfixiAdressenPort_Name,
ID_NET_NAME_PATH=Präfix[PDomäne]pBussSlot[fFunktion][nphys_Port_Name|dGer_Port],
ID_NET_NAME_PATH=Präfix[PDomäne]pBussSlot[fFunktion][nphys_Port_Name|dGer_Port]bNummer,
ID_NET_NAME_PATH=Präfix[PDomäne]pBussSlot[fFunktion][nphys_Port_Name|dGer_Port]uPort…[cKonfig][iSchnittstelle]
Format | Beschreibung |
Präfix [PDomäne] sSlot [fFunktion] [nPort_Name | dGer_Port] | PCI-Slot-Nummer |
Präfix vSlot | VIO-Slot-Nummer (IBM PowerVM) |
Präfix XNummer | VIF Schnittstellennummer (Xen) |
… bNummer | Broadcom-Bus- (BCMA) Kernnummer |
… uPort… [cKonfiguration] [iSchnittstelle] | USB-Port-Nummerkette |
…vSlot | SR-VIO-Slot-Nummer |
Diese Eigenschaft beschreibt den
Geräteinstallationsort. Verschiedene Schemata werden abhängig
vom Bustyp verwandt, wie in der nachfolgenden Tabelle beschrieben. Für
BCMA- und USB-Geräte muss die PCI-Pfadinformation bekannt sein und der
vollständige Name besteht aus dem Präfix, der
PCI-Slot-Kennzeichnung und dem USB- oder BCMA-Ort. Die ersten zwei Teile
werden in der nachfolgenden Tabelle durch »…« angezeigt.
Tabelle 4. Pfadbenennungsschema
CCW- und gruppierte CCW-Geräte gibt es in
IBM-System-Z-Großrechnern. Alle einleitenden Nullen und Punkte werden
unterdrückt.
Für PCI-, BCMA- und USB-Geräte werden die gleichen Regeln wie oben
für Slot-Namen beschrieben verwandt.
Format | Beschreibung |
Präfix cBuskennung | CCW- oder gruppierte CCW-Gerätekennzeichner |
Präfix aHändler Modell iInstanz | ACPI-Pfadnamen für ARM64-Plattformgeräte |
Präfix iAdresse nPort-Name | Netdevsim (simulierte Netzwerkgeräte) Gerätenummer und Port-Name |
Präfix [PDomäne] pBus sSlot [fFunktion] [nphys_Port_Name | dGer_Port] | Geographischer PCI-Ort |
… bNummer | Broadcom-Bus- (BCMA) Kernnummer |
… uPort… [cKonfiguration] [iSchnittstelle] | USB-Port-Nummerkette |
GESCHICHTE
Das folgende »Benennungsschema« wurde definiert (dies kann zum Zeitpunkt des Systemstarts mittels des oben dargestellten Kernelbefehlszeilenschalters net.naming-scheme= ausgewählt werden): v238Dies ist das in Systemd 238 implementierte
Benennungsschema.
v239
Die Benennung für mit SR-IOV und NPAR
erstellte virtuelle Netzwerkgeräte und für Geräte, deren
PCI-Netzwerk-Controller keine Slot-Nummer zugeordnet ist, wurde
geändert.
Virtuelle SR-IOV Geräte werden basierend auf der übergeordneten
Schnittstelle mit einer Endung »v Port« benannt, wobei
Port die virtuelle Gerätenummer ist. Vorher wurden solche
virtuellen Geräte benannt, als ob sie komplett unabhängig
wären.
Das neunte und spätere virtuelle NPAR-Geräte folgen dem für
die ersten acht NPAR-Partitionen verwandten Benennungsschema. Früher
wurden solche Geräte nicht umbenannt und die Vorgabe des Kernels
(»eth N«) wurde verwandt.
Es werden auch Namen für PCI-Geräte erstellt, bei denen der
PCI-Netzwerk-Controller selbst keine zugeordnete Slot-Nummer hat, aber eines
seiner übergeordneten Geräte hat eine. Früher wurden
solche Geräte nicht umbenannt und die Vorgabe des Kernels wurde
verwandt.
v240
Das Präfix »ib« und
gleichbleibende Namen für Infiniband-Geräte werden
eingeführt. Früher wurden solche Geräte nicht umbenannt.
Das ACPI-Indexfeld (in ID_NET_NAME_ONBOARD= verwandt) wird jetzt auch
genutzt, falls sein Wert 0 ist.
Es wurde eine neue Benennungsrichtlinie NamePolicy=keep
eingeführt. Mit dieser Richtline wird das Netzwerkgerät nicht
erneut umbenannt, falls sein Name bereits im Anwendungsraum (user space)
gesetzt wurde. Früher wurde diese Bennungsrichtlinie implizit angewandt
und jetzt muss sie explizit erbeten werden. Effektiv bedeutet dies, dass
Netzwerkgeräte entsprechend ihrer Konfiguration umbenannt werden, falls
keep nicht als Benennungsrichtlinie in der .link-Datei festgelegt ist,
auch wenn sie bereits umbenannt worden sind. Siehe systemd.link(5)
für eine Beschreibung von NamePolicy=.
v241
MACAddressPolicy=persistent wurde
erweitert, um MAC-Adressen basierend auf dem Gerätenamen zu setzen.
Früher basierten Adressen nur auf ID_NET_NAME_*-Attributen, was
bedeutete, dass für virtuelle Geräte niemals Schnittstellennamen
erstellt wurden. Jetzt bekommen die meisten Geräte dauerhafte Adressen,
insbesondere auch Bridges.
Beachten Sie: Wenn der Anwendungsraum keine MAC-Adresse für ein
Bridge-Gerät setzt, dann wird der Kernel anfänglich eine
zufällige Adresse zuweisen und diese dann ändern, wenn das erste
Gerät zu der Bridge enslaved wird. Mit dieser Änderung der
Benennungsrichtlinie erhalten Bridges eine dauerhafte MAC-Adresse basierend
auf dem Bridge-Namen anstatt des ersten Gerätes, das enslaved
ist.
v243
Unterstützung für die
Umbenennung von Netdevsim-Geräten (simulierten Netzwerkgeräten)
wurde hinzugefügt. Früher wurden diese Geräte nicht
umbenannt.
Früher wurde der zweibuchstabige Schnittstellentyppräfix
ID_NET_LABEL_ONBOARD= vorangestellt. Dies ist jetzt nicht mehr der
Fall.
v245
Wenn systemd-nspawn(1) den Namen
für die Rechnerseite des mit --network-veth vom Container-Namen
erstellten Netzwerkschnittstellennamens ableitet, schnitt es bisher das
Ergebnis nach 15 Zeichen ab, falls es länger war (da dies die maximale
Länge für Netzwerkschnittstellennamen ist). Ab jetzt werden die
letzten 4 Zeichen auf einen 24-Bit-Hash-Wert des vollständigen
Schnittstellennamens gesetzt, falls der Schnittstellenname länger als
15 Zeichen wäre. Auf diese Art sollten Schnittstellennamenkollisionen
zwischen mehreren, ähnlich benannten Containern (die sich nur in der
Containernamen-Endung unterscheiden) weniger wahrscheinlich werden —
sie sind allerdings weiterhin möglich, da der 24-Bit-Hash-Wert sehr
klein ist.
v247
Wenn ein PCI-Steckplatz einer PCI-Bridge
zugeordnet ist, die über mehrere nachgeordnete Netzwerk-Controller
verfügt, dann könnte der gleiche Wert der Eigenschaft
ID_NET_NAME_SLOT für alle diese Controller abgeleitet werden.
Dadurch können Benennungskonflikte auftreten, falls die Eigenschaft als
der Gerätename ausgewählt wird. Jetzt wird diese Situation
erkannt und keine Eigenschaft ID_NET_NAME_SLOT erstellt.
v249
PCI-Hotplug-Positionsnamen für den
S390-PCI-Treiber sind hexadezimale Darstellungen des Geräteattributs
function_id. Dieses Attribut wird nun dazu verwandt, ID_NET_NAME_SLOT
zu bauen. Vorher wurden alle Positionsnamen als dezimale Zahlen ausgewertet,
was entweder zu einem falschen Wert der Eigenschaft ID_NET_NAME_SLOT
führen konnte oder zu gar keinem.
Einige Firmware- und Hypervisor-Implementierungen berichten unrealistisch hohe
Werte für den eingebauten Index. Um die Erstellung von
gefälschten eingebauten Schnittstellennamen zu vermeiden, wurden
Indexwerte größer als 16381 ¹⁴-1) ignoriert.
Für S390-PCI-Geräte sind Indexwerte bis 65535
(2¹⁶-1) gültig. Um dies zu berücksichtigen, wurde
diese Begrenzung auf 65535 erhöht.
Die Udev-Regel NAME= ersetzt »:«, »/« und
»%« durch einen Unterstrich (»_«) und lehnt
Zeichenketten ab, die rein numerisch sind.
v250
Es wurde ein Namensschema für
Xen-Netfront-»vif«-Schnittstellen, basierend auf der
gästeseitigen VIF-Nummerngruppe aus der Xen-Konfiguration (oder die
Schnittstellen mit Index in AWS EC2), hinzugefügt.
v251
Seit Version v247 setzen wir nicht mehr
ID_NET_NAME_SLOT, falls wir erkennen, dass ein PCI-Gerät, das
einem PCI-Steckplatz zugeordnet ist, eine PCI-Bridge ist, da dies einen
Benennungskonflikt hervorrufen würde, wenn es mehrere
Kind-Geräte auf dieser Bridge gibt. Jetzt wird dies nicht mehr so
strikt gesehen und wir werden die Steckplatz-Informationen verwenden, um den
Namen darauf basierend zu erstellen, aber nur, falls das PCI-Gerät
mehrere Funktionalitäten hat. Dies ist sicher, da eine separate
Funktionsnummer ein Teil des Gerätenamens für Geräte mit
mehreren Funktionen ist.
v252
Benennungsschema für
Plattformgeräte mit Devicetree-Alias hinzugefügt.
Beachten Sie, dass latest zur Kennzeichnung des neusten bekannten Schemas
(für diese konkrete Version von Systemd) verwandt werden kann.
BEISPIELE
Beispiel 1. Verwendung Udevadms test-builtin zur Anzeige von Geräteeigenschaften$ udevadm test-builtin net_id /sys/class/net/enp0s31f6 … Verwendung des Vorgabe-Schnittstellen-Benennungsschemas 'v243'. ID_NET_NAMING_SCHEME=v243 ID_NET_NAME_MAC=enx54ee75cb1dc0 ID_OUI_FROM_DATABASE=Wistron InfoComm(Kunshan)Co.,Ltd. ID_NET_NAME_PATH=enp0s31f6 …
ID_NET_NAME_ONBOARD=eno1 ID_NET_NAME_ONBOARD_LABEL=Ethernet Port 1
# /sys/devices/pci0000:00/0000:00:1c.3/0000:05:00.0/net/ens1 ID_NET_NAME_MAC=enx000000000466 ID_NET_NAME_PATH=enp5s0 ID_NET_NAME_SLOT=ens1
# /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.0/net/enp2s0f0 ID_NET_NAME_MAC=enx78e7d1ea46da ID_NET_NAME_PATH=enp2s0f0 # /sys/devices/pci0000:00/0000:00:1c.0/0000:02:00.1/net/enp2s0f1 ID_NET_NAME_MAC=enx78e7d1ea46dc ID_NET_NAME_PATH=enp2s0f1
# /sys/devices/pci0000:00/0000:00:1c.1/0000:03:00.0/net/wlp3s0 ID_NET_NAME_MAC=wlx0024d7e31130 ID_NET_NAME_PATH=wlp3s0
# /sys/devices/pci0000:00/0000:00:03.0/0000:15:00.0/net/ibp21s0f0 ID_NET_NAME_PATH=ibp21s0f0 # /sys/devices/pci0000:00/0000:00:03.0/0000:15:00.1/net/ibp21s0f1 ID_NET_NAME_PATH=ibp21s0f1
# /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.4/2-1.4:1.6/net/wwp0s29u1u4i6 ID_NET_NAME_MAC=wwx028037ec0200 ID_NET_NAME_PATH=wwp0s29u1u4i6
# /sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/net/enp0s29u1u2 ID_NET_NAME_MAC=enxd626b3450fb5 ID_NET_NAME_PATH=enp0s29u1u2
# /sys/devices/css0/0.0.0007/0.0.f5f0/group_device/net/encf5f0 ID_NET_NAME_MAC=enx026d3c00000a ID_NET_NAME_PATH=encf5f0
SIEHE AUCH
udev(7), udevadm(8), Vorhersagbare Netzwerkschnittstellennamen[1], systemd-nspawn(1)ANMERKUNGEN
- 1.
- Vorhersagbare Netzwerkschnittstellennamen
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <[email protected]> erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzersystemd 252 |