eBPF
extended Berkeley Packet Filter - виртуальная машина ядра Linux
Производительность
Без перезагрузки ядра
Безопасность
Защита ядра
Мониторинг
Real-time анализ
Что такое eBPF?
eBPF (extended Berkeley Packet Filter) — это виртуальная машина в ядре Linux, которая позволяет выполнять программы в пространстве ядра без изменения исходного кода ядра или загрузки модулей. eBPF обеспечивает безопасное и эффективное расширение функциональности ядра для мониторинга, безопасности и производительности. BPF появился в Linux 3.18 (2014), а eBPF (extended BPF) развивался с версии 4.1+ (2015) с полной функциональностью к версии 5.0+ (2019).
Технология eBPF используется для создания высокопроизводительных сетевых фильтров, систем мониторинга, средств безопасности и инструментов отладки. Программы eBPF проверяются на безопасность перед выполнением и могут быть загружены в ядро без перезагрузки системы, что делает их идеальными для production-сред. XDP (eXpress Data Path) — расширение eBPF, вводящее in-kernel packet processing с минимальной задержкой.
Документация:
eBPF является частью ядра Linux. Основная документация доступна в Linux kernel documentation и на сайте eBPF.io. XDP (eXpress Data Path) — расширение eBPF для высокопроизводительной обработки пакетов.
Технические характеристики
Платформа
Linux Kernel
Версия ядра
Linux 3.18+ (BPF), 4.1+ (eBPF базовая), 5.0+ (полная функциональность)
Расширения
XDP, TC, Tracepoints
Применение
DDoS mitigation, Firewall, Monitoring
eBPF в Security
Приложения
- DDoS Mitigation
- Firewalling
- Load Balancing
- Network Monitoring
Преимущества
- Минимальные издержки
- Динамическая загрузка
- Полная видимость
- XDP поддержка
Эволюция eBPF в Linux ядре
Поддержка функций по версиям ядра
* BPF: Original Berkeley Packet Filter базовая функциональность
* eBPF: Extended BPF с полной поддержкой современных инструментов
* XDP: eXpress Data Path для in-kernel packet processing
* Tracing: Трассировка и отладка программ в реальном времени
Сравнение издержек eBPF
Служебные издержки по сравнению с альтернативами
* CPU Overhead (%) - процент использования процессора
* Memory Overhead (%) - использование памяти
* Latency (относительно) - относительная задержка
* Flexibility (0-100) - гибкость и возможности