【えっくすでぃーぴー】

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は『データの通り道』。カーネルの最速ルートでパケットを処理するという意味だよ
← 用語集にもどる