Noto que dependiendo de la marca de la tarjeta de red, los nombres de las interfaces difieren (supongo que dependen del controlador).
- ¿Por qué *BSD utiliza nombres específicos de controladores para las interfaces de red?
- ¿Significa que no hay una capa de abstracción que describa "una interfaz de red genérica" en el kernel, por lo que cada controlador se abordaría internamente a través de su propia API?
- (¿Cómo) afecta a subsistemas como la agregación de enlaces, la configuración del tráfico, la QoS (ALTQ), filtrado y otros?
Precisamente, parece que en pfSense no puedo usar ALTQ con una interfaz virtual de agregación de enlaces (LAG).
¿Es esta una limitación interna de BSD debido a la falta de una capa de abstracción adecuada?
Respuesta1
¿Por qué *BSD utiliza nombres específicos de controladores para las interfaces de red?
Es simplemente una elección histórica. Las letras del nombre provienen del controlador que habla con la tarjeta, por lo que serán las mismas para dos interfaces separadas si usan el mismo controlador.
Tiene un beneficio práctico: en BSD, los controladores de red tienen sus propias páginas de manual en la sección 4. Entonces,dc(4)
le informa sobre el controlador DEC 21143, que controlaría el dc0
adaptador de red.
Esto también se ve en otras partes de BSD Unix, como en los discos duros.
¿Es esta una limitación interna de BSD debido a la falta de una capa de abstracción adecuada?
No.
Por lo que vale,Linux va por un camino similar. Los días en que las reglas de denominación simples para los adaptadores Ethernet están desapareciendo, a medida que las redes se vuelven más complicadas.
Respuesta2
La elección de utilizar nombres genéricos o específicos del controlador no tiene nada que ver con ninguna limitación del controlador.
Es principalmente una elección cosmética. El uso de nombres genéricos tiene la ventaja de ocultar información que casi siempre es irrelevante: una interfaz de red es una interfaz de red, sin importar quién la haya creado. Las capacidades de un dispositivo dependen del modelo exacto y de su configuración, no del controlador que se esté utilizando. La ventaja de los nombres específicos es para el administrador: si un mensaje de error menciona eth0
(vale, entonces cuál es 0 y cuál es 1), es menos informativo que si menciona wlan0
(ah, esa es la interfaz wifi) o bcm0
(ah, esa es la interfaz Broadcom).
En FreeBSD, las operaciones de configuración de red funcionan llamandoioctl
en un socket Unix. Este ioctl es procesado por el código de red genérico y llega al controlador correspondiente si el ioctl así lo requiere.
No sé cómo interactúa ALTQ con la agregación de enlaces. Asegúrese de utilizar una versión reciente de FreeBSD, ya queesto solía no funcionar pero ahora sí.
Respuesta3
Hace que sea más fácil saber con qué tarjeta de red está hablando.
Si tiene una tarjeta de red Intel (igb0) y Realtek (rl0), ahora puede distinguirlas inmediatamente.
Además, diferentes controladores admiten diferentes funciones. Algunos controladores lo admiten polling
y otros no. Algunos soportes LRO
, TSO
etc. RSS
Es más fácil rastrear qué soportes cuando no todos están simplemente nombrados eth
.
eth
Podría tener sentido si tuviera muchos otros tipos de interfaces de red, pero rara vez los tiene.
Respuesta4
¿Por qué *BSD utiliza nombres específicos de controladores para las interfaces de red?
Para simplificar las cosas. Si miras una interfaz llamadabge0
y echa un vistazo a los manuales o utiliza tusistema de enlace mnemotécnicorecordará rápidamente que este controlador es unBroadcom Gigabit Ethernet.EsteEl documento también es útil.
¿Significa que no hay una capa de abstracción que describa "una interfaz de red genérica" en el kernel, por lo que cada controlador se abordaría internamente a través de su propia API?
La regla aquí es:
- Utilice el nombre del controlador para crear un nombre de dispositivo;
- Utilice la identificación de PCI más baja para crear el número justo después del nombre del dispositivo;
No se necesita capa de abstracción. Así de sencillo.
(¿Cómo) afecta a subsistemas como la agregación de enlaces, la configuración del tráfico, la QoS (ALTQ), el filtrado y otros?
Los nombres de las interfaces no deben interferir en la configuración del tráfico.
Precisamente, parece que en pfSense no puedo usar ALTQ con una interfaz virtual de agregación de enlaces (LAG).
Hoy debería funcionar:
¿Es esta una limitación interna de BSD debido a la falta de una capa de abstracción adecuada?
No es que no exista una capa adecuada para manejar esto. Es porque podrías usar otros recursos para manejar esos nombres comocreando nombres de interfaz( /etc/rc.conf
), ocambiando su id pcien la configuración de la placa base. Y como dijeron otros sobre esta pregunta, incluso Linux va por este camino con biosdevname
.