Por que o * BSD usa nomes específicos de driver para interfaces de rede? Isso implica limitações?

12

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?

Totor
fonte

Respostas:

7

Por que o * BSD usa nomes específicos de driver para interfaces de rede?

É apenas uma escolha histórica. As letras no nome vêm do driver que fala com o cartão; portanto, elas serão as mesmas para duas interfaces separadas, se usarem o mesmo driver.

Ele tem um benefício prático: no BSD, os drivers de rede têm suas próprias páginas de manual na seção 4. Portanto, dc(4)informa sobre o driver DEC 21143, que controlaria o dc0adaptador de rede.

Você também vê isso em outras partes do BSD Unix, como discos rígidos.

Isso é uma limitação interna do BSD devido à falta de uma camada de abstração apropriada?

Não.

Pelo que vale, o Linux está seguindo um caminho semelhante . Os dias de regras simples de nomeação para adaptadores Ethernet estão desaparecendo, à medida que a rede fica mais complicada.

Warren Young
fonte
Obrigado. Você sabe por que não posso usar o ALTQ com uma agregação de link então?
Totor
Uma pergunta por pergunta, por favor. Vamos focar este na nomeação de dispositivos BSD.
Warren Young
Eu não chamaria o novo dispositivo de rede udev nomeando um caminho semelhante ao BSD. Tanto quanto sei, a maneira padrão é usar algum tipo de caminho de barramento para identificar os dispositivos, não o nome do driver com um esquema de numeração aleatória.
Pavel Šimerda
@ PavelŠimerda: Eu só queria dizer que os sistemas Linux que usam este esquema não utilização eth0através ethINFINITY. Você não será capaz de basta digitar ifconfig eth0e 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 um ifconfigcomando não qualificado primeiro. Os mecanismos subjacentes do kernel são obviamente completamente diferentes.
Warren Young
5

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 mencionar wlan0(ah, essa é a interface wifi) ou bcm0(ah, isso é a interface Broadcom).

No FreeBSD, as operações de configuração da rede funcionam chamando ioctlum 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 .

Gilles 'SO- parar de ser mau'
fonte
3

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 pollinge outros não. Algum apoio LRO, TSOe RSSetc. É mais fácil de controlar que o apoio que quando eles não estão apenas chamado eth.

eth pode fazer sentido se você tiver muitos outros tipos de interfaces de rede, mas raramente o faz.

Allan Jude
fonte
+1, porque eu sei quem você é. :) Obrigado pelo podcast !
Warren Young
1

Por que o * BSD usa nomes específicos de driver para interfaces de rede?

Para simplificar as coisas. Se você procurar uma interface chamada bge0e 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.


fonte