Percebo que, dependendo da marca da placa de rede, os nomes das interfaces diferem (depende do driver, suponho).
- Por que o * BSD usa nomes específicos de driver para interfaces de rede?
- Isso significa que não há uma camada de abstração descrevendo "uma interface de rede genérica" no kernel, para que cada driver seja tratado internamente por meio de sua própria API?
- (como) afeta subsistemas como agregação de links, modelagem de tráfego, QoS ( ALTQ ), filtragem e outros?
Precisamente, parece que, no pfSense, não posso usar o ALTQ com uma interface virtual de agregação de link (LAG).
Isso é uma limitação interna do BSD devido à falta de uma camada de abstração apropriada?
eth0
atravésethINFINITY
. Você não será capaz de basta digitarifconfig eth0
e esperamos que você vai estar a olhar para a primeira interface Ethernet, o que torna tais sistemas Linux funcionalmente semelhantes do ponto de vista da interface do usuário para FreeBSD, onde for necessário, quer a priori conhecimento dos nomes dos interfaces no sistema ou você precisa obter uma lista com umifconfig
comando não qualificado primeiro. Os mecanismos subjacentes do kernel são obviamente completamente diferentes.A escolha de usar nomes genéricos ou específicos de driver não tem nada a ver com qualquer limitação de driver.
É principalmente uma escolha cosmética. O uso de nomes genéricos tem a vantagem de ocultar informações quase sempre irrelevantes - uma interface de rede é uma interface de rede, independentemente de quem as criou. Os recursos de um dispositivo dependem do modelo exato e de sua configuração, e não do driver em uso. A vantagem de nomes específicos é para o administrador: se uma mensagem de erro mencionar
eth0
(ok, qual é 0 e qual é 1), é menos informativo do que se mencionarwlan0
(ah, essa é a interface wifi) oubcm0
(ah, isso é a interface Broadcom).No FreeBSD, as operações de configuração da rede funcionam chamando
ioctl
um soquete Unix. Esse ioctl é processado pelo código genérico de rede e chega ao driver relevante se o ioctl solicitar isso.Não sei como o ALTQ interage com a agregação de links. Certifique-se de usar uma versão recente do FreeBSD, pois isso costumava não funcionar, mas agora funciona .
fonte
Torna mais fácil saber com qual placa de rede você está falando.
Se você possui um nicho Intel (igb0) e Realtek (rl0), agora pode diferenciá-los imediatamente.
Além disso, drivers diferentes oferecem suporte a recursos diferentes. Alguns drivers suportam
polling
e outros não. Algum apoioLRO
,TSO
eRSS
etc. É mais fácil de controlar que o apoio que quando eles não estão apenas chamadoeth
.eth
pode fazer sentido se você tiver muitos outros tipos de interfaces de rede, mas raramente o faz.fonte
Para simplificar as coisas. Se você procurar uma interface chamada
bge0
e dar uma olhada nos manuais ou usar o sistema de link mnemônico , lembrará rapidamente que esse driver é um Broadcom Gigabit Etherhet . Este documento também é útil.A regra aqui é:
Nenhuma camada de abstração necessária. Que simples.
Os nomes de interface não devem interferir na configuração do tráfego.
Hoje deve funcionar:
Não é que não exista uma camada apropriada para lidar com isso. É porque você pode usar outros recursos para lidar com esses nomes, como criar nomes de interface (
/etc/rc.conf
) ou alterar seu ID de pci na configuração da placa-mãe. E como dito por outras pessoas sobre essa questão, até o Linux está nesse caminhobiosdevname
.fonte