Por que o * BSD usa nomes específicos de driver para interfaces de rede?
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.
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?
A regra aqui é:
- Use o nome do driver para criar um nome de dispositivo;
- Use o ID PCI mais baixo para criar o número logo após o nome do dispositivo;
Nenhuma camada de abstração necessária. Que simples.
(como) afeta subsistemas como agregação de links, modelagem de tráfego, QoS (ALTQ), filtragem e outros?
Os nomes de interface não devem interferir na configuração do tráfego.
Precisamente, parece que, no pfSense, não posso usar o ALTQ com uma interface virtual de agregação de link (LAG).
Hoje deve funcionar:
Isso é uma limitação interna do BSD devido à falta de uma camada de abstração apropriada?
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 caminho biosdevname
.