2012-09-26 9 views
5

¿Existe alguna utilidad como tcpdump en Linux para capturar el tráfico que pasa por el canal RDMA? (Infiniband/RoCE/iWARP)¿Captura de paquetes en RDMA?

+0

¿Cómo resuelves este problema finalmente? – Djvu

+1

ibdump funcionó para mí según lo sugerido por @kliteyn ¿Qué tipo de paquetes estás buscando? Estaba haciendo RMDA_WRITE_WITH_IMMIDIATE y pude ver todos los paquetes. – dhavale

+1

Solo quiero justificar si hay algún paquete RDMA fuera de la red. Pero cuando uso el ibdump, capté solo un paquete muy pequeño, como 2 paquetes mostrados por ibdump. pero envío muchos datos. También me pregunto el significado de los paquetes capturados por ibdump, ¿es solo para la configuración de la conexión, no contiene el envío de datos? – Djvu

Respuesta

7

hilo viejo, pero aún así:

Como se señaló Roland, olfateando el tráfico RDMA es complicado, porque una vez que los puntos finales hicieron el saludo inicial, el tráfico pasa a través de la tarjeta de red (HCA) directamente a la memoria. La única manera de olfatear este tráfico sin poner un detector de HW dedicado en el cable es tener ganchos específicos del vendedor en la tarjeta de red y una herramienta de SW que use estos ganchos.

Si tiene Mellanox HCAs, you can use the "ibdump" tool. Esta herramienta también forma parte del paquete OFED de Mellanox.

Si tiene HW de otro proveedor, debe consultar con ese proveedor; no encontrará ningún analizador de paquetes de fuente abierta para todos los dispositivos con capacidad RDMA, lo siento.

+0

Creo que su respuesta es la mejor. Aprendí que cada proveedor debe hacer que la utilidad esté disponible para la captura de paquetes en su HCA. Actualmente solo estoy tratando con Mellanox HCA y tienes razón, "ibdump" es la respuesta para esto. Lo he intentado ahora y hace la captura. Sin embargo, he descubierto que registra solo los encabezados de operación RDMA y no la carga útil en sí. No sé si ese es el comportamiento por defecto o necesito actualizar mis paquetes. Pero en esencia, "ibdump" funciona y es lo que estaba buscando cuando hice la pregunta. ¡Gracias! – dhavale

+0

@kliteyn Pero por qué el paquete capturado por ibdump es tan poco, envío un montón de paquetes, pero solo contenía algunos paquetes. – Djvu

3

En general, no. Una de las principales características de RDMA es que todo el procesamiento de la red se realiza en el adaptador, sin involucrar a la CPU en absoluto. Normalmente, las solicitudes de trabajo se ponen en cola directamente desde el espacio de usuario al adaptador, sin ninguna llamada al sistema. Así que no hay ningún lugar para que un rastreador se enganche para obtener tráfico.

Dicho esto, para los protocolos de Ethernet, iWARP o IBoE (también conocido como RoCE), puede conectar un sistema en el medio de una conexión y configurarlo para reenviar en el software (por ejemplo, el módulo puente de Linux) y luego ejecute tcpdump o wireshark para capturar el tráfico RDMA que pasa a través de este sistema. Wireshark incluso tiene disectores para iWARP e IBoE.

Para el InfiniBand nativo, teóricamente es posible construir algo similar (configurar un adaptador para capturar y reenviar tráfico) pero, hasta donde yo sé, nadie ha hecho incluso el firmware o el trabajo del controlador necesarios para hacer sniffing básico de paquetes.

+0

¡Gracias Roland por su aporte! Exploraré el uso de Linux bridge para husmear. Entendí que los paquetes están en cola directamente desde el espacio de usuario y es por eso que no hay lugar para interceptar. Estoy usando ib_post_send() desde kernel para poner en cola las solicitudes de trabajo, así que pensé que podría haber algún lugar dentro de la implementación para saber que ese paquete se envió a otro nodo. No sé si esto es posible sin un soporte de firmware, ¿puede ser cuando obtienes un evento en CQ? La razón principal de esta pregunta es cuando no veo los datos en el receptor, necesitamos una manera de decir qué RNIC tiene la culpa, el remitente o el receptor. – dhavale

2

El dispositivo T4 de Chelsio admite una característica de rastreo de paquetes que le permite replicar los paquetes de descarga de entrada/salida a una de las colas de NIC del dispositivo. Luego puede usar tcpdump o lo que sea en esa interfaz ethX para ver los paquetes RDMA o TOE.

+0

¡Gracias, Steve! Verificaré con mi proveedor de hardware (Mellanox) si admiten algo similar. – dhavale

0

Wireshark puede ser el indicado. Pero el problema es que necesitas un servidor de observación. Habilitando la función espejo, debería poder recibir el bolsillo ROCE en el observador.