Представлена библиотека Aya для создания eBPF-обработчиков на языке Rust

Материал из Викиновостей, свободного источника новостей
Перейти к навигации Перейти к поиску

16 июня 2021 года

<dynamicpagelist>

category = Опубликовано category = Компьютерные технологии notcategory = Не публиковать notcategory = Ожидаемые события по датам notcategory = Архивные новости notcategory=Викиновости коротко count = 18 stablepages = only suppresserrors = true namespace = Main addfirstcategorydate = true ordermethod = created </dynamicpagelist>

Wikinews-logo-ru.svg

Представлен первый выпуск библиотеки Aya, позволяющей создавать на языке Rust обработчики eBPF, запускаемые внутри ядра 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 по аналогии с обычными программами, использующими aya в качестве runtime, переопределяющем функции с учётом работы в eBPF.
  • Поддержка различных типов ядра, включая обычные массивы, хэши (hash map), стеки, очереди, трассировки стека, а также структуры для сокетов и отслеживания производительности.
  • Возможность создавать различные типы eBTF-программ, включая программы для фильтрации и управления трафиком, обработчики cgroup и различных операций с сокетами, XDP-программы.
  • Поддержка платформ для асинхронной обработки запросов в неблокирующем режиме tokio и async-std.
  • Быстрая сборка, без и привязки к сборке ядра и заголовочным файлам ядра.

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

 

Источники[править]


OpenNET logo.png
Creative Commons
Эта статья содержит материалы из статьи «Представлена библиотека Aya для создания eBPF-обработчиков на языке Rust», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Cartoon Robot.svg
Эта статья загружена автоматически ботом NewsBots и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
 

Комментарии:Представлена библиотека Aya для создания eBPF-обработчиков на языке Rust