Articulo de referencia

Arquitectura de interfaz virtual

La arquitectura de interfaz virtual ( VIA ) es un modelo abstracto de una red de copia cero a nivel de usuario y es la base de InfiniBand , iWARP y RoCE . Creada por Microsoft ,...

La arquitectura de interfaz virtual ( VIA ) es un modelo abstracto de una red de copia cero a nivel de usuario y es la base de InfiniBand , iWARP y RoCE . Creada por Microsoft , Intel y Compaq , la VIA original buscaba estandarizar la interfaz para tecnologías de red de alto rendimiento conocidas como redes de área de sistema (SAN; que no deben confundirse con redes de área de almacenamiento ).

Descripción general

Las redes son un recurso compartido. Con las API de red tradicionales, como la API de sockets de Berkeley , el núcleo interviene en cada comunicación de red. Esto supone un enorme cuello de botella en el rendimiento cuando la latencia es un problema.

Uno de los avances clásicos en sistemas informáticos es la memoria virtual , una combinación de hardware y software que crea la ilusión de memoria privada para cada proceso. Siguiendo esta misma línea de pensamiento, se podría acceder a una interfaz de red virtual protegida entre procesos a nivel de usuario. Con esta tecnología, el "consumidor" gestiona sus propios búferes y su planificación de comunicaciones, mientras que el "proveedor" se encarga de la protección.

Así, la tarjeta de interfaz de red (NIC) proporciona una «red privada» para un proceso, y normalmente se permite que un proceso tenga varias de estas redes. La interfaz virtual (VI) de VIA hace referencia a esta red y es simplemente el destino de las solicitudes de comunicación del usuario. La comunicación se realiza a través de un par de VI, una en cada uno de los nodos de procesamiento involucrados en la transmisión. En la comunicación «kernel-bypass», el usuario gestiona sus propios búferes.

Otra característica de las redes tradicionales es que los datos que llegan se colocan en un búfer preasignado y luego se copian al destino final especificado por el usuario. Copiar mensajes grandes puede llevar mucho tiempo, por lo que eliminar este paso resulta beneficioso. Otro avance clásico en los sistemas informáticos es el acceso directo a memoria (DMA), que permite que un dispositivo acceda directamente a la memoria principal mientras la CPU queda libre para realizar otras tareas.

Transmisión de datos

En una red con acceso directo a memoria remota ( RDMA ), la tarjeta de red emisora ​​utiliza DMA para leer los datos del búfer especificado por el usuario y transmitirlos como un mensaje independiente a través de la red. La tarjeta de red receptora utiliza entonces DMA para colocar los datos en el búfer especificado por el usuario. No se requiere ninguna copia intermedia y todas estas acciones se realizan sin la intervención de la CPU, lo que conlleva la ventaja adicional de un menor uso de la CPU.

Para que la tarjeta de red (NIC) acceda a los datos mediante DMA, la página del usuario debe estar en memoria. En VIA, el usuario debe bloquear sus búferes antes de la transmisión para evitar que el sistema operativo intercambie la página con el disco. Esta acción, una de las pocas que involucran al núcleo, vincula la página a la memoria física. Para garantizar que solo el proceso propietario de la memoria registrada pueda acceder a ella, las tarjetas de red VIA requieren claves de permisos, conocidas como "etiquetas de protección", durante la comunicación.

En esencia, VIA es un estándar que define el bypass del kernel y RDMA en una red. También define una biblioteca de programación llamada "VIPL". Se ha implementado, sobre todo en cLAN de Giganet (ahora Emulex ). Sin embargo, la principal contribución de VIA ha sido proporcionar la base para los estándares InfiniBand , iWARP y RoCE.

Véase también

  • Notas de Usenix sobre VIA
  • Un libro sobre VIA de Intel