Cloudflare telah menerbitkan xdpcap, penganalisis trafik berdasarkan subsistem XDP

Syarikat Cloudflare dibentangkan projek terbuka xdpcap, di mana penganalisis paket rangkaian yang serupa dengan tcpdump sedang dibangunkan, dibina berdasarkan subsistem XDP (Laluan Data eXpress). Kod projek ditulis dalam Go and diedarkan oleh di bawah lesen BSD. Projek itu juga disediakan perpustakaan untuk mengikat pengendali trafik eBPF daripada aplikasi Go.

Utiliti xdpcap serasi dengan ungkapan penapisan tcpdump/libpcap dan membolehkan anda memproses volum trafik yang jauh lebih besar pada perkakasan yang sama. Xdpcap juga boleh digunakan untuk penyahpepijatan dalam persekitaran yang tcpdump biasa tidak berkenaan, seperti penapisan, perlindungan DoS dan sistem pengimbangan beban yang menggunakan subsistem XDP kernel Linux, yang memproses paket sebelum ia diproses oleh tindanan rangkaian kernel Linux (tcpdump tidak melihat paket digugurkan oleh pengendali XDP).

Prestasi tinggi dicapai melalui penggunaan subsistem eBPF dan XDP. eBPF ialah penterjemah kod bait terbina dalam kernel Linux yang membolehkan anda mencipta pengendali berprestasi tinggi bagi paket masuk/keluar dengan keputusan tentang memajukan atau membuangnya. Menggunakan pengkompil JIT, kod bait eBPF diterjemahkan dengan cepat ke dalam arahan mesin dan dilaksanakan dengan prestasi kod asli. Subsistem XDP (eXpress Data Path) melengkapkan eBPF dengan keupayaan untuk menjalankan program BPF pada peringkat pemacu rangkaian, dengan sokongan untuk akses terus kepada penimbal paket DMA dan berfungsi pada peringkat sebelum penimbal skbuff diperuntukkan oleh timbunan rangkaian.

Seperti tcpdump, utiliti xdpcap mula-mula menterjemahkan peraturan penapisan trafik peringkat tinggi ke dalam perwakilan BPF klasik (cBPF) menggunakan perpustakaan libpcap standard, dan kemudian menukarnya ke dalam bentuk rutin eBPF menggunakan pengkompil cbpfc, menggunakan pembangunan LLVM/Clang. Pada output, maklumat trafik disimpan dalam format pcap standard, yang membolehkan anda menggunakan pembuangan trafik yang disediakan dalam xdpcap untuk kajian seterusnya dalam tcpdump dan penganalisis trafik sedia ada yang lain. Sebagai contoh, untuk menangkap maklumat trafik DNS, bukannya menggunakan arahan "tcpdump ip dan udp port 53", anda boleh menjalankan "xdpcap /path/to/hook capture.pcap 'ip dan udp port 53β€²" dan kemudian menggunakan tangkapan Fail .pcap, cth. dengan arahan "tcpdump -r" atau dalam Wireshark.

Sumber: opennet.ru

Tambah komen