Cloudflare a publié xdpcap, un analyseur de trafic basé sur le sous-système XDP

Société Cloudflare présenté projet ouvert xdpcap, au sein duquel un analyseur de paquets réseau similaire à tcpdump est développé, construit sur la base du sous-système XDP (Chemin de données eXpress). Le code du projet est écrit en Go et distribué par sous licence BSD. Le projet également préparé par bibliothèque pour lier les gestionnaires de trafic eBPF des applications Go.

L'utilitaire xdpcap est compatible avec les expressions de filtrage tcpdump/libpcap et vous permet de traiter des volumes de trafic nettement plus importants sur le même matériel. Xdpcap peut également être utilisé pour le débogage dans des environnements où tcpdump standard n'est pas applicable, tels que les systèmes de filtrage, de protection DoS et d'équilibrage de charge qui utilisent le sous-système XDP du noyau Linux, qui traite les paquets avant qu'ils ne soient traités par la pile réseau du noyau Linux (tcpdump ne voit pas les paquets abandonnés par le gestionnaire XDP).

Des performances élevées sont obtenues grâce à l'utilisation des sous-systèmes eBPF et XDP. eBPF est un interpréteur de bytecode intégré au noyau Linux qui vous permet de créer des gestionnaires hautes performances de paquets entrants/sortants avec des décisions concernant leur transfert ou leur rejet. À l'aide d'un compilateur JIT, le bytecode eBPF est traduit à la volée en instructions machine et exécuté avec les performances du code natif. Le sous-système XDP (eXpress Data Path) complète eBPF avec la possibilité d'exécuter des programmes BPF au niveau du pilote réseau, avec prise en charge de l'accès direct au tampon de paquets DMA et de travailler avant que le tampon skbuff ne soit alloué par la pile réseau.

Comme tcpdump, l'utilitaire xdpcap traduit d'abord les règles de filtrage du trafic de haut niveau en représentation BPF classique (cBPF) à l'aide de la bibliothèque libpcap standard, puis les convertit sous la forme de routines eBPF à l'aide d'un compilateur. cbpfc, en utilisant les développements LLVM/Clang. En sortie, les informations sur le trafic sont enregistrées au format pcap standard, ce qui vous permet d'utiliser un vidage de trafic préparé dans xdpcap pour une étude ultérieure dans tcpdump et d'autres analyseurs de trafic existants. Par exemple, pour capturer les informations de trafic DNS, au lieu d'utiliser la commande "tcpdump ip and udp port 53", vous pouvez exécuter "xdpcap /path/to/hook capture.pcap 'ip and udp port 53′", puis utiliser une capture Fichier .pcap, par exemple avec la commande "tcpdump -r" ou dans Wireshark.

Source: opennet.ru

Ajouter un commentaire