2019 年初頭の時点では、bpfilter はまだ開発中であり、まだ使用できません。基本的なスケルトンはここにあり、4.18 以降のカーネルでも有効化される可能性がありますが、まだ完成していないため、現時点ではあまり機能しません。iptables ルールを BPF バイトコードに変換するために必要なコードは、元の RFCに沿って提出されましたが、現時点ではカーネルに組み込まれていません。
準備が整ったら、特定のツールは必要ありません。Bpfilter は などで有効になる可能性が高くmodprobe bpfilter
、バックエンドを透過的に置き換え、フロントエンドはそのままにしておきiptables
ます。特定のオプションを必要とせずに、ルールを処理するために必要な唯一のツールにする必要があります。さらに、bpftool
カーネルにロードされた eBPF プログラム (bpfilter によって変換された iptables ルールを含む) を検査できます。
必要に応じて、次のビデオ(免責事項: 私の会社によるもの) でこれを確認できます。これは、従来の iptables ルールで bpfilter を使用した方法を示しています (RFC のコードでカーネルにパッチを適用し、bpfilter.ko を実行しています)。コンソールは最終バージョンでは必要ありません)。
bpfilter を使用しなくても、BPF プログラムを (ドライバーレベルで) XDP フックにアタッチして、netfilter が提供するものよりもはるかに優れたパフォーマンスを得ることができます。ただし、ルールを C プログラムとして完全に書き直し、clang を使用してそれらを eBPF にコンパイルし、ip
ツール (iproute2 から) などでロードする必要があります。これがあなたの「機能セット」と一致するかどうかはわかりません。必要性に応じて、別の抜本的なオプションとして、パケット処理をユーザー空間に移動し、DPDK フレームワークを使用してセットアップを再実装することができます。