Spoločnosť Cloudflare zverejnila xdpcap, analyzátor prevádzky na báze subsystému XDP

Firma Cloudflare predstavila otvorený projekt xdpcap, v rámci ktorého sa vyvíja analyzátor sieťových paketov podobný tcpdumpu, postavený na báze subsystému XDP (eXpress Data Path). Kód projektu je napísaný v jazyku Go a distribuovaný pod licenciou BSD. Projekt tiež pripravená poskytuje knižnicu na viazanie eBPF spracovateľov prevádzky z aplikácií napísaných v jazyku Go.

Nástroj xdpcap je kompatibilný s výrazmi filtrovania tcpdump/libpcap a umožňuje spracovávať na tej istej výbave podstatne väčšie objemy prevádzky. Xdpcap môže byť tiež použitý na ladění v podmienkach, kde je bežný tcpdump nepoužiteľný, napríklad keď sa používajú systémy filtrovania, ochrany pred DoS útokmi a vyvažovania záťaže, ktoré využívajú subsystém jadra Linuxu XDP spracovávajúci pakety v štádiu pred ich spracovaním sieťovým zásobníkom jadra Linuxu (tcpdump nevidí pakety, ktoré boli odmietnuté spracovateľom XDP).

Vysoký výkon sa dosahuje vďaka využitiu subsystémov eBPF a XDP. eBPF predstavuje vstavaný interpretátor bytekódu v jadre Linuxu, ktorý umožňuje vytvárať vysokovýkonné spracovateľov prichádzajúcich/odchádzajúcich paketov s rozhodovaním o ich presmerovaní alebo odmietnutí. Pomocou JIT kompilátora sa bytekód eBPF za behu prekladá na strojové inštrukcie a vykonáva sa s výkonom natívneho kódu. Subsystem XDP (eXpress Data Path) dopĺňa eBPF možnosťou spúšťať BPF programy na úrovni sieťového ovládača, s podporou priameho prístupu k DMA bufferu paketov a prácou v štádiu pred alokovaním bufferu skbuff sieťovým zásobníkom.

Rovnako ako tcpdump, nástroj xdpcap najprv prekladá vysokú úroveň pravidiel filtrovania prevádzky do klasického zobrazenia BPF (cBPF) pomocou štandardnej knižnice libpcap, po čom ich prevádza do formy podprogramov eBPF, využívajúc kompilátor cbpfc, ktorý využíva technológie LLVM/Clang. Na výstupe sú informácie o prevádzke uchovávané v štandardnom formáte pcap, čo umožňuje použiť v xdpcap pripravený dump prevádzky na následné preskúmanie v tcpdump a iných existujúcich analyzátoroch prevádzky. Napríklad na zachytenie údajov o prevádzke DNS, namiesto príkazu „tcpdump ip and udp port 53“ môže byť spustený „xdpcap /path/to/hook capture.pcap ‘ip and udp port 53‘“, po čom môže byť súbor capture.pcap použitý, napríklad s príkazom „tcpdump -r“ alebo vo Wireshark.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster