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 de interface são diferentes (dependendo do driver, suponho).

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

Precisamente, parece que sob pfSense, eu não posso usar o 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?

    
por Totor 07.05.2014 / 10:40

4 respostas

7

Why does *BSD uses driver specific names for network interfaces?

É apenas uma escolha histórica. As letras no nome vêm do driver que fala com o cartão, então elas serão as mesmas para duas interfaces separadas se elas 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. Então, dc(4) informa sobre o driver DEC 21143, que controlaria o adaptador de rede dc0 .

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

Is this a BSD internal limitation due to the lack of an appropriate abstraction layer?

Não.

Por que vale a pena, o Linux está indo para baixo um caminho semelhante . Os dias de regras simples de nomenclatura para adaptadores Ethernet estão desaparecendo, à medida que o trabalho em rede fica mais complicado.

    
por 07.05.2014 / 10:47
5

A escolha de usar nomes genéricos ou específicos de drivers não tem nada a ver com qualquer limitação de driver.

É principalmente uma escolha cosmética. Usar nomes genéricos tem a vantagem de ocultar informações quase sempre irrelevantes - uma interface de rede é uma interface de rede, independentemente de quem a tenha feito. Os recursos de um dispositivo dependem do modelo exato e de sua configuração, não de qual driver está em uso. A vantagem de nomes específicos é para o administrador: se uma mensagem de erro mencionar eth0 (ok, qual deles é 0 e qual é 1), é menos informativo do que se menciona wlan0 (ah, essa é a interface wifi ) ou bcm0 (ah, essa é a interface da Broadcom).

No FreeBSD, as operações de configuração de rede funcionam chamando ioctl em um soquete Unix. Este ioctl é processado pelo código de rede genérico e goteja até o driver relevante se o ioctl solicitar isso.

Eu não sei como o ALTQ interage com a agregação de links. Certifique-se de usar uma versão recente do FreeBSD, pois isto costumava não funcionar, mas agora .

    
por 08.05.2014 / 04:37
3

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

Se você tem um Intel (igb0) e um Realtek (rl0) nic, você pode diferenciá-los imediatamente.

Além disso, drivers diferentes suportam recursos diferentes. Alguns drivers suportam polling e outros não. Alguns suportam LRO , TSO e RSS etc. É mais fácil rastrear qual suporte, quando nem todos eles são denominados eth .

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

    
por 15.06.2014 / 18:07
1

Why does *BSD uses driver specific names for network interfaces?

Para simplificar as coisas. Se você olhar para uma interface chamada bge0 e dê uma olhada nos manuais ou use seu sistema de links mnemônicos você se lembrará rapidamente que este driver é um Broadcom Gigabit Etherhet . Este documento também é útil.

Does it mean there is no abstraction layer describing "a generic network interface" in the kernel, so each driver would be internally addressed via its own API?

A regra aqui é:

  • Use o nome do motorista para criar um nome de dispositivo;
  • Use o menor ID de PCI para criar o número logo após o nome do dispositivo;

Nenhuma camada de abstração necessária. Simples assim.

(how) does it affect subsystems like link aggregation, traffic shaping, QoS (ALTQ), filtering and others?

Nomes de interface não devem interferir no traffic shapping.

Precisely, it looks like under pfSense, I cannot use ALTQ with a link aggregation (LAG) virtual interface.

Hoje deve funcionar:

Is this a BSD internal limitation due to the lack of an appropriate abstraction layer?

Não é que não haja uma camada apropriada para lidar com isso. É porque você pode usar outros recursos para lidar com nomes como criando nomes de interface ( /etc/rc.conf ), ou alterando o pci id na configuração da placa-mãe. E como dito por outros sobre essa questão, até mesmo o Linux está indo para esse caminho com biosdevname .

    
por 10.07.2014 / 15:19