Buenas chicos! Como comentamos en este post acerca de las novedades de vSAN 7.0U2, una de las grandes novedades era la introducción de vSAN sobre RDMA. Muchos de vosotros os preguntareis que es RDMA, por ello basta deciros, nos permite el acceso directo a memoria remota , es una tecnología que permite a los sistemas omitir la CPU, y enviar datos con menor latencia y sobrecarga de CPU. Esto nos proporciona un menor uso de CPU, y un rendimiento de almacenamiento mejorado.
Como de costumbre debemos asegurarnos que nuestros dispositivos están calificados en la guía de compatibilidad de hardware de VMware.
Requisitos
Para poder configurar RDMA en nuestro cluster de vSAN debemos de tener los siguentes requisitos:
- Disponer de la versión de ESXi 7.0U2 que contendrá la versión compatible con RDMA
- Tener una tarjeta de red que soporte la funcionalidad RDMA
- Configurar nuestros switches
Configuracion
1º Como hemos comentado uno de los primeros pasos es como mínimo tener la versión ESXI 7.0U2.

2º Por otro lado debemos de tener una tarjeta compatible con RDMA(RoCE), en mi caso tengo el siguiente modelo para realizar las pruebas
HPE Ethernet 10/25Gb 2-port 640SFP28 Adapter
Como podemos ver en la guía de compatibilidad, nuestra tarjeta de red es compatible tanto con RoCE v1 como con RoCE v2, por lo tanto podemos seguir con nuestra configuración.

3º Ahora vamos a configurar en nuestra tarjeta de red para que el tráfico RoCE no tenga perdida de paquetes, lo que conocemos como «lossless», para ello tenemos 2 maneras de configurarlo.
A) La primera forma, debemos habilitar «Priority Flow Control» (PFC) aplica la funcionalidad de pausa a clases específicas de tráfico en el enlace Ethernet. PFC puede proporcionar diferentes niveles de servicio a clases específicas de tráfico Ethernet (utilizando clases de tráfico IEEE 802.1p). En nuestro caso debemos configurar el valor de prioridad PFC en 3 en el switch físico y los hosts.
Lanzamos el siguente comando:
esxcli system module parameters set -m nmlx5_core -p "pfctx=0x08 pfcrx=0x08 trust_state=2 max_vfs=4"
B) PFC basado en DSCP es otra forma de configurar una red sin pérdidas(lossless). En switches y hosts, se debe establecer el valor DSCP en 26.
Activamos PFC y DSCP en «trust mode»
esxcli system module parameters set -m nmlx5_core -p "pfctx=0x08 pfcrx=0x08 trust_state=2"
Asignamos el valor DSCP 26
esxcli system module parameters set -m nmlx5_rdma -p "dscp_force=26"
Rebotamos el servidor
reboot
4º Ahora instalaremos las herramientas para modificar el firmware de nuestra tarjeta de red
A) Instalamos la vib
esxcli software vib install -v /vmfs/volumes/vsanDatastore/New\ folder/mft-4.16.3.12-10EM-700.0.0.15843807.x86_64.vib --no-sig-check
B) Rebotamos el servidor
reboot
5º Una vez instalado hay que realizar las siguientes modificaciones en el firmware de la tarjeta de red para poder utilizar vSAN sobre RDMA
vSAN sobre RDMA solo es compatible con DCBx IEEE no con CEE
Con este comando podríamos ver la configuracion de la tarjeta:
./opt/mellanox/bin/mlxconfig -d mt4117_pciconf0 q
Esto comando nos producirá una salida bastante mas amplia pero nos tenemos que fijar en los siguientes parámetros:
LLDP_NB_DCBX_P1 False(0) LLDP_NB_RX_MODE_P1 ALL(2) LLDP_NB_TX_MODE_P1 ALL(2) LLDP_NB_DCBX_P2 False(0) LLDP_NB_RX_MODE_P2 ALL(2) LLDP_NB_TX_MODE_P2 ALL(2) DCBX_IEEE_P1 True(1) DCBX_CEE_P1 True(1) DCBX_WILLING_P1 True(1) DCBX_IEEE_P2 True(1) DCBX_CEE_P2 True(1)
Ahora hay que modificar las configuraciones de LLDP_NB_DCBX_PX para habilitar DCBX en los puertos de la tarjeta, y deshabilitar DCBX_CEE_PX el CEE en los puertos. El comando es el siguiente:
/opt/mellanox/bin/mlxconfig -d mt4117_pciconf0 set LLDP_NB_DCBX_P1=1 LLDP_NB_DCBX_P2=1 DCBX_CEE_P1=0 DCBX_CEE_P2=0
Rebotamos el servidor
Reboot
7º Ya tendríamos toda la parte de la tarjeta de red configurada, ahora solo nos falta activar RDMA para nuestro clúster vSAN.
A) Seleccionamos el cluster-> configure->vSAN->Services y pulsamos edit

Si nos damos cuenta, nos dice que nuestros puertos de la tarjeta de red es compatible con RoCEv2,ahora solo nos queda activarlo, y darle apply.

7º Una vez hemos activado nuestro vSAN RDMA, como siempre nos iremos a nuestro vSAN Skyline Health y revisaremos que todo este verde.

Para terminar me gustaría comentar un par de cosas que no hemos hablado durante el post, una de ellas es que requerimos de una configuración en nuestros switches, para ello es importante revisar la documentación de los mismos, ya que no sirve de nada que solo lo realicemos en la configuración de nuestros host. También tenemos que recordar, que si alguno de los host que compone el clúster pierde la compatibilidad con RDMA, el clúster pasara a usar de nuevo la capa TCP.
Hasta aquí hemos llegado, espero que os haya gustado esta nueva tecnología que nos trae VMware para potenciar aun mas nuestro clúster vSAN, en el siguiente post os traeré una comparativa de rendimiento entre el uso de RDMA y la ausencia de este.
Por ultimo agradecer a mis compañeros David x2, Ienego y Marius por la revisión de este post, sin ellos no habría sido posible, nos vemos :).