Aya, перша бібліотека, яка створила контролери eBPF у Rust

Лінус Торвальдс, а також багато розробників Ядро та різні дистрибутиви висловили свою симпатію до Іржі і навіть неодноразово було представлено питання про впровадження драйверів цією мовою програмування на ядро ​​Linux.

І з цього приводу вже вийшли різні твори, з яких ми вже згадували тут у блозі і ми можемо згадати, наприклад, експеримент успішний з альтернативного набору утиліт, coreutils, переписаних у Rust (Сюди входять такі утиліти, як sort, cat, chmod, chown, chroot, cp, date, dd, echo, ім'я хосту, id, ln та ls).

З огляду на це, Лінус Торвальдс не повністю висловився на користь цієї ініціативи і висловив негативні моменти (ви можете ознайомитися з деталями У наступному посиланні.)

Незважаючи на жорстку критику з боку Лінуса, роботи про впровадження Іржа в ядрі не переставала рухатися далі і недавно була представлена ​​перша версія бібліотеки Айя, що дозволяє створювати драйвери eBPF у Rust, які працюють всередині ядра Linux на спеціальній віртуальній машині JIT.

На відміну від інших інструментів розробки EBPF, Aya не використовує libbpf та компілятор BCC, але пропонує власну реалізацію, написану на Rust який використовує пакет ящика libc для безпосереднього доступу до системних викликів ядра. Для побудови Aya не потрібні мовні засоби C та заголовки ядра.

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

Завдяки компіляції JIT байт-код перетворюється в машинні інструкції на льоту і працює з виконанням власного коду. XDP забезпечує запуск програм BPF на рівні мережевого драйвера з прямим доступом до буфера пакетів DMA, що дозволяє створювати високопродуктивні драйвери для високих умов навантаження мережі.

Про Айю

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

Як і підтримка дзвінків bpf-to-bpf, глобальні змінні та ініціалізатори, що дозволяє розробляти програми для eBPF за аналогією зі звичайними програмами, що використовують aya як час виконання, скасовуючи функції з урахуванням роботи в eBPF.

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

Тамбієн має можливість створювати різні типи eBTF програм, включаючи програми для фільтрації та управління трафіком, драйвери cgroup та різні сокети, програми XDP, а також підтримку платформи для асинхронної обробки запитів у неблокуючому режимі tokyo та async-std.
Швидка компіляція, не прив'язана до компіляції ядра або заголовків ядра.

Важливо зазначити це проект все ще вважається експериментальним, оскільки API ще не стабілізований і продовжує розвиватися. Крім того, ще не всі задумані функції реалізовані.

До кінця року розробники сподіваються наблизити функціональність Aya до рівня libbpf і в січні 2022 р. формують першу стабільну версію. Також планується поєднати частини Aya, необхідні для написання коду Rust для ядра Linux, із компонентами простору користувача, що використовуються для завантаження, підключення та взаємодії з програмами eBPF.

В кінці кінців якщо вам цікаво знати більше про це, ви можете перевірте деталі за наступним посиланням.


Залиште свій коментар

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

*

*

  1. Відповідальний за дані: AB Internet Networks 2008 SL
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.