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

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

Percebo que dependendo da marca da placa de rede, os nomes das interfaces são diferentes (suponho que dependam do driver).

  • Por que o *BSD usa nomes específicos de driver para interfaces de rede?
  • Isso significa que não há camada de abstração descrevendo "uma interface de rede genérica" ​​no kernel, então cada driver seria endereçado internamente por meio de sua própria API?
  • (como) isso afeta subsistemas como agregação de links, modelagem de tráfego, QoS (ALTQ), filtragem e outros?

Precisamente, parece que no pfSense não consigo usar ALTQ com uma interface virtual de agregação de link (LAG).

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

Responder1

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

É apenas uma escolha histórica. As letras do nome vêm do driver que se comunica com a placa, portanto serão iguais 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.

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

Não.

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

Responder2

A escolha de usar nomes genéricos ou específicos de driver não tem nada a ver com qualquer limitação do 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, não importa quem a criou. Os recursos de um dispositivo dependem do modelo exato e de sua configuração, e não de qual driver está em uso. A vantagem dos nomes específicos é para o administrador: se uma mensagem de erro mencionar eth0(ok, então qual é 0 e qual é 1), é menos informativo do que se mencionar wlan0(ah, essa é a interface wifi) ou bcm0(ah, essa é a interface Broadcom).

No FreeBSD, as operações de configuração de rede funcionam chamandoioctlem um soquete Unix. Este ioctl é processado pelo código de rede genérico 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, comoisso costumava não funcionar, mas agora funciona.

Responder3

Torna mais fácil saber com qual placa de rede você está falando.

Se você tiver uma placa de rede Intel (igb0) e Realtek (rl0), agora poderá diferenciá-las imediatamente.

Além disso, drivers diferentes oferecem suporte a recursos diferentes. Alguns drivers suportam pollinge outros não. Algum suporte LRO, TSOe RSSetc. É mais fácil rastrear qual suporte quando eles não são apenas nomeados eth.

ethpoderia fazer sentido se você tivesse muitos outros tipos de interfaces de rede, mas raramente o faz.

Responder4

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

Para tornar as coisas simples. Se você olhar para uma interface chamadabge0e dê uma olhada nos manuais ou use seusistema de link mnemônicovocê lembrará rapidamente que este driver é umBroadcom Gigabit Ethernet.Essedocumento também é útil.

Isso significa que não há camada de abstração descrevendo "uma interface de rede genérica" ​​no kernel, então cada driver seria endereçado internamente por meio de sua própria API?

A regra aqui é:

  • Utilize 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) isso afeta subsistemas como agregação de links, modelagem de tráfego, QoS (ALTQ), filtragem e outros?

Os nomes das interfaces não devem interferir na modelagem do tráfego.

Precisamente, parece que no pfSense não consigo usar ALTQ com uma interface virtual de agregação de link (LAG).

Hoje deve funcionar:

Esta é 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ê poderia usar outros recursos para lidar com esses nomes comocriando nomes de interface( /etc/rc.conf), oualterando seu id PCIna configuração da placa-mãe. E como já foi dito por outros sobre esta questão, até o Linux está seguindo esse caminho com o biosdevname.

informação relacionada