Aya, первая библиотека для создания контроллеров eBPF в Rust

Линус торвальдс и многие разработчики Ядро и разные дистрибутивы выразили свои симпатии к Rust и даже не раз поднимался вопрос о внедрении драйверов на этом языке программирования в ядро ​​Linux.

И по этому поводу уже выпущены различные работы, из которых мы уже упоминали здесь в блоге и мы можем упомянуть, например, эксперимент exitoso из альтернативного набора утилит, coreutils, переписанных на Rust (Сюда входят такие утилиты, как sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln и ls).

Учитывая это, Линус Торвальдс не полностью выразил свою точку зрения в пользу этой инициативы и выразил отрицательные моменты (вы можете ознакомиться с подробностями По следующей ссылке.)

Несмотря на резкую критику со стороны Линуса, работы о реализации Rust в ядре не переставал двигаться дальше и недавно представлена ​​первая версия библиотеки Aya, который позволяет вам создавать драйверы eBPF в Rust, которые запускаются внутри ядра Linux на специальной виртуальной машине JIT.

В отличие от других инструментов разработки EBPF, Ая не использует libbpf и компилятор BCC, Но предлагает собственную реализацию, написанную на Rust который использует пакет libc drawer для прямого доступа к системным вызовам ядра. Для сборки Aya не требуются инструменты на языке C или заголовки ядра.

Для тех, кто не знают о eBPF, они должны знать, что это интерпретатор байт-кода встроено в ядро ​​Linux, которое позволяет создавать обработчики сетевых операций, отслеживать работу системы, перехватывать системные вызовы, управлять доступом, обрабатывать события с указанием времени, вычислять частоту и время операций и отслеживать с помощью kprobes / uprobes / точек трассировки.

Благодаря JIT-компиляции байт-код транслируется в машинные инструкции на лету. и он работает с производительностью собственного кода. XDP предоставляет средства для запуска программ BPF на уровне сетевого драйвера с прямым доступом к буферу пакетов DMA, что позволяет создавать высокопроизводительные драйверы для условий высокой сетевой нагрузки.

О Айе

Из упомянутых ключевых особенностей от Айи мы можем найти, что имеет поддержку BTF (Формат типа BPF), который предоставляет информацию о типе в псевдокоде BPF для проверки и сравнения типов, предоставляемых текущим ядром. Использование BTF позволяет создавать универсальные драйверы eBPF, которые можно использовать без необходимости перекомпилировать их с разными версиями ядра Linux.

Так же хорошо как поддержка вызовов bpf-to-bpf, глобальные переменные и инициализаторы, что позволяет разрабатывать программы для eBPF по аналогии с обычными программами, используя aya в качестве времени выполнения, отменяя функции с учетом работы в eBPF.

С другой стороны, он также имеет поддержка внутренних типов ядра, включая обычные массивы, хэш-карты, стеки, очереди, трассировки стека и структуры для сокетов и отслеживания производительности.

также имеет возможность создавать различные типы программ eBTF, включая программы для фильтрации и управления трафиком, cgroup и различные драйверы сокетов, программы XDP, а также поддержку платформ для неблокирующей обработки асинхронных запросов в токийском режиме и async-std.
Быстрая компиляция, без привязки к компиляции ядра или заголовкам ядра.

Важно отметить, что проект по-прежнему считается экспериментальным, так как API еще не стабилизирован и продолжает развиваться. Также еще не все задуманные функции реализованы.

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

В конце концов если вам интересно узнать больше об этом вы можете проверьте подробности по следующей ссылке.


Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.