A Cloudflare közzétette az XDP alrendszeren alapuló forgalomelemzőt, az xdpcap-et

Cloudflare cég bemutatott nyitott projekt xdpcap, amelyen belül a tcpdump-hoz hasonló hálózati csomagelemzőt fejlesztenek, az alrendszer alapján XDP (Express Data Path). A projekt kódja a Go és nyelven van írva forgalmazza BSD licenc alatt. A projekt is előkészített könyvtár az eBPF forgalomkezelők kötéséhez a Go alkalmazásokból.

Az xdpcap segédprogram kompatibilis a tcpdump/libpcap szűrőkifejezésekkel, és lehetővé teszi lényegesen nagyobb forgalom feldolgozását ugyanazon a hardveren. Az Xdpcap olyan környezetben is használható hibakeresésre, ahol a szokásos tcpdump nem alkalmazható, mint például a szűrés, a DoS védelem és a terheléselosztó rendszerek, amelyek a Linux kernel XDP alrendszerét használják, amelyek feldolgozzák a csomagokat, mielőtt azokat a Linux kernel hálózati verem (tcpdump) feldolgozná. nem látja az XDP-kezelő által eldobott csomagokat).

A nagy teljesítmény az eBPF és XDP alrendszerek használatával érhető el. Az eBPF a Linux kernelbe épített bájtkód értelmező, amely lehetővé teszi a bejövő/kimenő csomagok nagy teljesítményű kezelőinek létrehozását a továbbítási vagy elvetési döntésekkel. Egy JIT fordító segítségével az eBPF bájtkódot menet közben gépi utasításokká fordítják, és a natív kód teljesítményével hajtják végre. Az XDP (eXpress Data Path) alrendszer kiegészíti az eBPF-et a BPF-programok hálózati illesztőprogram-szintű futtatásának képességével, támogatja a DMA csomagpufferhez való közvetlen hozzáférést, és az skbuff puffert a hálózati verem általi lefoglalása előtti szakaszban.

A tcpdump-hoz hasonlóan az xdpcap segédprogram először a magas szintű forgalomszűrési szabályokat a klasszikus BPF-reprezentációra (cBPF) fordítja le a szabványos libpcap könyvtár segítségével, majd egy fordító segítségével eBPF-rutinokká alakítja. cbpfc, LLVM/Clang fejlesztések segítségével. A kimeneten a forgalmi információk szabványos pcap formátumban kerülnek mentésre, amely lehetővé teszi az xdpcap-ben előkészített forgalmi dump használatát a tcpdump és más meglévő forgalomelemzők későbbi tanulmányozására. Például a DNS forgalmi információinak rögzítéséhez a „tcpdump ip és udp 53-as port” parancs használata helyett futtassa az „xdpcap /útvonal/hook capture.pcap 'ip és udp port 53” fájlt, majd használjon rögzítést. .pcap fájlt, például a "tcpdump -r" paranccsal vagy a Wiresharkban.

Forrás: opennet.ru

Hozzászólás