Compania Cloudflare projekt hapësiror , në kuadër të cilit zhvillohet një analizues i paketave rrjeti, i ndërtuar mbi bazën e (eXpress Data Path). Kodi i projektit është shkruar në gjuhën Go dhe nën licencën BSD. Projekti gjithashtu ofron një bibliotekë për lidhjen e përpunuesve eBPF të trafikut nga aplikacionet në gjuhën Go.
Utilitari xdpcap është i përputhshëm me shprehjet e filtrimit tcpdump/libpcap dhe lejon përpunimin e volumit të madh të trafikut në të njëjtën pajisje. Xdpcap gjithashtu mund të përdoret për dibadimin në kushte ku tcpdump-i i zakonshëm nuk është i përshtatshëm, për shembull, kur përdoren sisteme filtrimi, mbrojtjeje nga sulmet DoS dhe balancimi i ngarkesës që përdorin sistemin e bërthamës Linux XDP, që përpunon paketat në fazën para përpunimit nga rrjeti bërthamor i Linux (tcpdump nuk i sheh paketat e hedhura nga përpunuesi XDP).
Performanca e lartë arrihet falë përdorimit të nën-sistemeve eBPF dhe XDP. eBPF është një interpreter i kodit të byte-it i integruar në kernelin Linux, i cili lejon krijimin e përpunuesve me performancë të lartë për paketat hyrëse/dalëse duke marrë vendime për përkatësinë ose hedhjen e tyre. Përmes JIT-kompiluesit, kodi i byte-it eBPF përkthehet në instruksione makine në çast dhe ekzekutohet me performancën e kodit të natyrshëm. Nën-sistemi XDP (eXpress Data Path) plotëson eBPF me mundësinë për të ekzekutuar programet BPF në nivelin e drejtuesit të rrjetit, duke mbështetur qasje të drejtpërdrejtë në bufferat DMA të paketave dhe punë para ndarjes së bufferit skbuff në grumbullin e rrjetit.
Siç është edhe tcpdump, utilita xdpcap në fillim përkthehet rregullat e filtrimit të trafikut në forma të larta në përfaqësimin klasik BPF (cBPF) përmes bibliotekës standarde libpcap, e më pas i konverton ato në forma nënprogramesh eBPF duke përdorur kompilatorin. , duke përdorimi i zhvillimeve LLVM/Clang. Në fund, informacionet për trafikun ruhen në formatin standard pcap, gjë që lejon përdorimin e dump-it të trafikut përgatitur në xdpcap për studim të mëtejshëm në tcpdump dhe analizatorë të tjerë të trafikut që ekzistojnë. Për shembull, për të kapur informacionet për trafikun DNS, në vend të komandës "tcpdump ip and udp port 53", mund të filloni "xdpcap /path/to/hook capture.pcap 'ip and udp port 53'", pas së cilës mund të përdorni skedarin capture.pcap, p.sh. me komandën "tcpdump -r" ose në Wireshark.
Burimi: opennet.ru
