Cloudflare ka publikuar xdpcap, një analizues trafiku i bazuar në nënsistemin XDP

Kompania Cloudflare prezantuar projekt i hapur xdpcap, brenda të cilit po zhvillohet një analizues i paketave të rrjetit i ngjashëm me tcpdump, i ndërtuar mbi bazën e nënsistemit XDP (Shtegu i të dhënave eXpress). Kodi i projektit është shkruar në Shko dhe shperndare nga nën licencën BSD. Projekti gjithashtu përgatitur bibliotekë për lidhjen e mbajtësve të trafikut eBPF nga aplikacionet Go.

Programi xdpcap është i pajtueshëm me shprehjet e filtrimit tcpdump/libpcap dhe ju lejon të përpunoni vëllime dukshëm më të mëdha trafiku në të njëjtin pajisje. Xdpcap mund të përdoret gjithashtu për korrigjimin e gabimeve në mjedise ku tcpdump i rregullt nuk është i zbatueshëm, si p.sh. filtrimi, mbrojtja DoS dhe sistemet e balancimit të ngarkesës që përdorin nënsistemin XDP të kernel Linux, i cili përpunon paketat përpara se ato të përpunohen nga grupi i rrjetit të kernelit Linux (tcpdump nuk i sheh paketat e lëshuara nga mbajtësi i XDP).

Performanca e lartë arrihet përmes përdorimit të nënsistemeve eBPF dhe XDP. eBPF është një përkthyes i bytekodit i integruar në kernelin Linux që ju lejon të krijoni mbajtës me performancë të lartë të paketave hyrëse/dalëse me vendime për përcjelljen ose hedhjen e tyre. Duke përdorur një përpilues JIT, bytekodi eBPF përkthehet menjëherë në udhëzimet e makinës dhe ekzekutohet me performancën e kodit vendas. Nënsistemi XDP (EXpress Data Path) plotëson eBPF me aftësinë për të ekzekutuar programe BPF në nivelin e drejtuesit të rrjetit, me mbështetje për aksesin e drejtpërdrejtë në buferin e paketave DMA dhe punën në fazën përpara se buferi skbuff të ndahet nga grupi i rrjetit.

Ashtu si tcpdump, programi xdpcap fillimisht përkthen rregullat e filtrimit të trafikut të nivelit të lartë në paraqitjen klasike BPF (cBPF) duke përdorur bibliotekën standarde libpcap dhe më pas i konverton ato në formën e rutinave eBPF duke përdorur një përpilues cbpfc, duke përdorur zhvillimet LLVM/Clang. Në dalje, informacioni i trafikut ruhet në formatin standard pcap, i cili ju lejon të përdorni një depo trafiku të përgatitur në xdpcap për studime të mëvonshme në tcpdump dhe analizues të tjerë ekzistues të trafikut. Për shembull, për të kapur informacionin e trafikut DNS, në vend që të përdorni komandën "tcpdump ip and udp port 53", mund të ekzekutoni "xdpcap /path/to/hook capture.pcap 'ip and udp port 53'" dhe më pas të përdorni një kapje skedar .pcap, p.sh. me komandën "tcpdump -r" ose në Wireshark.

Burimi: opennet.ru

Shto një koment