Cloudflare har publicerat xdpcap, en trafikanalysator baserad på XDP-delsystemet

Cloudflare Company представила öppet projekt xdpcap, inom vilken en nätverkspaketanalysator liknande tcpdump utvecklas, byggd på basen av undersystemet XDP (Express Data Path). Projektkoden är skriven i Go och levererad av under BSD-licens. Projektet också beredd bibliotek för att binda eBPF-trafikhanterare från Go-applikationer.

Verktyget xdpcap är kompatibelt med tcpdump/libpcap-filtreringsuttryck och låter dig bearbeta betydligt större trafikvolymer på samma hårdvara. Xdpcap kan också användas för felsökning i miljöer där vanlig tcpdump inte är tillämplig, såsom filtrering, DoS-skydd och lastbalanseringssystem som använder Linux-kärnan XDP-undersystem, som bearbetar paket innan de bearbetas av Linux-kärnnätverksstacken (tcpdump ser inte paket som släpps av XDP-hanteraren).

Hög prestanda uppnås genom användning av eBPF- och XDP-delsystem. eBPF är en bytekodtolkare inbyggd i Linux-kärnan som låter dig skapa högpresterande hanterare av inkommande/utgående paket med beslut om att vidarebefordra eller kassera dem. Med hjälp av en JIT-kompilator översätts eBPF-bytekod i farten till maskininstruktioner och exekveras med prestanda av inbyggd kod. XDP (eXpress Data Path)-delsystemet kompletterar eBPF med möjligheten att köra BPF-program på nätverksdrivrutinsnivå, med stöd för direktåtkomst till DMA-paketbufferten och arbete i skedet innan skbuff-bufferten allokeras av nätverksstacken.

Precis som tcpdump översätter verktyget xdpcap först trafikfiltreringsregler på hög nivå till den klassiska BPF-representationen (cBPF) med standardbiblioteket libpcap och konverterar dem sedan till formen av eBPF-rutiner med hjälp av en kompilator cbpfc, med hjälp av LLVM/Clang-utvecklingar. Vid utgången sparas trafikinformation i standardformatet pcap, vilket gör att du kan använda en trafikdump förberedd i xdpcap för efterföljande studier i tcpdump och andra befintliga trafikanalysatorer. Till exempel, för att fånga DNS-trafikinformation, istället för att använda kommandot "tcpdump ip och udp port 53", kan du köra "xdpcap /path/to/hook capture.pcap 'ip och udp port 53'" och sedan använda en capture .pcap-fil, t.ex. med kommandot "tcpdump -r" eller i Wireshark.

Källa: opennet.ru

Lägg en kommentar