Cloudflare je objavil xdpcap, analizator prometa, ki temelji na podsistemu XDP

Podjetje Cloudflare predstavljeno odprt projekt xdpcap, v okviru katerega se razvija tcpdumpu podoben analizator omrežnih paketov, zgrajen na osnovi podsistema XDP (podatkovna pot eXpress). Koda projekta je napisana v Go in distributer pod licenco BSD. Projekt tudi pripravljeno knjižnica za povezovanje obdelovalcev prometa eBPF iz aplikacij Go.

Pripomoček xdpcap je združljiv z izrazi za filtriranje tcpdump/libpcap in vam omogoča obdelavo znatno večjih količin prometa na isti strojni opremi. Xdpcap se lahko uporablja tudi za razhroščevanje v okoljih, kjer običajni tcpdump ni uporaben, kot so sistemi za filtriranje, zaščito pred napadi na dejanja in izravnavo obremenitve, ki uporabljajo podsistem XDP jedra Linuxa, ki obdeluje pakete, preden jih obdela omrežni sklad jedra Linuxa (tcpdump ne vidi paketov, ki jih je zavrgel upravljalnik XDP).

Visoka zmogljivost je dosežena z uporabo podsistemov eBPF in XDP. eBPF je tolmač bajtne kode, vgrajen v jedro Linuxa, ki vam omogoča ustvarjanje visoko zmogljivih obdelovalcev dohodnih/odhodnih paketov z odločitvami o njihovem posredovanju ali zavrženju. Z uporabo prevajalnika JIT se bajtna koda eBPF sproti prevede v strojna navodila in izvede z zmogljivostjo izvorne kode. Podsistem XDP (eXpress Data Path) dopolnjuje eBPF z zmožnostjo izvajanja programov BPF na ravni omrežnega gonilnika, s podporo za neposreden dostop do medpomnilnika paketov DMA in delo na stopnji, preden medpomnilnik skbuff dodeli omrežni sklad.

Tako kot tcpdump tudi pripomoček xdpcap najprej prevede pravila filtriranja prometa na visoki ravni v klasično predstavitev BPF (cBPF) z uporabo standardne knjižnice libpcap, nato pa jih s pomočjo prevajalnika pretvori v obliko rutin eBPF. cbpfc, z uporabo razvoja LLVM/Clang. Na izhodu se prometne informacije shranijo v standardnem formatu pcap, ki vam omogoča uporabo izpisa prometa, pripravljenega v xdpcap, za kasnejšo študijo v tcpdump in drugih obstoječih analizatorjih prometa. Če želite na primer zajeti informacije o prometu DNS, lahko namesto ukaza "tcpdump ip and udp port 53" zaženete "xdpcap /path/to/hook capture.pcap 'ip and udp port 53′" in nato uporabite zajem .pcap, na primer z ukazom "tcpdump -r" ali v Wiresharku.

Vir: opennet.ru

Dodaj komentar