La Arquitectura de Interfaz Virtual ( VIA ) es un modelo abstracto de una red de copia cero a nivel de usuario y es la base para InfiniBand , iWARP y RoCE . Creado por Microsoft , Intel y Compaq , el VIA original buscaba estandarizar la interfaz para tecnologías de red de alto rendimiento conocidas como redes de área de sistema (SAN; no confundir 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 kernel está involucrado en todas las comunicaciones 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 memoria privada para cada proceso. En la misma escuela de pensamiento, se podría acceder a una interfaz de red virtual protegida a través de los límites del proceso a nivel de usuario. Con esta tecnología, el "consumidor" administra sus propios búferes y programa de comunicación, mientras que el "proveedor" maneja la protección.
Por tanto, la tarjeta de interfaz de red (NIC) proporciona una "red privada" para un proceso, y normalmente se permite que un proceso tenga varias 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 tiene lugar 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 "kernel-bypass", 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 en el destino final especificado por el usuario. Copiar mensajes grandes puede llevar mucho tiempo, por lo que eliminar este paso es beneficioso. Otro desarrollo clásico en los sistemas informáticos es el acceso directo a memoria (DMA), en el que un dispositivo puede acceder a la memoria principal directamente mientras la CPU está libre para realizar otras tareas.
En una red con "acceso remoto directo a memoria" ( 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. Luego, la NIC receptora usa 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 acceda realmente a los datos a través de DMA, la página del usuario debe estar en la memoria. En VIA, el usuario debe "precisar" sus búferes antes de la transmisión, para evitar que el sistema operativo cambie la página al disco. Esta acción, una de las pocas que involucran al kernel, 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 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 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, principalmente, la mayor contribución de VIA ha sido proporcionar una base para los estándares InfiniBand , iWARP y RoCE.
enlaces externos
- Notas de Usenix sobre VIA
- La arquitectura de interfaz virtual , un libro de Intel
- Cómo planificar, diseñar y optimizar redes empresariales
- Especificación de arquitectura de interfaz virtual UML, cs520
- Ada Gavrilovska, Lograr comunicaciones de alto rendimiento: un enfoque vertical (CRC Press, ISBN 9781420093131 , 2009), página 193 "8.2.4 Fundamentos históricos de RDMA"