¿Por qué no todas las tarjetas de interfaz de red funcionan con un solo controlador genérico?

Porque eso sería más difícil para las compañías que los hacen. En el extremo inferior, poder juntar cualquier pieza de basura barata que haya encontrado en un almacén y cubrir los vacíos en el software les ahorra algunos centavos. En el extremo superior, los trucos utilizados para impulsar el tráfico de varios GBit de manera confiable y eficiente son parte de la innovación que diferencia a las empresas competidoras.

Sin embargo, parece que podría haber sucedido: la mayoría de las tarjetas no exóticas funcionan de manera razonablemente similar, y elaborar un estándar no sería tan difícil. Supongo que la diferencia entre las tarjetas de red y, por ejemplo, los discos duros es que los discos duros están ocultos detrás de los controladores que son difíciles de actualizar, mientras que un dispositivo de red es directamente visible para el sistema operativo. En cuanto a los controladores de disco, es muy complicado instalar y arrancar desde uno no estándar que la mayoría se ha unido a AHCI como núcleo común, con controladores opcionales para agregar características adicionales. Lo mismo ocurre con USB: poder arrancar desde USB es más fácil con los estándares * HCI. (SATA y USB también se benefician de haber sido diseñados con anticipación por un comité que incluyó un estándar para los controladores al diseñar los protocolos).

Bueno, varias razones.

Primero, diferentes tarjetas de red hacen cosas muy diferentes. No solo estoy hablando de tarjetas de red para diferentes tipos de red. Si está utilizando Linux y ethtool está instalado, le sugiero que mire todas las cosas diferentes que admite su tarjeta ethernet. Si tiene a mano una marca diferente de tarjeta ethernet, cámbiela y use la herramienta nuevamente. Algunos de los parámetros han cambiado.

Pero va más allá de eso.

Algunas tarjetas ethernet admiten la descarga de algunas / todas las funciones TCP / IP en la tarjeta. La mayoría no lo hace.

Algunas tarjetas ethernet admiten multidifusión en hardware, algunas utilizan el modo promiscuo para admitirlo. Varía.

Algunas tarjetas ethernet admiten múltiples conexiones. Los que lo hacen, algunos lo admiten solo para la conmutación por error de red y otros lo admiten para múltiples rutas. Unos pocos pueden hacer ambas cosas.

Algunas tarjetas ethernet admiten RDMA, la mayoría no.

Y ahora en las redes no ethernet.

Estos incluyen, pero no se limitan a, Infiniband, SCI, T1 / T3, Fieldbus, SCADA, O8, bueno, entiendes la idea, creo.

Un controlador que pueda manejar cada uno de estos casos sería extremadamente complejo. La complejidad es el enemigo. Mantenlo simple. Un controlador que maneja bien un caso es mucho, mucho mejor que un controlador que puede manejar mil casos extremadamente mal.

Lo que suele suceder es que tienes capas de abstracción. Es posible que tenga una capa de abstracción de bus, ya que no es obvio por qué un controlador debería preocuparse si está utilizando PCI Express, HyperTransport o VXI como transporte. Necesita una API que pueda usar para hablar con la tarjeta, la implementación de esa API no le preocupa.

Su controlador de red generalmente se ubicará en algún lugar, lo que proporciona una API independiente del dispositivo para algún tipo de adaptador de red virtual. En algunos casos, puede haber múltiples controladores, ya que algunas suposiciones por el diseño de la interfaz de red pueden ser falsas.

Hay otro punto a considerar. La mayoría de los conductores no son difíciles en tiempo real. A veces, se requiere un controlador duro en tiempo real. El controlador debe ser capaz de garantizar que llevará una cantidad de tiempo predecible realizar cualquier función, independientemente de los parámetros que se le suministren y de las condiciones de la red. La función debe completarse a tiempo, siempre. Eso no es realmente posible en algunas interfaces de red y es muy difícil de obtener en otras. Tales restricciones aumentan los costos y costarán en funcionalidad, por lo que es una compensación.

