CodeZine(コードジン)

特集ページ一覧

Microsoft、eBPF機能のWindowsへの実装を目指すオープンソースプロジェクトを設立

  • LINEで送る
  • このエントリーをはてなブックマークに追加
2021/05/14 08:00

 米Microsoftは、Linuxネイティブのカーネル内仮想マシンであり、プログラム可能性、拡張性、俊敏性を提供するeBPF(extended Berkeley Packet Filter)を、Windows 10とWindows Server 2016以降で動作させるための、新たなオープンソースプロジェクト「eBPF-for-Windows」を5月10日(現地時間)に発表した。

 「eBPF-for-Windows」は、Windowsの既存バージョン上でeBPFのツールチェーンやAPIを使えるようにすることを目的としており、現状での開発は比較的初期段階にある。

 Windows版eBPFによって、clangなど既存のeBPFツールチェーンを使用して、さまざまな言語のソースコードからeBPFバイトコードを生成でき、結果のバイトコードは任意のアプリケーションでの使用や、Windows netshコマンドラインツールでの手動での使用が可能で、Libbpf APIを公開する共有ライブラリを使用する。

 ライブラリは、eBPFバイトコードをユーザーモード保護プロセスでホストされている静的ベリファイア(PREVAILベリファイア)に送信し、バイトコードがすべてのベリファイアの安全性チェックに合格した場合に、そのバイトコードは Windowsカーネルモード実行コンテキストで実行されているuBPFインタープリターにロードされるか、uBPFのJITコンパイラによってコンパイルされてネイティブコードをロードできる。

 カーネルモード実行コンテキストにインストールされたeBPFプログラムは、さまざまなフックに接続してイベントを処理し、パブリックWindowsカーネルAPIを内部的にラップするeBPFシムによって公開されるさまざまなヘルパーAPIを呼び出して、既存のバージョンのWindowsでeBPFを使用可能にする。これまでに、XDPとソケットバインドが追加されており、今後はさらに多くのフックとヘルパーが追加される予定となっている。

 なお、同プロジェクトは既存のeBPFのフォークではなく、IOVisor uBPFプロジェクトやPREVAILベリファイアといった既存のオープンソースプロジェクトを活用して、そのコードにWindows固有のホスティング環境を追加するものであり、OSのエコシステム全体に適用される共通のフックとヘルパーを使用するコードに、ソースコード互換性を提供することを目指す。

 あわせて、同プロジェクトではLibbpf APIを公開し、eBPFプログラムと対話するアプリケーションに対して、ソースコード互換性を提供する。

関連リンク

  • LINEで送る
  • このエントリーをはてなブックマークに追加

あなたにオススメ

All contents copyright © 2005-2021 Shoeisha Co., Ltd. All rights reserved. ver.1.5