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

Представен е първият выпуск на библиотеката Aya, която позволява създаването на eBPF обработчици на програмния език Rust, изпълнявани в ядрото на 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.

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

Източник: opennet.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster