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, por sus siglas en inglés; que no deben confundirse con redes de área de almacenamiento ).
Las redes son un recurso compartido. Con las API de red tradicionales, como la API de socket de Berkeley , el núcleo está involucrado en cada comunicación de red. Esto presenta un tremendo cuello de botella en el rendimiento cuando la latencia es un problema.
Uno de los desarrollos clásicos en los sistemas informáticos es la memoria virtual , una combinación de hardware y software que crea la ilusión de una memoria privada para cada proceso. En la misma línea de pensamiento, se podría acceder a una interfaz de red virtual protegida a través de los límites de los procesos a nivel de usuario. Con esta tecnología, el "consumidor" administra sus propios buffers y su propio programa de comunicación mientras que el "proveedor" se encarga de la protección.
De esta manera, la tarjeta de interfaz de red (NIC) proporciona una "red privada" para un proceso, y normalmente se permite que un proceso tenga múltiples redes de este tipo. La interfaz virtual (VI) de VIA se refiere a esta red y es simplemente el destino de las solicitudes de comunicación del usuario. La comunicación se lleva a cabo a través de un par de VI, uno en cada uno de los nodos de procesamiento involucrados en la transmisión. En la comunicación "de bypass de núcleo", el usuario administra sus propios búferes.
Otra faceta 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 desarrollo clásico en los sistemas informáticos es el acceso directo a memoria (DMA), en el que un dispositivo puede acceder directamente a la memoria principal mientras la CPU queda libre para realizar otras tareas.
En una red con "acceso directo a memoria remota" ( RDMA ), la NIC emisora utiliza DMA para leer datos en el búfer especificado por el usuario y transmitirlos como un mensaje autónomo a través de la red. La NIC receptora utiliza luego DMA para colocar los datos en el búfer especificado por el usuario. No hay copia intermedia y todas estas acciones ocurren sin la participación de las CPU, lo que tiene el beneficio adicional de una menor utilización de la CPU.
Para que la NIC pueda acceder a los datos a través de DMA, la página del usuario debe estar en la memoria. En VIA, el usuario debe "determinar" sus buffers antes de la transmisión, para evitar que el SO 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 que posee la memoria registrada pueda acceder a ella, las NIC de VIA requieren claves de permiso conocidas como "etiquetas de protección" durante la comunicación.
Básicamente, VIA es un estándar que define la omisión del núcleo 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 una base para los estándares InfiniBand , iWARP y RoCE.