¿Cómo puede una aplicación de usuario leer directamente desde una tarjeta de interfaz de red cuando usa la tarjeta Solarflare?

Parece que las tarjetas Solarflare proporcionan su propia lógica de traducción de direcciones [1].

Normalmente, no se puede permitir que los procesos del espacio de usuario se comuniquen directamente con los dispositivos PCI, ya que pueden indicar a estos dispositivos que lean / escriban en ubicaciones de memoria arbitrarias. Una posible solución es tener una IOMMU (como AMD IOMMU o Intel VT-d) incrustada en el bus PCI, que el núcleo puede configurar para proporcionar controles de acceso y traducción de direcciones. Solarflare parece haber agregado parte de esa funcionalidad a sus tarjetas directamente, que es controlada por un controlador en el núcleo. Ese pequeño bit no se puede delegar en el espacio de usuario, pero todo el trabajo pesado que generalmente se realiza en la pila de red puede serlo, ya que todas las E / S se limitan a búferes de espacio de usuario particulares.

Referencias
[1] Introducción a la familia SFC91xx ASIC, Servicio de traducción de direcciones escalable: “Si bien esta función ahora es compatible con muchos conjuntos de chips de placa base de servidor habilitados para IOMMU, es el caso de que la compatibilidad de controladores para IOMMU siga siendo inmadura para muchos sistemas operativos y muchos clientes de Solarflare prefieren use el servicio de traducción de direcciones provisto en los ASIC de Solarflare con madurez
ayuda al conductor “.

More Interesting

¿Cómo funciona la estimación del tiempo de ida y vuelta del TCP (RTT)? ¿Qué tan diferente es la implementación en todos los sistemas operativos?

Cómo filtrar mi propio acceso a mi sitio web ya que mi IP es dinámica

¿Se puede comunicar un servidor Linux con un cliente Windows?

¿Cómo podemos encontrar la dirección IP pública de cualquier persona en el mundo?

¿Por qué el tamaño del paquete IP en la práctica es de solo 1500 bytes?

¿Cuál es el mejor software para cambiar su dirección IP?

¿El número de máquinas conectadas (físicas y virtuales) en el mundo ya es mayor que el número de direcciones IPv4 disponibles?

Para la transmisión del sistema de archivos, ¿hay alguna manera de 'mantener una conexión abierta', como con TCP, o la transferencia de datos relativamente sin estado es lo suficientemente rápida?

En un servidor TCP, select () se invoca una vez por segundo. ¿Cómo puedo diferenciar dos o más paquetes cuando llegan en 1 segundo?

¿Cómo es que HTTP no tiene conexión cuando TCP / IP está orientado a la conexión?

¿Es posible ejecutar comandos en una máquina Linux conectada a la IP privada de una empresa desde el exterior, sin acceso a la puerta de enlace?

¿Cuáles son las razones por las que la mayoría de las empresas e instituciones utilizan TCP, no UDP, para llamadas de videoconferencia o para transmisión en vivo?

¿Qué tan complicado y costoso sería ejecutar un intercambio de paquetes X.25 en 2016?

Cómo usar el protocolo Telnet para acceder a servidores remotos y ejecutar solicitudes HTTP

Cómo hackear una computadora a través de una IP pública, cómo seleccionar una computadora especial de la red