Cloudflare ha publicat xdpcap, un analitzador de trànsit basat en el subsistema XDP

Empresa Cloudflare presentat projecte obert xdpcap, dins del qual s'està desenvolupant un analitzador de paquets de xarxa similar a tcpdump, construït sobre la base del subsistema XDP (Camí de dades eXpress). El codi del projecte està escrit a Go i Distribuït per sota llicència BSD. El projecte també preparat biblioteca per vincular gestors de trànsit eBPF des d'aplicacions Go.

La utilitat xdpcap és compatible amb les expressions de filtratge tcpdump/libpcap i us permet processar volums de trànsit significativament més grans al mateix maquinari. Xdpcap també es pot utilitzar per a la depuració en entorns on tcpdump normal no és aplicable, com ara sistemes de filtratge, protecció DoS i equilibri de càrrega que utilitzen el subsistema XDP del nucli de Linux, que processa paquets abans que siguin processats per la pila de xarxa del nucli de Linux (tcpdump). no veu paquets abandonats pel controlador XDP).

S'aconsegueix un alt rendiment mitjançant l'ús de subsistemes eBPF i XDP. eBPF és un intèrpret de bytecode integrat al nucli de Linux que us permet crear gestors d'alt rendiment de paquets entrants/sortints amb decisions sobre reenviar-los o descartar-los. Mitjançant un compilador JIT, el bytecode eBPF es tradueix sobre la marxa a instruccions de màquina i s'executa amb el rendiment del codi natiu. El subsistema XDP (eXpress Data Path) complementa eBPF amb la capacitat d'executar programes BPF a nivell de controlador de xarxa, amb suport per a l'accés directe a la memòria intermèdia de paquets DMA i treballar en l'etapa abans que la pila de xarxa assigni la memòria intermèdia skbuff.

Igual que tcpdump, la utilitat xdpcap primer tradueix les regles de filtratge de trànsit d'alt nivell a la representació clàssica de BPF (cBPF) utilitzant la biblioteca estàndard libpcap, i després les converteix en la forma de rutines eBPF mitjançant un compilador. cbpfc, utilitzant desenvolupaments LLVM/Clang. A la sortida, la informació del trànsit es desa en el format pcap estàndard, que us permet utilitzar un bolcat de trànsit preparat a xdpcap per a l'estudi posterior en tcpdump i altres analitzadors de trànsit existents. Per exemple, per capturar informació del trànsit DNS, en comptes d'utilitzar l'ordre "tcpdump ip i udp port 53", podeu executar "xdpcap /path/to/hook capture.pcap 'ip and udp port 53′" i després utilitzar una captura .pcap, per exemple, amb l'ordre "tcpdump -r" o a Wireshark.

Font: opennet.ru

Afegeix comentari