Del mismo modo, el mercado de alta confiabilidad requiere controladores que nunca pueden salir mal, bajo ninguna circunstancia. Demostrar que es increíblemente lento.

Luego, está el mercado informático de alto rendimiento. Urk Recuerde, SCI e Infiniband tienen latencias menores de 10ns. Un controlador genérico no debe tener una ruta que altere significativamente esto, o es inútil en el mercado de HPC.

Tener un controlador donde pueda cambiar entre normal, difícil en tiempo real, alta confiabilidad y alto rendimiento significaría tener un controlador que será demasiado grande para muchos sistemas embebidos y demasiado caro para la mayoría de los consumidores. Para los sistemas donde se requiere la calificación EAL7 o A1 (y por lo tanto el software debe ser demostrablemente correcto y seguro), puede agregar a la etiqueta de precio cuantos ceros desee.

De hecho, si pudiera imaginar un controlador monolítico (si es modular, también podría tener varios controladores) que podría cumplir con todos los requisitos y admitir todos los protocolos en línea, estaría muy impresionado.

Ahora, debo señalar que no le diré que no se puede hacer. Obviamente, podría construir un ASIC gigante y tener todas las complejidades anteriores en hardware. Luego tiene un controlador de software perfectamente genérico como interfaz para el ASIC.

Pero si se va a tomar la molestia de hacer que algo sea tan caro, ¿por qué no tenerlo en su propia tarjeta de red, donde puede conectar y usar diferentes puertos de interfaz?

Por supuesto, volvemos a que cada tarjeta de red tiene su propio controlador. 🙂

Si esto es algo que querrías hacer, admiro la ambición y no tengo absolutamente ningún problema en proporcionar toda la ayuda y el tiempo que pueda para un proyecto de este tipo. No hay nada mejor que demostrar que está equivocado en el buen sentido y respaldaré cualquier cosa que se proponga hacer eso.

(Soy un científico de corazón. La falsificación de una teoría es todo el punto del campo).

More Interesting

¿Por qué se construye wifi con múltiples redes superpuestas y tres redes no superpuestas?

Todos los dispositivos de comunicación inalámbricos dejan de funcionar inexplicablemente en todo el mundo, durante un año. ¿Cuáles son las consecuencias?

¿Cuál es el pirateo informático más exitoso que hayas hecho?

¿Cuál es la historia detrás de 192.168.1.1? ¿Por qué no 192.169.1.1 o cualquier otra dirección IP? ¿Cuándo comenzó a usarse? ¿Quién lo comenzó? ¿Por qué? ¿Por qué no 1.1.1.1? ¿Cuál es la relación con 127.0.0.1? ¿Qué pasa con 10.0.0.1 (Apple)?

¿Por qué no se implementa SCTP en Windows y Mac OS X?

¿Cuál sería el impacto cuando los terroristas decidan atacar el cableado de Internet que conecta a Estados Unidos con el resto del mundo?

¿Puede la señal analógica utilizar la conmutación de paquetes?

En mi universidad, los teléfonos inteligentes tienen restringido el uso de WiFi de la universidad, pero podemos usarlo en nuestras computadoras portátiles (no teléfonos) usando nuestro número de identificación y contraseña. Algunos teléfonos están conectados a la red, pero no pueden usar WiFi. ¿Cómo puedo conectarlo al WiFi de la universidad?

¿Quién es el Dr. Ananthanarayanan Chockalingam?

Cómo convertirse en administrador de red

Cómo conectar dos computadoras portátiles con un cable LAN

¿El conmutador SDN OpenFlow por funcionalidad es más igual al enrutador o conmutador básico?

¿Podría un sistema de mensajería como WhatsApp usar una red punto a punto construida en una cadena de bloques como Bitcoin?

¿Cuál es un buen modelo de red para los juegos tipo Choque de clanes?

Cómo encontrar la red conectada más grande en un gráfico usando Python