2012-09-26 26 views
5

Gibt es irgendein Dienstprogramm wie tcpdump in Linux für die Erfassung des Verkehrs, der über RDMA-Kanal geht? (Infiniband/RoCE/iWARP)Paketerfassung in RDMA?

+0

Wie lösen Sie dieses Problem endlich? – Djvu

+1

ibdump arbeitete für mich wie von @ kliteyn vorgeschlagen Welche Art von Paketen suchen Sie? Ich machte RMDA_WRITE_WITH_IMMIDIATE und ich konnte alle Pakete sehen. – dhavale

+1

Ich möchte nur begründen, ob es ein RDMA-Paket gibt, das zum Netzwerk ausgeht. Aber wenn ich den ibddump benutze, habe ich nur ein sehr kleines Paket erfasst, wie 2 Pakete, die von ibddump gezeigt wurden. aber ich sende eine Menge Daten. Ich frage mich auch die Bedeutung der Pakete von ibdump erfasst, ist es nur für den Verbindungsaufbau, nicht enthalten die Daten senden? – Djvu

Antwort

7

Alt Faden, aber immer noch:

Wie Roland wies darauf hin, Schnupfen RDMA Verkehr heikel ist, denn wenn die Endpunkte der anfänglichen Handshake haben, Verkehr durch Netzwerkkarte (HCA) geht direkt in den Speicher. Die einzige Möglichkeit, diesen Datenverkehr zu erfassen, ohne einen dedizierten HW-Sniffer auf die Verbindung zu setzen, sind herstellerspezifische Hooks in der Netzwerkkarte und ein SW-Tool, das diese Hooks verwendet.

Wenn Sie Mellanox HCAs haben, you can use the "ibdump" tool. Dieses Tool ist auch Teil des Mellanox OFED-Pakets.

Wenn Sie die Hardware eines anderen Anbieters haben, müssen Sie sich bei diesem Anbieter erkundigen - Sie werden keinen Open Source-Paket-Sniffer für alle RDMA-fähigen Geräte finden, tut mir leid.

+0

Ich denke deine Antwort passt am besten. Ich habe gelernt, dass jeder Anbieter Dienstprogramm zur Paketerfassung auf seinem HCA verfügbar machen muss. Ich habe derzeit nur mit Mellanox HCA zu tun und Sie haben Recht, "ibdump" ist die Antwort dafür. Ich habe es jetzt ausprobiert und es macht das Capturen. Ich habe jedoch herausgefunden, dass es nur RDMA-Operation-Header und nicht die Nutzlast selbst protokolliert. Ich weiß nicht, ob das das Verhalten standardmäßig ist oder ich meine Pakete aktualisieren muss. Aber im Wesentlichen funktioniert "ibdump" und es ist das, wonach ich gesucht habe, als ich die Frage gestellt habe. Vielen Dank! – dhavale

+0

@kliteyn Aber warum das von ibdump erfasste Paket so klein ist, sende ich viel Paket, aber es hat nur ein paar Pakete kaputt gemacht. – Djvu

3

In der Regel keine. Eine der Haupteigenschaften von RDMA ist, dass die gesamte Netzwerkverarbeitung auf dem Adapter erfolgt, ohne dass die CPU überhaupt beteiligt ist. Normalerweise werden Arbeitsanforderungen direkt vom Benutzerbereich an den Adapter ohne Systemaufruf eingereiht. Es gibt also keinen Ort, an den sich ein Sniffer einklinken könnte, um Traffic zu bekommen.

Mit dem gesagt, für Ethernet-Protokolle, iWARP oder IBoE (alias RoCE), können Sie ein System in der Mitte einer Verbindung anschließen und es für die Weiterleitung in Software (z. B. das Linux-Bridge-Modul) und dann tun Führen Sie tcpdump oder wireshark aus, um den RDMA-Verkehr zu erfassen, der dieses System durchläuft. Wireshark hat sogar Dissektoren für iWARP und IBoE.

Für native InfiniBand ist es theoretisch möglich, etwas ähnliches aufzubauen (einen Adapter zum Erfassen und Weiterleiten von Datenverkehr einzurichten), aber soweit ich weiß, hat niemand die benötigte Firmware oder den Treiber für einfaches Paket-Sniffing verwendet.

+0

Vielen Dank Roland für Ihre Eingabe! Ich werde erkunden, mit Linux-Brücke zu schnüffeln. Ich habe verstanden, dass Pakete direkt aus dem Userspace in die Warteschlange gestellt werden und deshalb gibt es keinen Platz zum Abfangen. Ich benutze ib_post_send() vom Kernel, um die Arbeitsanforderungen in die Warteschlange zu stellen, also dachte ich, dass es einen Platz in der Implementierung geben könnte, um zu wissen, dass das Paket an einen anderen Knoten gesendet wurde. Ich weiß nicht, ob das ohne Firmware-Unterstützung möglich ist, vielleicht, wenn Sie ein Event auf CQ bekommen? Der Hauptgrund für diese Frage ist, wenn ich die Daten im Empfänger nicht sehe, müssen wir einen Weg finden zu sagen, welcher RNIC fehlerhaft ist, Absender oder Empfänger? – dhavale

2

Das T4-Gerät von Chelsio unterstützt eine Paketverfolgungsfunktion, mit der es Ingress/Egress-Offload-Pakete in eine der NIC-Warteschlangen des Geräts replizieren kann. Dann können Sie tcpdump oder was auch immer auf dieser ethX-Schnittstelle verwenden, um die RDMA- oder TOE-Pakete zu sehen.

+0

Danke Steve! Ich werde mit meinem Hardware-Anbieter (Mellanox) überprüfen, ob sie etwas ähnliches unterstützen. – dhavale

0

Wireshark kann derjenige sein. Aber das Problem ist, dass Sie einen Beobachtungsserver brauchen. Wenn Sie die Mirror-Funktion aktivieren, sollten Sie in der Lage sein, die ROCE-Tasche beim Beobachter zu empfangen.