Cloudflare hat xdpcap veröffentlicht, einen Verkehrsanalysator, der auf dem XDP-Subsystem basiert

Cloudflare-Unternehmen präsentiert offenes Projekt xdpcap, innerhalb dessen ein Netzwerkpaketanalysator ähnlich wie tcpdump entwickelt wird, der auf dem Subsystem basiert XDP (eXpress-Datenpfad). Der Projektcode ist in Go und geschrieben vertrieben von unter BSD-Lizenz. Das Projekt auch vorbereitet von Bibliothek zum Binden von eBPF-Verkehrshandlern aus Go-Anwendungen.

Das Dienstprogramm xdpcap ist mit den Filterausdrücken tcpdump/libpcap kompatibel und ermöglicht Ihnen die Verarbeitung deutlich größerer Datenverkehrsmengen auf derselben Hardware. Xdpcap kann auch zum Debuggen in Umgebungen verwendet werden, in denen reguläres tcpdump nicht anwendbar ist, z. B. Filter-, DoS-Schutz- und Lastausgleichssysteme, die das Linux-Kernel-XDP-Subsystem verwenden, das Pakete verarbeitet, bevor sie vom Linux-Kernel-Netzwerkstapel (tcpdump) verarbeitet werden sieht keine vom XDP-Handler verworfenen Pakete).

Durch den Einsatz von eBPF- und XDP-Subsystemen wird eine hohe Leistung erreicht. eBPF ist ein in den Linux-Kernel integrierter Bytecode-Interpreter, der es Ihnen ermöglicht, leistungsstarke Handler für eingehende/ausgehende Pakete mit Entscheidungen über deren Weiterleitung oder Verwerfung zu erstellen. Mithilfe eines JIT-Compilers wird der eBPF-Bytecode im Handumdrehen in Maschinenanweisungen übersetzt und mit der Leistung von nativem Code ausgeführt. Das XDP-Subsystem (eXpress Data Path) ergänzt eBPF durch die Möglichkeit, BPF-Programme auf Netzwerktreiberebene auszuführen, 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 Netzwerkstapel.

Wie tcpdump übersetzt das Dienstprogramm xdpcap zunächst High-Level-Traffic-Filterungsregeln mithilfe der Standardbibliothek libpcap in die klassische BPF-Darstellung (cBPF) und konvertiert sie dann mithilfe eines Compilers in die Form von eBPF-Routinen cbpfc, unter Verwendung von LLVM/Clang-Entwicklungen. Bei der Ausgabe werden Verkehrsinformationen im Standard-PCAP-Format gespeichert, sodass Sie einen in xdpcap vorbereiteten Verkehrsspeicherauszug für die anschließende Untersuchung in tcpdump und anderen vorhandenen Verkehrsanalysatoren verwenden können. Um beispielsweise DNS-Verkehrsinformationen zu erfassen, können Sie statt des Befehls „tcpdump ip and udp port 53“ auch „xdpcap /path/to/hook capture.pcap 'ip and udp port 53′“ ausführen und dann eine Erfassung verwenden .pcap-Datei, z.B. mit dem Befehl „tcpdump -r“ oder in Wireshark.

Source: opennet.ru

Kommentar hinzufügen