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

Вдохновленный программным обеспечением фильтрации и захвата сетевых пакетов, получившим название Berkeley Packet Filter, eBPF — это виртуальная машина на основе регистров, предназначенная для запуска пользовательской 64-битной RISC-подобной архитектуры посредством своевременной компиляции внутри ядра Linux. Таким образом, программы eBPF особенно удобны для отладки и системного анализа, например для отслеживания вызовов файловой системы и реестра.

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

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

«The ebpf-for-windows проект направлена ​​на то, чтобы позволить разработчикам использовать знакомые цепочки инструментов eBPF и интерфейсы прикладного программирования (API) поверх существующих версий Windows », — сказал Дэйв Талер, партнер-разработчик программного обеспечения Microsoft, и Пурна Гаддехосур, главный инженер-программист Microsoft, в Сообщение блога. «Основываясь на работе других, этот проект берет несколько существующих проектов с открытым исходным кодом eBPF и добавляет« клей », чтобы заставить их работать в Windows».

Читайте также:
Oracle получает прибыль за запуск Fusion в министерстве внутренних дел Великобритании на фоне встряски корпоративного программного обеспечения в Уайтхолле °

Талер и Гаддехосур заявляют, что анонсируют проект, пока он все еще находится на ранней стадии разработки, чтобы способствовать сотрудничеству с сообществом eBPF и обеспечить совместимость с Windows.

Они подчеркивают, что не разветвляют eBPF. Скорее, eBPF для Windows будет полагаться на существующие проекты с открытым исходным кодом, такие как IOVisor проект uBPF и ПРЕДВАРИТЕЛЬНЫЙ верификатор для запуска программ eBPF в Windows с использованием специфической для Windows среды хостинга.

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

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

«Linux предоставляет множество ловушек и помощников, некоторые из которых очень специфичны для Linux (например, с использованием внутренних структур данных Linux), которые не могут быть применимы к другим платформам», — заявили они. «В общем случае применимы другие хуки и помощники, и их намерение состоит в том, чтобы поддерживать их в программах eBPF».

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

Читайте также:
Как редактировать фото на телефоне