# DPDK
DPDK(Data Plane Development Kit) は、ユーザー空間から NIC を扱う高性能パケット I/O 基盤である。
本論文では、[[lwIP]] を DPDK 上で動作させ、既存の単純 HTTP サーバーと [[Redis]] へユーザー空間 TCP/IP スタックを透明に適用する評価基盤として使われた。(Source: [[@2023__USENIX-ATC__zpoline - a system call hook mechanism based on binary rewriting]] §3.3)
[[Unikraft]] 論文では、uknetdev と比較する高性能ネットワーク経路として使われる。Unikraft の特殊化 UDP キーバリューストアは DPDK とほぼ同等の 6.3〜6.4 M req/s を 1 コアで達成し、DPDK 版の 2 コア使用・約 1 GB イメージ・数秒起動に対して、1 コア・1.4 MB・80 ms という資源効率を示した。(Source: [[@2021__EuroSys__Unikraft - Fast, Specialized Unikernels the Easy Way]])
## 本論文での役割
zpoline はシステムコールをフックすることで、アプリケーションのソースコードを書き換えずに DPDK/lwIP のネットワーク処理を既存プログラムへ接続する。
この構成により、フック機構のオーバーヘッドがユーザー空間ネットワークスタックのスループットへ与える影響を比較できる。
## LUNAでの役割
[[LUNA]]はDPDKのPMD(Poll Mode Driver)でNICキューを直接ポーリングし、hugepage、mbuf、hash mapなどのデータ構造を利用する。NICの世代差を隠す統一インターフェースとしてDPDKを使い、Flow BifurcationとSR-IOVを組み合わせてカーネルTCPとの共存を実現した。(Source: [[@2023__USENIX ATC__Deploying User-space TCP at Cloud Scale with LUNA]])
## DPDK性能分析での役割
[[DPDK性能分析]] では、DPDK の EAL、Ethdev、Mempool、パイプラインをトレース対象とし、native tracer が出力する CTF を [[Trace Compass]] の DPDK プラグインで状態モデル・性能メトリクス・同期ビューへ変換する。DPDK の高速なユーザー空間経路を維持しつつ、従来のカーネル境界に依存した監視では見えにくい lcore、service、poll、mempool の状態を分析可能にする。(Source: [[@2026__ICPE__A Transparent and Efficient Performance Analysis Approach to Enhance DPDK Observability]])
[[XDPerf]] の資料では、DPDK は高性能トラフィックジェネレーターの代表的な比較対象として扱われる。DPDK 系は L2 からの多様な生成に強い一方、NIC 占有、hugepage、VFIO/UIO ドライバ束縛、追加依存関係が導入障壁となるため、XDPerf は XDP/eBPF と未変更ドライバで同じ性能領域を狙う。(Source: [[@2026__KubeCon Japan Community Day__XDPerf - A High-Performance Traffic Generator Built with WASM and eBPF]])
## XDP論文での役割(2018年の性能ベースラインとして)
XDP(eXpress Data Path)論文は、「既存ソリューションの中で最高性能を持つ」DPDK(testpmd、18.05リリース)をベースラインとして XDP と比較評価した。パケットドロップ性能で DPDK は単一コア43.5 Mpps、XDP は24 Mppsであり、XDP は DPDK に完全には届かないものの、カーネルとの協調統合・API 安定性・動的再ロード・CPU 使用量のオフロード負荷連動などカーネルバイパス方式(DPDK)にない利点を持つと論じた。フォワーディング性能では XDP が同一インタフェース送出時に2コア以上で DPDK を上回った。(Source: [[@2018__CoNEXT__The eXpress Data Path - Fast Programmable Packet Processing in the Operating System Kernel]])
## 関連
- [[lwIP]]
- [[zpoline]]
- [[カーネルバイパスネットワーキング]]
- [[ユーザーレベルTCPスタック]]
- [[@2021__EuroSys__Unikraft - Fast, Specialized Unikernels the Easy Way]]
- [[@2026__ICPE__A Transparent and Efficient Performance Analysis Approach to Enhance DPDK Observability]]
- [[@2018__CoNEXT__The eXpress Data Path - Fast Programmable Packet Processing in the Operating System Kernel]]