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

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

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

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

Проект пока рассматривается как экспериментальный — API ещё не стабилизирован и продолжает развиваться. Также ещё не реализованы все задуманные возможности. До конца года разработчики рассчитывают довести функциональность Aya до паритета с libbpf, а в январе 2022 года сформировать первый стабильный релиз. Также планируется объединить части Aya, необходимые для написания кода на Rust для ядра Linux с компонентами, работающими в пространстве пользователя и используемыми для загрузки, прикрепления и взаимодействия с программами eBPF.

Напомним, что eBPF представляет собой встроенный в ядро Linux интерпретатор байткода, позволяющий создавать обработчики сетевых операций, отслеживать работу систем, перехватывать системные вызовы, контролировать доступ, обрабатывать события с сохранением хронометража, подсчитывать частоту и время выполнения операций, выполнять трассировку с использованием kprobes/uprobes/tracepoints. Благодаря применению JIT-компиляции, байткод на лету транслируется в машинные инструкции и выполняется с производительностью нативного кода. XDP предоставляет средства для запуска BPF-программ на уровне сетевого драйвера, с возможностью прямого доступа к DMA-буферу пакетов, что позволяет создавать высокопроизводительные обработчики для работы в условиях большой сетевой нагрузки.

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

DDoS қорғауы бар сайттар үшін сенімді хостинг, VPS VDS серверлерін сатып алыңыз 🔥 DDoS қорғанысы, VPS VDS серверлері бар сенімді веб-сайт хостингін сатып алыңыз | ProHoster