RDMA over Converged Ethernet ( RoCE ) [1] es un protocolo de red que permite el acceso directo a memoria remota (RDMA) a través de una red Ethernet . Existen múltiples versiones de RoCE. RoCE v1 es un protocolo de capa de enlace Ethernet y, por lo tanto, permite la comunicación entre dos hosts cualesquiera en el mismo dominio de difusión Ethernet . RoCE v2 es un protocolo de capa de Internet , lo que significa que los paquetes RoCE v2 se pueden enrutar. Aunque el protocolo RoCE se beneficia de las características de una red Ethernet convergente , el protocolo también se puede utilizar en una red Ethernet tradicional o no convergente. [2] [3] [4] [5]
Fondo
Las aplicaciones que hacen un uso intensivo de la red, como el almacenamiento en red o la computación en clúster, necesitan una infraestructura de red con un gran ancho de banda y una baja latencia. Las ventajas de RDMA sobre otras interfaces de programación de aplicaciones de red , como los sockets Berkeley, son una latencia menor, una carga de CPU menor y un mayor ancho de banda. [6] El protocolo RoCE permite latencias más bajas que su predecesor, el protocolo iWARP . [7] Hay adaptadores de canal de host (HCA) RoCE con una latencia de tan solo 1,3 microsegundos [8] [9], mientras que la latencia más baja conocida de un HCA iWARP en 2011 fue de 3 microsegundos. [10]
RoCE versión 1
El protocolo RoCE v1 es un protocolo de capa de enlace Ethernet con Ethertype 0x8915. [2] Esto significa que se aplican los límites de longitud de trama del protocolo Ethernet: 1500 bytes para una trama Ethernet normal y 9000 bytes para una trama gigante .
RoCE versión 1.5
RoCE v1.5 es un protocolo poco común, experimental y no estandarizado que se basa en el protocolo IP. RoCE v1.5 utiliza el campo de protocolo IP para diferenciar su tráfico de otros protocolos IP como TCP y UDP . El valor utilizado para el número de protocolo no se especifica y se deja a elección de la implementación.
RoCE versión 2
El protocolo RoCE v2 existe sobre el protocolo UDP/IPv4 o el protocolo UDP/IPv6. [3] El número de puerto de destino UDP 4791 se ha reservado para RoCE v2. [11] Dado que los paquetes RoCEv2 son enrutables, el protocolo RoCE v2 a veces se denomina RoCE enrutable [12] o RRoCE. [4] Aunque en general no se garantiza el orden de entrega de los paquetes UDP, la especificación RoCEv2 requiere que los paquetes con el mismo puerto de origen UDP y la misma dirección de destino no se reordenen. [4] Además, RoCEv2 define un mecanismo de control de congestión que utiliza los bits ECN de IP para marcar y los marcos CNP [13] para la notificación de acuse de recibo. [14] El soporte de software para RoCE v2 aún está surgiendo [ ¿cuándo? ] . Mellanox OFED 2.3 o posterior tiene soporte para RoCE v2 y también Linux Kernel v4.5. [15]
RoCE frente a InfiniBand
RoCE define cómo ejecutar RDMA sobre Ethernet , mientras que la especificación de arquitectura InfiniBand define cómo ejecutar RDMA sobre una red InfiniBand. Se esperaba que RoCE incorporara aplicaciones InfiniBand, que se basan predominantemente en clústeres, a una estructura convergente Ethernet común. [16] Otros esperaban que InfiniBand siguiera ofreciendo un mayor ancho de banda y una menor latencia de lo que es posible a través de Ethernet. [17]
Las diferencias técnicas entre los protocolos RoCE e InfiniBand son:
Control de flujo a nivel de enlace: InfiniBand utiliza un algoritmo basado en créditos para garantizar una comunicación HCA a HCA sin pérdidas. RoCE se ejecuta sobre Ethernet. Las implementaciones pueden requerir una red Ethernet sin pérdidas para alcanzar características de rendimiento similares a las de InfiniBand. La Ethernet sin pérdidas se configura normalmente a través del control de flujo Ethernet o el control de flujo prioritario (PFC). Configurar una red Ethernet de puente de centro de datos (DCB) puede ser más complejo que configurar una red InfiniBand. [18]
Control de congestión: Infiniband define el control de congestión basado en el marcado FECN/BECN, RoCEv2 define un protocolo de control de congestión que utiliza ECN para el marcado tal como se implementa en conmutadores estándar y tramas CNP para reconocimientos.
Los conmutadores InfiniBand suelen tener una latencia menor que los conmutadores Ethernet. La latencia de puerto a puerto para un tipo particular de conmutador Ethernet es de 230 ns [19] frente a los 100 ns [20] de un conmutador InfiniBand con la misma cantidad de puertos.
RoCE frente a iWARP
Mientras que los protocolos RoCE definen cómo realizar RDMA utilizando tramas Ethernet y UDP/IP, el protocolo iWARP define cómo realizar RDMA sobre un transporte orientado a conexión como el Protocolo de Control de Transmisión (TCP). RoCE v1 está limitado a un único dominio de difusión Ethernet . Los paquetes RoCE v2 e iWARP son enrutables. Los requisitos de memoria de una gran cantidad de conexiones junto con los controles de flujo y confiabilidad de TCP conducen a problemas de escalabilidad y rendimiento cuando se utiliza iWARP en centros de datos de gran escala y para aplicaciones de gran escala (es decir, empresas de gran escala, computación en la nube, aplicaciones web 2.0, etc. [21] ). Además, la multidifusión se define en la especificación RoCE, mientras que la especificación iWARP actual no define cómo realizar RDMA de multidifusión. [22] [23] [24]
La confiabilidad en iWARP está dada por el propio protocolo, ya que TCP es confiable. RoCEv2, por otro lado, utiliza UDP , que tiene una sobrecarga mucho menor y un mejor rendimiento, pero no proporciona una confiabilidad inherente, y por lo tanto, la confiabilidad debe implementarse junto con RoCEv2. Una solución es utilizar conmutadores Ethernet convergentes para que la red de área local sea confiable. Esto requiere soporte Ethernet convergente en todos los conmutadores de la red de área local y evita que los paquetes RoCEv2 viajen a través de una red de área amplia como Internet, que no es confiable. Otra solución es agregar confiabilidad al protocolo RoCE (es decir, RoCE confiable), que agrega protocolo de enlace a RoCE para brindar confiabilidad a costa del rendimiento.
La cuestión de qué protocolo es mejor depende del proveedor. Chelsio recomienda y admite exclusivamente iWARP. Mellanox, Xilinx y Broadcom recomiendan y admiten exclusivamente RoCE/RoCEv2. Intel inicialmente admitía iWARP, pero ahora admite tanto iWARP como RoCEv2. [25] Otros proveedores involucrados en la industria de redes brindan soporte para ambos protocolos, como Marvell, Microsoft, Linux y Kazan. [26] Cisco admite tanto RoCE [27] como su propio protocolo VIC RDMA.
Ambos protocolos están estandarizados, siendo iWARP el estándar para RDMA sobre TCP definido por el IETF y RoCE el estándar para RDMA sobre Ethernet definido por la IBTA . [26]
Crítica
Se han omitido algunos aspectos que podrían haberse definido en la especificación RoCE. Estos son:
Cómo traducir entre los GID primarios de RoCE v1 y las direcciones MAC de Ethernet . [28]
Cómo traducir entre GID secundarios de RoCE v1 y direcciones MAC de Ethernet. No está claro si es posible implementar GID secundarios en el protocolo RoCE v1 sin agregar un protocolo de resolución de direcciones específico de RoCE.
Cómo implementar VLAN para el protocolo RoCE v1. Las implementaciones actuales de RoCE v1 almacenan el ID de VLAN en el duodécimo y decimotercero byte del GID de dieciséis bytes, aunque la especificación de RoCE v1 no menciona las VLAN en absoluto. [29]
Cómo traducir entre los GID de multidifusión RoCE v1 y las direcciones MAC de Ethernet. Las implementaciones de 2010 utilizaron la misma asignación de direcciones que se especificó para asignar direcciones de multidifusión IPv6 a direcciones MAC de Ethernet. [30] [31]
Cómo restringir el tráfico de multidifusión de RoCE v1 a un subconjunto de los puertos de un conmutador Ethernet. A fecha de septiembre de 2013, todavía no se había definido un equivalente del protocolo Multicast Listener Discovery para RoCE v1.
Además, cualquier protocolo que se ejecute sobre IP no puede asumir que la red subyacente tiene un ordenamiento garantizado, como tampoco puede asumir que no puede ocurrir congestión.
Se sabe que el uso de PFC puede provocar un bloqueo en toda la red. [32] [33] [34]
Vendedores
Algunos proveedores de equipos habilitados para RoCE incluyen:
Mellanox (adquirida por Nvidia en 2020, [35] marca conservada [36] )
^ "Blog de Roland » Archivo del blog » Dos notas sobre IBoE".
^ ab "InfiniBand™ Architecture Specification Release 1.2.1 Annex A16: RoCE". Asociación Comercial InfiniBand . 13 de abril de 2010. Archivado desde el original el 9 de marzo de 2016. Consultado el 29 de abril de 2015 .
^ ab "InfiniBand™ Architecture Specification Release 1.2.1 Annex A17: RoCEv2". Asociación Comercial de InfiniBand . 2 de septiembre de 2014. Archivado desde el original el 17 de septiembre de 2020. Consultado el 19 de octubre de 2014 .
^ abc Ophir Maor (diciembre de 2015). "Consideraciones sobre RoCEv2". Mellanox .
^ Ophir Maor (diciembre de 2015). "RoCE y soluciones de almacenamiento". Mellanox .
^ Feldman, Michael (22 de abril de 2010). "RoCE: una historia de amor entre Ethernet e InfiniBand". HPC wire .
^ "Solución Ethernet de extremo a extremo con la menor latencia para servicios financieros" (PDF) . Mellanox . Marzo de 2011.
^ "Análisis competitivo de RoCE vs. iWARP" (PDF) . Mellanox . 9 de noviembre de 2010.
^ "Conectividad de servidor de baja latencia con el nuevo adaptador Terminator 4 (T4)". Chelsio . 25 de mayo de 2011.
^ Diego Crupnicoff (17 de octubre de 2014). «Registro de números de puerto de protocolo de transporte y nombres de servicio». IANA . Consultado el 14 de octubre de 2018 .
^ Asociación de Comercio InfiniBand (noviembre de 2013). "Estado y planes de RoCE" (PDF) . IETF .
^ Ophir Maor (diciembre de 2015). "Formato de paquete CNP RoCEv2". Mellanox .
^ Ophir Maor (diciembre de 2015). "Gestión de la congestión RoCEv2". Mellanox .
^ "Kernel GIT". Enero de 2016.
^ Merritt, Rick (19 de abril de 2010). "Nueva red convergente que combina Ethernet e InfiniBand". EE Times .
^ Kerner, Sean Michael (2 de abril de 2010). "¿InfiniBand se traslada a Ethernet?". Enterprise Networking Planet .
^ Mellanox (2 de junio de 2014). "Mellanox lanza un nuevo software de automatización para reducir el tiempo de instalación de la red Ethernet de horas a minutos". Mellanox . Archivado desde el original el 3 de marzo de 2016.
^ "SX1036 - Sistema de conmutación de 36 puertos 40/56 GbE". Mellanox . Consultado el 21 de abril de 2014 .
^ "IS5024 - Sistema de conmutación InfiniBand de 40 Gb/s sin bloqueo y sin gestión de 36 puertos". Mellanox . Consultado el 21 de abril de 2014 .
^ Rashti, Mohammad (2010). "iWARP redefinido: comunicación escalable sin conexión a través de Ethernet de alta velocidad" (PDF) . Conferencia internacional sobre computación de alto rendimiento (HiPC) .
^ H. Shah; et al. (octubre de 2007). "Colocación directa de datos en transportes fiables". RFC 5041. doi : 10.17487/RFC5041 . Consultado el 4 de mayo de 2011 .
^ C. Bestler; et al. (octubre de 2007). Bestler, C.; Stewart, R. (eds.). "Adaptación de la colocación directa de datos (DDP) del protocolo de transmisión de control de flujo (SCTP)". RFC 5043 . doi : 10.17487/RFC5043 . Consultado el 4 de mayo de 2011 .
^ P. Culley; et al. (octubre de 2007). "Marker PDU Aligned Framing for TCP Specification" (Encuadre alineado con PDU de marcador para especificación TCP). RFC 5044. doi : 10.17487/RFC5044 . Consultado el 4 de mayo de 2011 .
^ "Serie Intel® Ethernet 800". Intel. Mayo de 2021.
^ ab T Lustig; F Zhang; J Ko (octubre de 2007). «RoCE vs. iWARP: el próximo «gran debate sobre almacenamiento»». Archivado desde el original el 20 de mayo de 2019. Consultado el 22 de agosto de 2018 .
^ "Beneficios del acceso directo remoto a la memoria a través de estructuras enrutadas" (PDF) . Cisco. Octubre de 2018.
^ Dreier, Roland (6 de diciembre de 2010). "Dos notas sobre IBoE". El blog de Roland Dreier .
^ Cohen, Eli (26 de agosto de 2010). "IB/core: Agregar soporte VLAN para IBoE". kernel.org .
^ Cohen, Eli (13 de octubre de 2010). "RDMA/cm: Añadir compatibilidad con RDMA CM para dispositivos IBoE". kernel.org .
^ Crawford, M. (1998). "RFC 2464 - Transmisión de paquetes IPv6 a través de redes Ethernet". IETF . doi : 10.17487/RFC2464 .
^ Hu, Shuihai; Zhu, Yibo; Cheng, Peng; Guo, Chuanxiong; Tan, Kun; Padhye1, Jitendra; Chen, Kai (2016). Interbloqueos en redes de centros de datos: por qué se forman y cómo evitarlos (PDF) . 15.º Taller de la ACM sobre temas de actualidad en redes. págs. 92–98.{{cite conference}}: CS1 maint: nombres numéricos: lista de autores ( enlace )
^ Shpiner, Alex; Zahavi, Eitan; Zdornov, Vladimir; Anker, Tal; Kadosh, Matty (2016). Desbloqueo de bloqueos en el ciclo crediticio. XV Taller de la ACM sobre temas de actualidad en redes. págs. 85–91.
^ Mittal, Radhika; Shpiner, Alejandro; Panda, Aurojit; Zahavi, Eitan; Krishnamurthy, Arvind; Ratnasamy, Sylvia; Shenker, Scott (21 de junio de 2018). "Revisando el soporte de red para RDMA". arXiv : 1806.08159 [cs.NI].
^ "Nvidia: el acuerdo con Mellanox podría no cerrarse hasta principios de 2020". 14 de noviembre de 2019.
^ "El ecosistema de inteligencia artificial de Israel celebra la propuesta de adquisición de Mellanox por parte de NVIDIA | Blog de NVIDIA". 27 de marzo de 2019.
^ "Grovf Inc. lanza el núcleo IP FPGA RoCE V2 RDMA de baja latencia para NIC inteligentes". Yahoo News .