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. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.