Rust жүйесінде eBPF өңдеушілерін жасау үшін Aya кітапханасын ұсынды

Aya кітапханасының бірінші шығарылымы ұсынылған, ол Linux ядросының ішінде JIT бар арнайы виртуалды машинада жұмыс істейтін Rust тілінде eBPF өңдеушілерін жасауға мүмкіндік береді. Басқа eBPF әзірлеу құралдарынан айырмашылығы, Aya libbpf және bcc компиляторын пайдаланбайды, оның орнына ядро ​​​​жүйесінің қоңырауларына тікелей қол жеткізу үшін libc жәшігі бумасын пайдаланатын Rust тілінде жазылған өзінің іске асырылуын ұсынады. Aya Building C тіліндегі құралдарды немесе ядро ​​тақырыбы файлдарын қажет етпейді. Кітапхана коды MIT және Apache 2.0 лицензиялары бойынша таратылады.

Негізгі ерекшеліктері:

  • Түрді тексеру және ағымдағы ядро ​​ұсынған түрлерге салыстыру үшін BPF псевдокодында түр ақпаратын қамтамасыз ететін BTF (BPF түр пішімі) қолдауы. BTF пайдалану Linux ядросының әртүрлі нұсқаларымен қайта құрастырусыз пайдалануға болатын әмбебап eBPF өңдеушілерін жасауға мүмкіндік береді.
  • «bpf-to-bpf» қоңырауларына, жаһандық айнымалыларға және инициализаторларға қолдау көрсету, бұл eBPF үшін бағдарламаларды eBPF жүйесіндегі жұмысты ескере отырып, функцияларды қайта анықтайтын орындалу уақыты ретінде пайдаланатын кәдімгі бағдарламаларға ұқсас етіп жасауға мүмкіндік береді.
  • Түрлі ядро ​​түрлерін, соның ішінде тұрақты массивтерді, хэштер карталарын, стектерді, кезектерді, стек іздерін, сондай-ақ розетка мен өнімділікті бақылау құрылымдарын қолдау.
  • eBTF бағдарламаларының әртүрлі түрлерін, соның ішінде трафикті сүзуге және басқаруға арналған бағдарламаларды, топтық өңдеушілерді және әртүрлі розетка операцияларын, XDP бағдарламаларын жасау мүмкіндігі.
  • tokio және async-std блокталмаған режимде асинхронды сұрауды өңдеу платформаларына қолдау көрсету.
  • Ядро жинағы мен ядро ​​тақырыбы файлдарына ешқандай қосылымсыз жылдам құрастыру.

Жоба әлі де эксперименттік болып саналады - API әлі тұрақтандырылған жоқ және дамуын жалғастыруда. Сондай-ақ, барлық жоспарланған мүмкіндіктер әлі жүзеге асырылған жоқ. Жыл соңына дейін әзірлеушілер Aya функционалдығын libbpf-пен теңестіруді және 2022 жылдың қаңтарында бірінші тұрақты шығарылымды жасауды күтуде. Сондай-ақ, Linux ядросы үшін Rust кодын жазу үшін қажетті Aya бөліктерін eBPF бағдарламаларын жүктеу, тіркеу және өзара әрекеттесу үшін пайдаланылатын пайдаланушы-кеңістік құрамдастарымен біріктіру жоспарлары бар.

Еске салайық, eBPF Linux ядросына енгізілген байт-код интерпретаторы болып табылады, ол желі операциясының өңдеушілерін жасауға, жүйе жұмысын бақылауға, жүйелік қоңырауларды тоқтатуға, қол жеткізуді басқаруға, уақытты сақтай отырып оқиғаларды өңдеуге, операциялардың жиілігі мен уақытын есептеуге, орындауға мүмкіндік береді. kprobes/upprobes/tracepoints көмегімен бақылау. JIT компиляциясын қолданудың арқасында байт код жылдам машина нұсқауларына аударылады және жергілікті кодтың өнімділігімен орындалады. XDP желілік драйвер деңгейінде BPF бағдарламаларын іске қосу үшін құралдарды қамтамасыз етеді, DMA пакеттік буферіне тікелей қол жеткізу мүмкіндігі бар, бұл үлкен желі жүктемесінде жұмыс істеу үшін жоғары өнімді процессорларды жасауға мүмкіндік береді.

Ақпарат көзі: opennet.ru

пікір қалдыру