Protocolo y transporte de IB: capas, QP, RDMA, gestor de subred
InfiniBand se diseñó desde el principio como una fabric para que los ordenadores accedan a la memoria de otros, no para paquetes entre desconocidos. Sus capas, direccionamiento y gestión resultan poco familiares para un ingeniero de Ethernet, pero son sencillos una vez asimilado el vocabulario — y explican por qué la capa física se somete a estándares tan exigentes. Esta página cubre la vista de protocolo; la óptica está en óptica de InfiniBand.
Capas
| Capa | Contenido | Notas |
|---|---|---|
| Física | carriles (1x, 4x, 8x, 12x), señalización por carril (de NRZ a PAM4 en HDR… ver velocidades), codificación (8B/10B hasta QDR, 64B/66B desde FDR), FEC (opcional desde FDR, RS-FEC en HDR/NDR) | el mundo del transceptor |
| Enlace | cabecera de enrutamiento local (LRH) con LID, carriles virtuales (VL0–VL14 datos, VL15 gestión), control de flujo por créditos por VL, CRC de capa de enlace (ICRC/VCRC) | sin pérdidas por diseño |
| Red | cabecera de enrutamiento global (GRH) con GID de 128 bits para enrutamiento entre subredes | poco usada dentro de un mismo clúster |
| Transporte | queue pairs (QP) con colas de envío/recepción, tipos de servicio RC/UC/UD/XRC, segmentación a la MTU, ACK/NAK para servicio fiable | aquí vive RDMA |
| Superior | API verbs, MPI, NCCL (vía UCX/SHARP), almacenamiento (SRP, iSER, NVMe/IB), IPoIB | lo que usan las aplicaciones |
Direccionamiento e identidad
| Identificador | Tamaño | Asignado por | Significado |
|---|---|---|---|
| GUID | 64 bits | fabricante | identidad permanente de un puerto, nodo o sistema (como una MAC) |
| LID (identificador local) | 16 bits | subnet manager | dirección dentro de una subred; las tablas de reenvío usan LID |
| GID | 128 bits | SM (prefijo) + GUID | prefijo de subred + GUID; se usa entre subredes y en RoCE |
| PKey (clave de partición) | 16 bits | SM | pertenencia a una partición (como una VLAN); miembros plenos/limitados |
| QPN | 24 bits | HCA | número de queue pair — el endpoint dentro de un puerto |
Queue pairs y tipos de servicio de transporte
Un queue pair es una cola de envío y una cola de recepción en la HCA, propiedad de una aplicación. Las peticiones de trabajo publicadas en ella las ejecuta el hardware; las finalizaciones (completions) llegan a una completion queue. Tipos de servicio:
| Tipo | Fiable | Conectado | Uso |
|---|---|---|---|
| RC — reliable connected | sí (ACK/NAK, retransmisión) | sí, un QP por par | la mayoría del tráfico RDMA; MPI, NCCL, almacenamiento |
| UC — unreliable connected | no | sí | poco frecuente |
| UD — unreliable datagram | no | no, un QP para todos los pares | gestión, IPoIB, multicast |
| XRC — extended reliable connected | sí | colas de recepción compartidas entre procesos | trabajos MPI grandes, para reducir el número de QP |
| RD — reliable datagram | sí | no | en la práctica no se usa |
Las operaciones RDMA (READ, WRITE, atómicas) mueven datos directamente entre los búferes de la aplicación en dos hosts sin que ninguna CPU los copie; SEND/RECEIVE transporta mensajes. La memoria debe estar registrada (fijada en memoria y con una clave asignada) antes de que la HCA pueda tocarla. GPUDirect RDMA extiende esto a la memoria de la GPU (fabrics de GPU).
Control de flujo y MTU
Cada enlace aplica control de flujo por créditos por carril virtual: el receptor anuncia el espacio de búfer disponible y el emisor nunca transmite más de lo que este puede absorber. Ningún frame se descarta por congestión; en su lugar, la contrapresión se propaga — el mismo compromiso que los créditos de Fibre Channel, y la razón por la que un único enlace lento o con errores degrada todo un trabajo. La MTU de enlace es de 256 a 4096 bytes (4096 es lo habitual); la MTU de ruta se negocia extremo a extremo. Los service levels (SL) se mapean a los VL para separar clases de tráfico, y el enrutamiento adaptativo puede desviar los flujos alrededor de enlaces congestionados.
El subnet manager
Hay exactamente un subnet manager (SM) activo por subred (los demás quedan en espera). Este:
- Descubre la topología recorriendo la fabric con paquetes de gestión de ruta dirigida (SMP en VL15/QP0) — cada puerto de switch y de HCA.
- Asigna LID y configura los puertos (velocidad, ancho, MTU, arbitraje de VL, PKeys).
- Calcula rutas — min-hop, up-down, fat-tree, dragonfly+, enrutamiento adaptativo — y programa la tabla de reenvío lineal de cada switch.
- Barre periódicamente y ante traps (puerto arriba/abajo), reenrutando alrededor de los fallos.
- Ejecuta el subnet administrator (SA), que responde a las consultas de ruta de los hosts.
OpenSM (código abierto) y los fabric managers de los fabricantes (UFM) lo implementan; el fabric manager es también donde se recopilan, a escala de flota, los errores de puerto, los resultados de negociación de velocidad/ancho de enlace y el DDM de la óptica (Fiabilidad del enlace y monitorización).
Negociación de enlace
Al levantarse el enlace, ambos extremos negocian el ancho (1x/2x/4x) y la velocidad (tasa por carril) al valor común más alto. Un enlace que sube a 2x o a una generación menos de la esperada es el equivalente en InfiniBand del «enlace a 10G en vez de 25G» de Ethernet: la fibra o el láser de un carril, un cable al límite, o una generación de transceptor no coincidente (Velocidad y tasa). El fabric manager reporta el estado negociado; ibstat / ibportstate lo muestran en un host.
Herramientas de gestión y diagnóstico
| Herramienta | Propósito |
|---|---|
ibstat, ibstatus | estado local del puerto, tasa, ancho, LID |
ibnetdiscover | volcado de la topología |
ibdiagnet | comprobación de toda la fabric: errores, discrepancias de velocidad/ancho, GUID duplicados, información de cables |
perfquery, ibqueryerrors | contadores por puerto: errores de símbolo, enlace caído, recuperación de enlace, errores de recepción de puerto, desbordamiento excesivo de búfer, VL15 descartados, contadores de FEC |
mlxlink, mlxcables | detalles de PHY por puerto y EEPROM de cable/transceptor, DDM, histograma de FEC |
ibportstate | forzar velocidad/ancho, reiniciar un puerto |
Los errores de símbolo y las recuperaciones de enlace son los contadores de la capa física — el equivalente al CRC/FEC de Ethernet, ligados a la potencia de Rx y a la limpieza (Fabric).
InfiniBand frente a RoCE en un párrafo
RoCE v2 transporta el mismo transporte verbs/RDMA sobre UDP/IP/Ethernet; sustituye el subnet manager por enrutamiento IP y las PKeys por VLAN, y sustituye el control de flujo por créditos por PFC/ECN (DCQCN) — que debe configurarse correctamente para ser sin pérdidas (Ethernet sin pérdidas, Interconexiones). Los transceptores son físicamente los mismos; solo difieren la codificación de identidad y las políticas del host.
En CodingBox
Los módulos InfiniBand se leen como cualquier QSFP/OSFP: identidad (incluidos los bits de tasa InfiniBand en el byte 164 de SFF-8636 o en las aplicaciones CMIS), DDM por carril y sumas de comprobación en Check transceiver y DDM. Un puerto que negocia por debajo de su velocidad nominal merece una lectura de banco de ambos extremos.