Cloudflare je objavio xdpcap, analizator saobraćaja baziran na XDP podsistemu

Cloudflare Company predstavljen otvoreni projekat xdpcap, u okviru kojeg se razvija analizator mrežnih paketa sličan tcpdumpu, izgrađen na bazi podsistema XDP (eXpress Data Path). Kod projekta je napisan u Go and distribuira pod BSD licencom. Projekat takođe pripremljeno biblioteka za vezivanje eBPF rukovaoca saobraćaja iz Go aplikacija.

Uslužni program xdpcap je kompatibilan sa tcpdump/libpcap izrazima za filtriranje i omogućava vam da obrađujete znatno veće količine prometa na istom hardveru. Xdpcap se također može koristiti za otklanjanje grešaka u okruženjima u kojima uobičajeni tcpdump nije primjenjiv, kao što su filtriranje, DoS zaštita i sistemi za balansiranje opterećenja koji koriste XDP podsistem Linux kernela, koji obrađuje pakete prije nego što ih obradi mrežni stog jezgre Linuxa (tcpdump ne vidi pakete koje ispušta XDP rukovalac).

Visoke performanse se postižu upotrebom eBPF i XDP podsistema. eBPF je bajtkod interpreter ugrađen u Linux kernel koji vam omogućava da kreirate rukovaoce visokih performansi dolaznim/odlaznim paketima sa odlukama o njihovom prosljeđivanju ili odbacivanju. Koristeći JIT kompajler, eBPF bajt kod se u hodu prevodi u mašinske instrukcije i izvršava uz performanse izvornog koda. XDP (eXpress Data Path) podsistem dopunjuje eBPF sa mogućnošću pokretanja BPF programa na nivou mrežnog drajvera, uz podršku za direktan pristup baferu DMA paketa i rad u fazi pre nego što mrežni stog dodeljuje skbuff bafer.

Kao i tcpdump, xdpcap uslužni program prvo prevodi pravila filtriranja saobraćaja na visokom nivou u klasičnu BPF reprezentaciju (cBPF) koristeći standardnu ​​libpcap biblioteku, a zatim ih pretvara u oblik eBPF rutina koristeći kompajler cbpfc, koristeći LLVM/Clang razvoj. Na izlazu se informacije o prometu pohranjuju u standardnom pcap formatu, koji vam omogućava da koristite deponiju saobraćaja pripremljenu u xdpcap za naknadno proučavanje u tcpdumpu i drugim postojećim analizatorima prometa. Na primjer, da biste uhvatili informacije o DNS prometu, umjesto da koristite naredbu "tcpdump ip i udp port 53", možete pokrenuti "xdpcap /path/to/hook capture.pcap 'ip i udp port 53′", a zatim koristiti snimanje .pcap datoteku, npr. naredbom "tcpdump -r" ili u Wiresharku.

izvor: opennet.ru

Dodajte komentar