【えっくすでぃーぴー】

XDP(eXpress Data Path) とは?

💡 カーネルの入口でパケットを捕まえる、最速のフィルタリング
📌 このページのポイント
XDP(eXpress Data Path)パケット処理 NIC 受信 XDP フック eBPFプログラム XDP_PASS XDP_DROP カーネル ネットワーク スタック アプリ XDP_TX(送り返す) 破棄(超高速) カーネルスタック前で処理 → iptablesの数倍〜数十倍高速
XDP(eXpress Data Path)のイメージ
ひよこ ひよこ

XDPって何がそんなにすごいの?

ペンギン先生 ペンギン先生

普通のパケット処理はカーネルのプロトコルスタックを全部通ってからアプリに届くけど、XDPはNICからパケットを受け取った瞬間に処理できるんだ。行列に並ばずVIP入場するようなものだよ

ひよこ ひよこ

どのくらい速くなるのかな?

ペンギン先生 ペンギン先生

iptablesでのフィルタリングと比べて10倍以上の処理性能が出ることもあるよ。1秒間に数百万パケットを処理できるから、大規模なDDoS攻撃の防御にも使えるんだ

ひよこ ひよこ

eBPFっていうのが関係してるの?

ペンギン先生 ペンギン先生

そうだよ。XDPの中身はeBPFプログラムなんだ。Cで書いたプログラムコンパイルしてカーネルにロードすると、パケットが届くたびにそのプログラムが実行される仕組みだね

ひよこ ひよこ

パケットを捨てる以外にもできることがあるの?

ペンギン先生 ペンギン先生

XDP_DROPで破棄、XDP_TXで送り返し、XDP_REDIRECTで別のインターフェースに転送もできるよ。ロードバランサーとして複数のサーバーパケットを振り分けるのにも使えるんだ

ひよこ ひよこ

実際にどんなところで使われてるの?

ペンギン先生 ペンギン先生

MetaのKatranロードバランサーCloudflareのDDoS防御、CiliumKubernetesネットワーキングなど、大規模インフラの最前線で使われているよ。知名度は低いけど、現代のインフラを支える重要技術だね

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「XDP」って出てきたら「Linuxカーネルの超高速パケット処理」と思えればだいたいOK!
📖 おまけ:英語の意味
「eXpress Data Path」 = 高速データパス
💬 eXpressは『超特急』、Data Pathは『データの通り道』。カーネルの最速ルートでパケットを処理するという意味だよ
← 用語集にもどる