Представлена библиотека Aya для создания eBPF-обработчиков на языке Rust
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Представлен первый выпуск библиотеки Aya, позволяющей создавать на языке Rust обработчики eBPF, запускаемые внутри ядра 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
===========
Похожие новости
- Главная ссылка к новости (https://confused.ai/posts/anno...)
- OpenNews: Уязвимости в подсистеме eBPF, позволяющие выполнить код на уровне ядра Linux
- OpenNews: Microsoft подготовил реализацию eBPF для Windows
- OpenNews: Компания Oracle намерена переработать DTrace для Linux с использованием eBPF
- OpenNews: В ветку ядра Linux-next добавлен код для разработки драйверов на языке Rust
- OpenNews: Поддержка Rust для ядра Linux столкнулась с критикой Торвальдса
Похожие новости:
- [Информационная безопасность] Google-like система поиска уязвимостей IT Security Search — анонс вебинара
- [R, Rust] extendr: вызываем rust из R (и наоборот)
- [Настройка Linux, C++, *nix, C] Отработка периодических событий в QNX и RT Linux
- [Настройка Linux, Rust, Разработка под Linux] Rust в ядре Linux (перевод)
- Линус Торвальдс вступил в дискуссию с антипрививочником в списке рассылки ядра Linux
- [Системное программирование, Rust] Rust — сохраняем безразмерные типы в статической памяти
- [Сетевые технологии, Rust] BGPexplorer – машина времени для IP/MPLS сетей
- [Информационная безопасность] Откручивание SLL пиннинга в Android приложениях
- [Программирование, Rust, Читальный зал] Как я влюбился в Rust и чего мне это стоило
- Уязвимости в Please, альтернативе sudo, написанной на языке Rust
Теги для поиска: #_bpf, #_rust, #_kernel
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:12
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Представлен первый выпуск библиотеки Aya, позволяющей создавать на языке Rust обработчики eBPF, запускаемые внутри ядра Linux в специальной виртуальной машине с JIT. В отличие от других инструментов для разработки eBPF-программ, Aya не использует libbpf и компилятор bcc, а предлагает собственную реализацию, написанную на Rust, которая использует crate-пакет libc для прямого обращения к системным вызовам ядра. Для сборки Aya не требуется наличие инструментария для языка C и заголовочных файлов ядра. Код библиотеки распространяется под лицензиями MIT и Apache 2.0. Основные возможности:
Напомним, что eBPF представляет собой встроенный в ядро Linux интерпретатор байткода, позволяющий создавать обработчики сетевых операций, отслеживать работу систем, перехватывать системные вызовы, контролировать доступ, обрабатывать события с сохранением хронометража, подсчитывать частоту и время выполнения операций, выполнять трассировку с использованием kprobes/uprobes/tracepoints. Благодаря применению JIT-компиляции, байткод на лету транслируется в машинные инструкции и выполняется с производительностью нативного кода. XDP предоставляет средства для запуска BPF-программ на уровне сетевого драйвера, с возможностью прямого доступа к DMA-буферу пакетов, что позволяет создавать высокопроизводительные обработчики для работы в условиях большой сетевой нагрузки. =========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 19:12
Часовой пояс: UTC + 5