# 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]]