Společnost Cloudflare zveřejnila xdpcap, analyzátor provozu založený na subsystému XDP

Společnost Cloudflare představila otevřený projekt xdpcap, v jehož rámci se vyvíjí analyzátor síťových paketů podobný tcpdumpu, postavený na základě subsystému XDP (eXpress Data Path). Kód projektu je napsán v jazyce Go a distribuováno pod licencí BSD. Projektem je také byla připravena knihovna pro vázání eBPF zpracovatelů traffic z aplikací v jazyce Go.

Nástroj xdpcap je kompatibilní s výrazovými filtry tcpdump/libpcap a umožňuje zpracovávat na stejném hardwaru výrazně větší objemy trafik. Xdpcap může být také použit pro ladění v podmínkách, kdy je běžný tcpdump nevhodný, například když jsou nasazeny systémy filtrování, ochrany proti DoS útokům a vyvažování zátěže, které používají subsystém jádra Linux XDP, zpracovávající pakety před tím, než jsou zpracovány síťovým stekem jádra Linux (tcpdump nevidí pakety, které byly zahozeny zpracovatelem XDP).

Vysoký výkon je dosažen díky použití subsystému eBPF a XDP. eBPF je vestavěný interpretátor bajtkódu v jádře Linux, který umožňuje vytvářet vysoce výkonné zpracovatele příchozích/odchozích paketů, kteří rozhodují o jejich přesměrování nebo zahození. Pomocí JIT kompilátoru je bajtkód eBPF za běhu překládán do strojových instrukcí a vykonáván s výkonem nativního kódu. Subsystém XDP (eXpress Data Path) doplňuje eBPF možností spouštět BPF programy na úrovni síťového ovladače, s podporou přímého přístupu k DMA bufferům paketů a prací ve stádiu před alokací bufferu skbuff síťovým stekem.

Stejně jako tcpdump nástroj xdpcap nejprve překládá vysoceúrovňová pravidla filtrace trafiku do klasického zobrazení BPF (cBPF) pomocí standardní knihovny libpcap, poté je transformuje do formy podprogramů eBPF s využitím kompilátoru cbpfc, který využívá technologie LLVM/Clang. Výstupem jsou údaje o trafiku uloženy ve standardním formátu pcap, což umožňuje používat připravený v xdpcap dump trafiku pro následné prozkoumání pomocí tcpdump a dalších stávajících analyzátorů trafiku. Například pro zachycení informací o DNS trafiku místo příkazu „tcpdump ip and udp port 53“ lze spustit „xdpcap /path/to/hook capture.pcap ‘ip and udp port 53’“, po čemž lze použít soubor capture.pcap například s příkazem „tcpdump -r“ nebo ve Wireshark.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster