Rust-da eBPF ishlov beruvchilarini yaratish uchun Aya kutubxonasini taqdim etdi

Aya kutubxonasining birinchi versiyasi taqdim etildi, bu sizga Linux yadrosi ichida JIT bilan maxsus virtual mashinada ishlaydigan Rust tilida eBPF ishlov beruvchilarini yaratish imkonini beradi. Boshqa eBPF ishlab chiqish vositalaridan farqli o'laroq, Aya libbpf va bcc kompilyatoridan foydalanmaydi, balki yadro tizimi qo'ng'iroqlariga to'g'ridan-to'g'ri kirish uchun libc sandiq paketidan foydalanadigan Rust-da yozilgan o'zining ilovasini taklif qiladi. Building Aya uchun C tili asboblari yoki yadro sarlavhalari fayllari kerak emas. Kutubxona kodi MIT va Apache 2.0 litsenziyalari ostida tarqatiladi.

Asosiy xususiyatlari:

  • BTF (BPF Type Format) ni qo'llab-quvvatlaydi, bu turni tekshirish va joriy yadro tomonidan taqdim etilgan turlarga solishtirish uchun BPF psevdokodida turdagi ma'lumotlarni taqdim etadi. BTF dan foydalanish Linux yadrosining turli versiyalari bilan qayta kompilyatsiya qilmasdan foydalanish mumkin bo'lgan universal eBPF ishlov beruvchilarini yaratishga imkon beradi.
  • "bpf-to-bpf" qo'ng'iroqlari, global o'zgaruvchilar va initsializatorlarni qo'llab-quvvatlash, bu sizga eBPF uchun dasturlarni eBPF-dagi ishni hisobga olgan holda funksiyalarni qayta belgilovchi ish vaqti sifatida ishlatadigan oddiy dasturlarga o'xshash tarzda loyihalash imkonini beradi.
  • Har xil yadro turlarini qo'llab-quvvatlash, shu jumladan oddiy massivlar, xesh xaritalari, steklar, navbatlar, stek izlari, shuningdek, rozetka va ishlashni kuzatish tuzilmalari.
  • Har xil turdagi eBTF dasturlarini yaratish qobiliyati, jumladan, trafikni filtrlash va boshqarish dasturlari, guruhlarga ishlov beruvchilar va turli rozetka operatsiyalari, XDP dasturlari.
  • Tokio va async-std blokirovka qilinmagan rejimda asinxron so'rovni qayta ishlash platformalarini qo'llab-quvvatlash.
  • Tez yig'ish, yadro yig'ilishi va yadro sarlavhasi fayllariga hech qanday ulanishsiz.

Loyiha hali ham eksperimental hisoblanadi - API hali barqarorlashtirilmagan va rivojlanishda davom etmoqda. Shuningdek, barcha rejalashtirilgan imkoniyatlar hali amalga oshirilmagan. Yil oxiriga kelib, ishlab chiquvchilar Aya funksionalligini libbpf bilan tenglashtirishni va 2022 yil yanvar oyida birinchi barqaror nashrni yaratishni kutishmoqda. Linux yadrosi uchun Rust kodini yozish uchun zarur bo'lgan Aya qismlarini eBPF dasturlarini yuklash, biriktirish va o'zaro aloqada bo'lish uchun foydalaniladigan foydalanuvchi-kosmik komponentlar bilan birlashtirish ham rejalashtirilmoqda.

Eslatib o'tamiz, eBPF - bu Linux yadrosiga o'rnatilgan bayt-kod tarjimoni bo'lib, u sizga tarmoq operatsiyalari ishlov beruvchilarini yaratish, tizim ishini kuzatish, tizim qo'ng'iroqlarini ushlab turish, kirishni boshqarish, vaqtni saqlab turganda hodisalarni qayta ishlash, operatsiyalar chastotasi va vaqtini hisoblash, bajarish imkonini beradi. kprobes/uprobes/tracepoints yordamida kuzatish. JIT kompilyatsiyasidan foydalanish tufayli bayt-kod tezda mashina ko'rsatmalariga tarjima qilinadi va mahalliy kodning ishlashi bilan bajariladi. XDP tarmoq drayveri darajasida BPF dasturlarini ishga tushirish uchun vositalarni taqdim etadi, bu DMA paketli buferga to'g'ridan-to'g'ri kirish imkoniyatiga ega, bu sizga og'ir tarmoq yuki ostida ishlash uchun yuqori samarali protsessorlarni yaratish imkonini beradi.

Manba: opennet.ru

a Izoh qo'shish