Rust-da eBPF işləyiciləri yaratmaq üçün Aya kitabxanası təqdim edildi

Rust-da kernel əsaslı eBPF işleyicilərini yazmağa imkan verən Aya kitabxanasının ilk buraxılışı yayımlandı. Linux в специальной виртуальной машине с JIT. В отличие от других инструментов для разработки eBPF-программ, Aya не использует libbpf и компилятор bcc, а предлагает собственную реализацию, написанную на Rust, которая использует crate-пакет libc для прямого обращения к системным вызовам ядра. Для сборки Aya не требуется наличие инструментария для языка C и заголовочных файлов ядра. Код библиотеки распространяется под лицензиями MIT и Apache 2.0.

Əsas xüsusiyyətlər:

  • Поддержка формата BTF (BPF Type Format), предоставляющего информацию о типах в псевдокоде BPF для проверки типов и сопоставления с типами, предоставляемыми текущим ядром. Применение BTF даёт возможность создавать универсальные eBPF-обработчики, которые можно использовать без перекомпиляции с разными версиями ядра Linux.
  • “bpf-to-bpf” zəngləri, qlobal dəyişənlər və başlatıcılar üçün dəstək, bu sizə eBPF üçün proqramları eBPF-də işi nəzərə alaraq funksiyaları yenidən təyin edən icra müddəti kimi istifadə edən adi proqramlara bənzər şəkildə tərtib etməyə imkan verir.
  • Adi massivlər, hash xəritələri, yığınlar, növbələr, yığın izləri, həmçinin yuva və performans izləmə strukturları daxil olmaqla müxtəlif nüvə növlərinə dəstək.
  • Müxtəlif növ eBTF proqramlarını, o cümlədən trafikin süzülməsi və idarə edilməsi üçün proqramlar, qrup işləyiciləri və müxtəlif soket əməliyyatları, XDP proqramları yaratmaq bacarığı.
  • Bloklanmayan rejimdə asinxron sorğunun emalı üçün platformalar üçün dəstək tokio və async-std.
  • Kernel assemblies və kernel header faylları ilə heç bir əlaqə olmadan sürətli montaj.

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

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

Mənbə: opennet.ru

DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster