Cloudflare offenes Projekt , im Rahmen dessen ein Àhnlicher Netzwerkpaketanalyse-Tool wie tcpdump entwickelt wird, basierend auf dem Subsystem (eXpress Data Path). Der Projektcode ist in der Sprache Go geschrieben und unter der BSD-Lizenz. Das Projekt beinhaltet auch eine Bibliothek zur Anbindung von eBPF-Verkehrsverarbeitern aus Anwendungen in der Programmiersprache Go.
Das Tool xdpcap ist kompatibel mit den FilterausdrĂŒcken von tcpdump/libpcap und ermöglicht die Verarbeitung von wesentlich gröĂeren Verkehrsvolumen auf derselben Hardware. Xdpcap kann auch zur Fehlersuche unter Bedingungen verwendet werden, in denen herkömmliches tcpdump nicht anwendbar ist, beispielsweise wenn Filter- und Schutzsysteme gegen DoS-Angriffe sowie Lastenausgleich eingesetzt werden, die das Linux-Kernel-XDP-Subsystem verwenden, um Pakete in der Phase vor deren Verarbeitung durch den Netzwerkkernel-Stack zu verarbeiten (tcpdump sieht keine Pakete, die vom XDP-Handler verworfen werden).
Hohe Leistung wird durch den Einsatz der eBPF- und XDP-Subsysteme erreicht. eBPF ist ein im Linux-Kernel integrierter Bytecode-Interpreter, der es ermöglicht, leistungsstarke Verarbeiter von eingehenden/ausgehenden Paketen zu erstellen, die Entscheidungen ĂŒber deren Umleitung oder Verwerfung treffen. Mithilfe eines JIT-Compilers wird der eBPF-Bytecode zur Laufzeit in Maschinenbefehle ĂŒbersetzt und mit der Leistung von nativen Code ausgefĂŒhrt. Das XDP-Subsystem (eXpress Data Path) ergĂ€nzt eBPF, indem es die AusfĂŒhrung von BPF-Programmen auf der Ebene des Netzwerktreibers ermöglicht, mit UnterstĂŒtzung fĂŒr den direkten Zugriff auf den DMA-Paketpuffer und die Arbeit in der Phase vor der Zuweisung des skbuff-Puffers durch den Netzwerkstack.
Wie tcpdump ĂŒbersetzt das Tool xdpcap zunĂ€chst hochrangige Filterregeln in die klassische BPF-Darstellung (cBPF) mit der Standardbibliothek libpcap, bevor es sie in Form von eBPF-Unterprogrammen transformiert, wobei der Compiler , der auf Technologien von LLVM/Clang basiert, verwendet wird. Am Ende werden die Verkehrsdetails im Standardformat pcap gespeichert, was es ermöglicht, den in xdpcap erstellten Verkehrs-Dump fĂŒr weitere Analysen in tcpdump und anderen bestehenden Verkehrsanalysatoren zu verwenden. Zum Beispiel kann man zur Erfassung von DNS-Verkehrsinformationen anstelle des Kommandos âtcpdump ip and udp port 53â den Befehl âxdpcap /path/to/hook capture.pcap âip and udp port 53ââ ausfĂŒhren, wonach die Datei capture.pcap z.B. mit dem Befehl âtcpdump -râ oder in Wireshark verwendet werden kann.
Quelle: opennet.ru
