NVMe sobre TCP: la última locura de un ingeniero de Oracle
Alan Adamson es el nombre del ingeniero de Oracle que se ha encargado de este proyecto. Él trabaja para el desarrollo del kernel de Linux para la distro de esta empresa, y ahora ha conseguido una introducción al a conexión de almacenamiento flash NVMe mediante TCP.
Oracle Linux UEK5 es la versión que introdujo NVMe sobre Fabrics, permitiendo así transferir comandos de almacenamiento NVMe a través de redes como la Infiniband o Ethernet usando RDMA, ambas ampliamente utilizadas en HPC y centros de datos. En la versión UEK5U1 se extendió ese soporte para soportar también canales de fibra óptica.
Ahora en la UEK6 se presenta esta nueva NVMe sobre TCP, que nuevamente extiende lo anterior para soportar Ethernet estándar sin tener que comprar hardware de red espacial compatible con tecnología RDMA.
Ahora bien, si te estás preguntando qué es eso de NVMe sobre TCP, deberías saber que el modelo de colas múltiples de NVMe implementa hasta 64.000 colas de envío y finalización de E/S, así como una cola de envío de administración y una de finalización dentro de cada controlador NVMe. Para un controlador NVMe conectado por PCIe, esas colas se implementan mediante memoria del host y son compartidas tanto por las CPUs del host como por el controlador NVMe.
La E/S se envía a un dispositivo NVMe cuando el controlador del dispositivo escribe un comando en una cola de envío y luego escribe un registro para notificar al dispositivo de este evento. Cuando se completa el comando, el dispositivo escribe en una cola de finalización de E/S y genera una interrupción para notificar al controlador del dispositivo que ha terminado.
Con NVMe over Fabrics se amplia ese esquema básico para colas de envío y finalización en la memoria del host para que se puedan duplicar también en un controlador remoto, de modo que un par de colas basadas en un host se asignen a un par de colas basadas en controlador. Algo que para un PC es absurdo pero que para equipos HPC y servidores puede ser interesantísimo para comunicación remota entre nodos…