Microsoft реализует eBPF для Linux на Windows

0
19

Microsoft запустил проект с открытым исходным кодом, чтобы адаптировать инструмент ядра Linux eBPF (Extended Berkeley Packet Filter) для работы на Windows.

Microsoft реализует eBPF для Linux на Windows

Архитектура проекта и связанных компонентов

Функция eBPF предлагает поддержку расширенных пакетных фильтров Беркли и используется в большей части Unix-подобных систем для программ, которые должны, помимо прочего, анализировать сетевой трафик. По сути, это виртуальная машина на основе регистров, разработанная для запуска пользовательской 64-битной RISC-подобной архитектуры посредством своевременной компиляции внутри ядра Linux.

Отношения eBPF с ядром Linux можно сравнить с отношениями JavaScript с веб-страницами — они ​​позволяют изменять поведение ядра Linux путем загрузки выполняемой программы без изменения фактического исходного кода ядра или загрузки модуля ядра.

Windows в последние годы перешла на использование инструментов Linux. Программы eBPF доказали свою эффективность в Linux для защиты от отказа в обслуживании и наблюдения за системой, и возник интерес к адаптации технологии для других операционных систем.

Проект ebpf-for-windows нацелен на то, чтобы позволить разработчикам использовать наборы инструментов eBPF и интерфейсы прикладного программирования поверх существующих версий Windows.

По словам партнера-разработчика ПО Microsoft Дэйва Талера и главного инженера-программиста Пурны Гаддехосур, они используют несколько существующих проектов с открытым исходным кодом eBPF и адаптируют их к работе в Windows. Пока проект находится на ранней стадии разработки. eBPF для Windows будет полагаться на IOVisor uBPF и верификатор PREVAIL с использованием специфической среды хостинга.

Разработчики Windows смогут использовать такие инструменты, как clang, для генерации байт-кода eBPF из исходного кода, который можно использовать с командной строкой Windows netsh через общую библиотеку на API Libbpf. Библиотека передает байт-код eBPF через статический верификатор PREVAIL в среде безопасности Windows.

Инженеры Microsoft говорят, что проект направлен на обеспечение совместимости кода eBPF с использованием хуков и помощников, которые существуют как в Linux, так и в Windows.

Пока добавлены два перехватчика — XDP и привязка сокета — для обработки событий и взаимодействия с вспомогательными API-интерфейсами, доступными через оболочку eBPF.