Cloudflare ha pubblicato xdpcap, un analizzatore di traffico basato sul sottosistema XDP

Azienda Cloudflare presentato progetto aperto xdpcap, all'interno del quale è in fase di sviluppo un analizzatore di pacchetti di rete simile a tcpdump, costruito sulla base del sottosistema XDP (Percorso dati eXpress). Il codice del progetto è scritto in Go and distribuito da sotto licenza BSD. Anche il progetto preparato libreria per associare i gestori del traffico eBPF dalle applicazioni Go.

L'utilità xdpcap è compatibile con le espressioni di filtro tcpdump/libpcap e consente di elaborare volumi di traffico significativamente più grandi sullo stesso hardware. Xdpcap può essere utilizzato anche per il debug in ambienti in cui il normale tcpdump non è applicabile, come filtraggio, protezione DoS e sistemi di bilanciamento del carico che utilizzano il sottosistema XDP del kernel Linux, che elabora i pacchetti prima che vengano elaborati dallo stack di rete del kernel Linux (tcpdump non vede i pacchetti scartati dal gestore XDP).

Le prestazioni elevate si ottengono attraverso l'uso dei sottosistemi eBPF e XDP. eBPF è un interprete di bytecode integrato nel kernel Linux che consente di creare gestori ad alte prestazioni di pacchetti in entrata/uscita con decisioni sull'inoltro o sull'eliminazione degli stessi. Utilizzando un compilatore JIT, il bytecode eBPF viene tradotto al volo in istruzioni macchina ed eseguito con l'esecuzione del codice nativo. Il sottosistema XDP (eXpress Data Path) integra eBPF con la capacità di eseguire programmi BPF a livello di driver di rete, con supporto per l'accesso diretto al buffer dei pacchetti DMA e funziona nella fase precedente all'allocazione del buffer skbuff dallo stack di rete.

Come tcpdump, l'utilità xdpcap traduce prima le regole di filtraggio del traffico di alto livello nella classica rappresentazione BPF (cBPF) utilizzando la libreria libpcap standard, quindi le converte sotto forma di routine eBPF utilizzando un compilatore cbpfc, utilizzando gli sviluppi LLVM/Clang. All'uscita, le informazioni sul traffico vengono salvate nel formato standard pcap, che consente di utilizzare un dump del traffico preparato in xdpcap per il successivo studio in tcpdump e altri analizzatori di traffico esistenti. Ad esempio, per acquisire informazioni sul traffico DNS, invece di utilizzare il comando "tcpdump ip and udp port 53", è possibile eseguire "xdpcap /path/to/hook capture.pcap 'ip and udp port 53′" e quindi utilizzare un'acquisizione .pcap, ad esempio con il comando "tcpdump -r" o in Wireshark.

Fonte: opennet.ru

Aggiungi un commento