Cloudflare XDP quyi tizimiga asoslangan xdpcap trafik analizatorini nashr etdi

Cloudflare kompaniyasi taqdim ochiq loyiha xdpcap, uning ichida quyi tizim asosida qurilgan tcpdump ga o'xshash tarmoq paketi analizatori ishlab chiqilmoqda. XDP (eXpress ma'lumotlar yo'li). Loyiha kodi Go va da yozilgan tarqaladi BSD litsenziyasi ostida. Loyiha ham tayyorlangan Go ilovalaridan eBPF trafik ishlov beruvchilarini ulash uchun kutubxona.

Xdpcap yordam dasturi tcpdump/libpcap filtrlash ifodalari bilan mos keladi va bir xil uskunada sezilarli darajada kattaroq trafikni qayta ishlash imkonini beradi. Xdpcap oddiy tcpdump qo'llanilmaydigan muhitlarda disk raskadrovka uchun ham ishlatilishi mumkin, masalan, filtrlash, DoS himoyasi va Linux yadrosi tarmoq stegi (tcpdump) tomonidan paketlarni qayta ishlashdan oldin Linux yadrosi XDP quyi tizimidan foydalanadigan yuk balanslash tizimlari XDP ishlov beruvchisi tushirgan paketlarni ko'rmaydi).

Yuqori samaradorlikka eBPF va XDP quyi tizimlaridan foydalanish orqali erishiladi. eBPF - bu Linux yadrosiga o'rnatilgan bayt-kod tarjimoni bo'lib, u kiruvchi/chiqish paketlarini yuborish yoki yo'q qilish to'g'risidagi qarorlar bilan yuqori samarali ishlov beruvchilarni yaratishga imkon beradi. JIT kompilyatoridan foydalanib, eBPF baytkodi tezda mashina ko'rsatmalariga tarjima qilinadi va mahalliy kodning ishlashi bilan bajariladi. XDP (eXpress Data Path) quyi tizimi eBPF-ni tarmoq drayverlari darajasida BPF dasturlarini ishga tushirish qobiliyati bilan to'ldiradi, DMA paketlar buferiga to'g'ridan-to'g'ri kirishni qo'llab-quvvatlaydi va tarmoq stekidan skbuff buferi ajratilishidan oldingi bosqichda ishlaydi.

Tcpdump singari, xdpcap yordam dasturi birinchi navbatda standart libpcap kutubxonasidan foydalangan holda yuqori darajadagi trafik filtrlash qoidalarini klassik BPF ko'rinishiga (cBPF) tarjima qiladi va keyin ularni kompilyator yordamida eBPF tartiblari ko'rinishiga aylantiradi. cbpfc, LLVM/Clang ishlanmalaridan foydalanish. Chiqishda trafik ma'lumotlari standart pcap formatida saqlanadi, bu sizga tcpdump va boshqa mavjud trafik analizatorlarida keyingi o'rganish uchun xdpcap-da tayyorlangan trafik dumpidan foydalanishga imkon beradi. Masalan, DNS-trafik ma'lumotlarini yozib olish uchun "tcpdump ip va udp port 53" buyrug'ini ishlatish o'rniga "xdpcap /path/to/hook capture.pcap 'ip va udp port 53β€²" ni ishga tushirishingiz va so'ngra suratga olishdan foydalanishingiz mumkin. .pcap fayli, masalan, "tcpdump -r" buyrug'i bilan yoki Wireshark'da.

Manba: opennet.ru

a Izoh qo'shish