eBPF (расширенный фильтр пакетов Беркли) - это мощная технология, используемая в современных системах Linux, позволяющая запускать программы в песочнице в виртуальной среде, подобной виртуальной машине, внутри ядра. Co-RE (Скомпилируй раз, запускай везде) - это функция, которая позволяет программам eBPF работать на различных версиях ядра без перекомпиляции, упрощая развертывание и обслуживание. Однако Co-RE не предназначен для приложений пользовательского пространства, которые требуют другого подхода для достижения совместимости между различными версиями приложений. Чтобы реализовать Co-RE для приложений пользовательского пространства, используется формат типа BPF (BPF Type Format, BTF), который обеспечивает информацию о типах и поддержку совместимости. Этот подход особенно полезен для приложений отслеживания, таких как OpenSSL, где поддержка отдельных программ eBPF для каждой версии нецелесообразна. BTF из приложений пользовательского пространства может решить проблему совместимости, предоставляя богатую информацию о типах для структур данных и функций. Используя BTF, программы eBPF можно скомпилировать с поддержкой Co-RE, позволяя им работать на разных версиях ядра без перекомпиляции. Решение Co-RE абстрагирует конкретные зависимости ядра, позволяя программам eBPF быть более переносимыми. Этот подход имеет несколько преимуществ, включая "написать один раз, запустить везде", безопасность, стабильность и простоту разработки. Используя Co-RE для приложений пользовательского пространства, программы eBPF uprobe tracing можно сделать совместимыми с разными версиями приложений без изменений.
dev.to
Expanding eBPF Compile Once, Run Everywhere(CO-RE) to Userspace Compatibility