Ich stelle fest, dass die Schnittstellennamen je nach Marke der Netzwerkkarte unterschiedlich sind (ich nehme an, treiberabhängig).
- Warum verwendet * BSD treiberspezifische Namen für Netzwerkschnittstellen?
- Bedeutet dies, dass es im Kernel keine Abstraktionsschicht gibt, die "eine generische Netzwerkschnittstelle" beschreibt, sodass jeder Treiber intern über seine eigene API angesprochen wird?
- (wie) wirkt es sich auf Subsysteme wie Link Aggregation, Traffic Shaping, QoS ( ALTQ ), Filterung und andere aus?
Genau genommen kann ich unter pfSense ALTQ nicht mit einer virtuellen Schnittstelle für Link Aggregation (LAG) verwenden.
Handelt es sich um eine BSD-interne Einschränkung, da keine entsprechende Abstraktionsschicht vorhanden ist?
eth0
durchlaufenethINFINITY
. Sie werden nicht mehr in der Lage sein zu gebenifconfig eth0
und erwartet , dass Sie bei dem ersten Ethernet - Schnittstelle suchen werden, die ein solche Linux - Systeme funktionell ähnlich aus einem Benutzeroberfläche Standpunkt zu FreeBSD macht, wo Sie braucht , entweder a - priori - Wissen über die Namen der Schnittstellen auf dem System, oder Sie müssen zuerst eine Liste mit einem unqualifiziertenifconfig
Befehl abrufen . Die zugrunde liegenden Kernelmechanismen sind natürlich völlig anders.Die Auswahl generischer oder treiberspezifischer Namen hat nichts mit einer Treiberbeschränkung zu tun.
Es ist meist eine kosmetische Wahl. Die Verwendung von generischen Namen hat den Vorteil, dass Informationen ausgeblendet werden, die fast immer irrelevant sind - eine Netzwerkschnittstelle ist eine Netzwerkschnittstelle, unabhängig davon, wer sie erstellt hat. Die Funktionen eines Geräts hängen vom genauen Modell und seiner Konfiguration ab und nicht davon, welcher Treiber verwendet wird. Der Vorteil bestimmter Namen ist für den Administrator: Wenn in einer Fehlermeldung erwähnt wird
eth0
(ok, also ist die eine 0 und die andere 1), ist dies weniger informativ als wenn erwähnt wirdwlan0
(ah, das ist die WLAN-Schnittstelle) oderbcm0
(ah, das ist die WLAN-Schnittstelle) die Broadcom-Schnittstelle).Unter FreeBSD funktionieren Netzwerk-Setup-Vorgänge, indem
ioctl
ein Unix-Socket aufgerufen wird. Dieses ioctl wird vom generischen Netzwerkcode verarbeitet und läuft auf den entsprechenden Treiber herunter, wenn das ioctl dies verlangt.Ich weiß nicht, wie ALTQ mit der Linkaggregation interagiert. Stellen Sie sicher, dass Sie eine neuere Version von FreeBSD verwenden, da dies früher nicht funktioniert hat, jetzt aber .
quelle
Auf diese Weise können Sie leichter feststellen, mit welcher Netzwerkkarte Sie sprechen.
Wenn Sie einen Intel (igb0) und einen Realtek (rl0) haben, können Sie sie jetzt sofort auseinanderhalten.
Verschiedene Treiber unterstützen auch verschiedene Funktionen. Einige Treiber unterstützen
polling
und andere nicht. Eine gewisse UnterstützungLRO
,TSO
undRSS
etc. Es ist leichter zu verfolgen , welche Unterstützung die , wenn sie nicht alle eben genannteneth
.eth
Wenn Sie über viele andere Arten von Netzwerkschnittstellen verfügen, ist dies möglicherweise sinnvoll, aber nur selten.quelle
Um es einfach zu machen. Wenn Sie eine benannte Schnittstelle aufrufen
bge0
und die Handbücher lesen oder Ihr mnemonisches Link-System verwenden, werden Sie schnell merken, dass es sich bei diesem Treiber um einen Broadcom Gigabit Etherhet handelt . Dieses Dokument ist auch nützlich.Die Regel hier ist:
Keine Abstraktionsschicht erforderlich. So einfach.
Schnittstellennamen sollten beim Traffic Shapping nicht stören.
Heute sollte es klappen:
Es ist nicht so, dass es keine geeignete Schicht dafür gibt. Es liegt daran, dass Sie andere Ressourcen verwenden könnten, um diese Namen zu verarbeiten, wie z. B. das Erstellen von Schnittstellennamen (
/etc/rc.conf
) oder das Ändern der PCI-ID im Motherboard-Setup. Und wie von anderen zu dieser Frage gesagt, geht auch Linux diesen Weg mitbiosdevname
.quelle