カーネル内にL7ファイアウォールを構築:eBPFとJavaScriptでナノ秒の判定を実現
We Put an L7 Firewall in the Kernel

従来、HTTPヘッダーなどのアプリケーションデータを検査するファイアウォールはユーザースペースのプロキシで動作し、リクエストごとにミリ秒単位の遅延が発生していました。この記事では、eBPFを使用してカーネル内でL7ポリシーを判定するファイアウォールを構築した経験を紹介します。ポリシーはJavaScriptアプリとして記述でき、再ビルドや再デプロイなしで更新可能です。Aho-Corasickオートマトンを用いることで、単一パスの線形スキャンで数千のパターンをマッチングし、p50で200ナノ秒未満の判定時間を実現。HPACK動的テーブルを追跡し、オープンなインターネット上の任意のクライアントを処理します。
「これはジェーン・ストリートのやり方だ」と、フォーチュン500企業のエンジニアリングディレクターが言った。