Je remarque que selon la marque de la carte réseau, les noms d'interface diffèrent (selon le pilote, je suppose).
- Pourquoi * BSD utilise-t-il des noms spécifiques aux pilotes pour les interfaces réseau?
- Cela signifie-t-il qu'il n'y a pas de couche d'abstraction décrivant "une interface réseau générique" dans le noyau, de sorte que chaque pilote serait adressé en interne via sa propre API?
- (comment) affecte-t-il les sous-systèmes comme l'agrégation de liens, la mise en forme du trafic, la QoS ( ALTQ ), le filtrage et autres?
Plus précisément, il ressemble à pfSense, je ne peux pas utiliser ALTQ avec une interface virtuelle d'agrégation de liens (LAG).
S'agit-il d'une limitation interne BSD due à l'absence d'une couche d'abstraction appropriée?
eth0
traversethINFINITY
. Vous ne pourrez plus simplement taperifconfig eth0
et vous attendre à regarder la première interface Ethernet, ce qui rend ces systèmes Linux fonctionnellement similaires du point de vue de l'interface utilisateur à FreeBSD, où vous avez besoin soit d' une connaissance a priori des noms des interfaces sur le système, ou vous devez d'abord obtenir une liste avec uneifconfig
commande non qualifiée . Les mécanismes sous-jacents du noyau sont bien sûr complètement différents.Le choix d'utiliser des noms génériques ou spécifiques au pilote n'a rien à voir avec une limitation du pilote.
C'est surtout un choix cosmétique. L'utilisation de noms génériques a l'avantage de masquer des informations qui sont presque toujours hors de propos - une interface réseau est une interface réseau, peu importe qui l'a créée. Les capacités d'un périphérique dépendent du modèle exact et de sa configuration, et non du pilote utilisé. L'avantage des noms spécifiques est pour l'administrateur: si un message d'erreur mentionne
eth0
(ok, donc lequel est 0 et lequel est 1), c'est moins informatif que s'il mentionnewlan0
(ah, c'est l'interface wifi) oubcm0
(ah, c'est l'interface Broadcom).Sur FreeBSD, les opérations de configuration du réseau fonctionnent en appelant
ioctl
un socket Unix. Cet ioctl est traité par le code de réseau générique et se répercute sur le pilote approprié si l'ioctl le demande.Je ne sais pas comment ALTQ interagit avec l'agrégation de liens. Assurez-vous d'utiliser une version récente de FreeBSD, car cela ne fonctionnait pas mais fonctionne maintenant .
la source
Il est plus facile de savoir à quelle carte réseau vous parlez.
Si vous avez un processeur Intel (igb0) et Realtek (rl0), vous pouvez maintenant les différencier immédiatement.
En outre, différents pilotes prennent en charge différentes fonctionnalités. Certains pilotes prennent en charge
polling
et d'autres non. Un certain soutienLRO
,TSO
etRSS
etc. Il est plus facile de suivre ce qui soutien que lorsqu'ils ne sont pas tout simplement nomméseth
.eth
pourrait avoir un sens si vous aviez beaucoup d'autres types d'interfaces réseau, mais vous en avez rarement.la source
Pour simplifier les choses. Si vous regardez une interface nommée
bge0
et jetez un œil aux manuels ou utilisez votre système de liaison mnémonique, vous vous souviendrez rapidement que ce pilote est un Broadcom Gigabit Etherhet . Ce document est également utile.La règle ici est:
Aucune couche d'abstraction n'est nécessaire. C'est simple.
Les noms d'interface ne doivent pas interférer sur le trafic shaping.
Aujourd'hui, cela devrait fonctionner:
Ce n'est pas qu'il n'y ait pas de couche appropriée pour gérer cela. C'est parce que vous pouvez utiliser d'autres ressources pour gérer ces noms comme créer des noms d'interface (
/etc/rc.conf
), ou changer son identifiant pci dans la configuration de la carte mère. Et comme l'ont dit d'autres sur cette question, même Linux va sur cette voie avecbiosdevname
.la source