Berkeley Packet Filter
一部のプロジェクトでは、オリジナルとは異なるBPF命令セットや実行手法を使用している。
FreeBSD、NetBSD、WinPcapなどの一部のプラットフォームでは、パフォーマンスを向上させるために、JITコンパイラを使用してBPF命令をネイティブコードに変換している。LinuxにはBPF JITコンパイラが含まれているが、デフォルトでは無効になっている。
同じ仮想マシン言語のカーネルモードのインタープリターは、Tru64 Unixなどの他のオペレーティングシステムの生のデータリンク層の内部や、Linuxカーネルのソケットフィルター、WinPcapやNpcapのパケットキャプチャの内部で使用される。
バージョン3.18以降のLinux カーネルには、extended BPF(eBPF)と呼ばれる10個の64ビットレジスタを備えたeBPFの仮想マシンが含まれている。eBPFプログラムをさまざまなTracepointにアタッチする用途など、ネットワーク以外の目的でも使用できる。
カーネルバージョン3.19以降では、eBPFフィルターはソケット(英語版)にアタッチすることができ、カーネルバージョン4.1以降は、ingressおよびegressネットワークデータパスのトラフィック制御(英語版)分類器にアタッチできる。元の古いバージョンは、遡及的にclassic BPF(cBPF)に名前が変更された。