BPF Capsule - Запуск DOOM и сложных C-программ внутри eBPF

Show HN: DOOM in the kernel, or fibers in eBPF

BPF Capsule — это компилятор и среда выполнения, позволяющие запускать большие C, C++ и Rust-программы внутри обычного eBPF без патчей ядра. Проект демонстрирует DOOM, полностью работающий в BPF JIT: игровая логика и рендеринг выполняются за один вызов BPF. Capsule преобразует код в форму, которую принимает стандартный верификатор Linux, открывая путь для сложной логики в ядре — парсинга пакетов, сбора статистики и даже Lua, Python, SQLite и llama2.c.

DOOM не должен работать внутри eBPF. Linux обязан отклонить такую программу ещё до выполнения первой инструкции. И всё же немодифицированное ядро Linux принимает мой BPF-объект, проверяет его стандартным верификатором и запускает через стандартный JIT.
  1. tptacek

    Здесь столько хорошего контента, жаль, что ты разнёс свою статью пескоструем ИИ. «Для верификатора это число с биографией» — вот где я свернул с дороги и угодил в кювет.

  2. markrwilliams

    Пропустите первую половину статьи, чтобы узнать, как проект преодолел ограниченную среду выполнения eBPF-программ:

    «В Linux 6.9 и новее (6.10 на arm64, где поддержка JIT для арены появилась позже) окно поддерживается bpf_arena... На ядрах без пригодной арены те же четыре гигабайта собираются из кусков по 4 МиБ... [в] отдельных map'ах глобальных данных.»

    Эти map'ы имеют тип BPF_MAP_TYPE_ARRAY.

    См. https://lwn.net/Articles/961941/ для обсуждения `bpf_arena`.

  3. phishin

    Ценю соблюдение требования писать капсом.

Ещё за этот день

2026-09-10