DPDK は、ネットワークを単純に速くする追加機能ではありません。DPDK の本質は、Linux kernel の通常のネットワークスタックで処理していたパケットを、userspace の dataplane で扱えるようにすることです。
そのため、DPDK を理解するときは「高速化技術」という言葉だけで見ない方がよいです。大事なのは、パケットをどこで受け取り、どの CPU で処理し、Linux kernel のどの機能を使わなくなるのかです。
この記事では、DPDK、kernel bypass、Poll Mode Driver、HugePages、CPU 専有、OVS-DPDK や vhost-user との関係を、VM パフォーマンス設計の入口として確認します。
この記事の結論
- DPDK は kernel bypass により userspace dataplane でパケットを処理するための技術である
- 割り込みを待つのではなく polling でパケットを取りに行くため、CPU の使い方が通常の Linux と変わる
- HugePages、NUMA、CPU pinning、NIC の配置を合わせないと利点を出しにくい
- OVS-DPDK、vhost-user、NFV、仮想ルーター、仮想ファイアウォールの文脈で使われることが多い
- 一般的な Web サーバーや管理系 VM では、DPDK より virtio-net / vhost-net の通常経路で十分な場合も多い
通常の Linux ネットワーク処理
通常の Linux サーバーでは、NIC に届いたパケットは NIC driver を通じて Linux kernel に渡されます。kernel network stack は、IP、routing、firewall、socket、bridge、Open vSwitch などの処理を担当します。
- Ethernet frame の受信
- IP header の処理
- routing 判断
- firewall 処理
- bridge や Open vSwitch による転送
- socket を通じたアプリケーションへの受け渡し
この経路は汎用性が高く、標準ツールで見やすく、運用しやすいことが大きな利点です。一方で、packet forwarding のように大量の小さなパケットを処理する用途では、割り込み、データコピー、context switch、kernel scheduling の影響が目立ちます。
Linux kernel 経由の何が重いのか
kernel network stack は多くの用途を支えるために汎用的に作られています。Web サーバーや DB サーバーではその汎用性が利点になりますが、仮想ルーターや仮想ファイアウォールのような dataplane では、パケットごとの処理コストが積み上がります。
| 要素 | 通常経路で起きること | 高 pps での影響 |
|---|---|---|
| 割り込み | NIC からの通知を受けて処理する | パケット数が多いと割り込み処理が増える |
| context switch | kernel と userspace の境界をまたぐ | 小さい処理が大量に発生すると効きやすい |
| データコピー | 層の間で buffer を扱う | copy の回数が性能に影響する |
| 汎用処理 | routing、firewall、socket などを扱う | 専用 dataplane では不要な処理も通りやすい |
DPDK は何をするのか
DPDK は、NIC から受け取ったパケットを userspace のアプリケーションが直接扱いやすくするためのライブラリとドライバ群です。Linux kernel の通常の network stack を主経路にせず、userspace の dataplane が packet processing を担当します。
この考え方を kernel bypass と呼びます。kernel を完全に不要にするという意味ではなく、パケット処理の hot path から通常の kernel network stack を外す、という意味で捉えると分かりやすいです。
Poll Mode Driver という考え方
DPDK では、割り込みを待つのではなく、CPU が NIC の receive queue を polling してパケットを取りに行きます。この仕組みは Poll Mode Driver と呼ばれます。
polling は低遅延で大量パケットを扱いやすい一方、待機中でも CPU を使います。そのため、DPDK の CPU 使用率が高く見えること自体は異常とは限りません。監視では、CPU 使用率だけでなく、pps、drop、latency、queue、NUMA 配置を合わせて見る必要があります。
DPDK で得られるもの
- 高 pps の packet forwarding に向いた dataplane を作りやすい
- 割り込み依存を減らし、遅延や jitter を抑えやすい
- userspace で packet buffer と queue を制御しやすい
- OVS-DPDK や VPP など、専用 dataplane と組み合わせやすい
DPDK で失うもの
DPDK は性能上の利点がある一方で、Linux 標準の見え方や運用のしやすさを一部手放します。kernel network stack を主経路にしないため、通常の iptables、nftables、tcpdump、interface 統計だけでは見えにくい箇所が増えます。
- CPU を専有に近い形で使いやすい
- HugePages の確保が必要になりやすい
- NUMA 配置の影響を強く受ける
- 標準的な Linux ネットワーク運用と見え方が変わる
- ライブマイグレーションや柔軟な VM 配置と相性が悪くなる場合がある
HugePages が必要になる理由
DPDK は大量の packet buffer を扱うため、HugePages を使う構成が一般的です。HugePages を使うことで TLB miss を減らし、メモリアクセスの予測性を上げやすくなります。
ただし、HugePages は確保しただけで速くなるものではありません。NIC、CPU、メモリが同じ NUMA node に近い形で配置され、DPDK の process や PMD thread が適切な CPU で動いていることが重要です。
CPU core を専有するという考え方
DPDK では、dataplane 用の CPU core を専有に近い形で使うことがあります。これは無駄に見えるかもしれませんが、packet processing の遅延や jitter を抑えるための設計です。
逆に言えば、CPU を柔軟に共有したい環境や、VM を頻繁に移動したい環境では、DPDK の前提が運用と衝突することがあります。平均帯域だけでなく、CPU 専有を許容できるかも採用判断に含めます。
DPDK はどこで使われるのか
| 用途 | DPDK が関係しやすい理由 |
|---|---|
| OVS-DPDK | Open vSwitch の datapath を userspace 側へ寄せる |
| vhost-user | QEMU と userspace dataplane を接続する |
| NFV / VNF | 仮想ルーターや仮想ファイアウォールで高 pps を扱う |
| VPP | userspace packet processing を中心にした dataplane を作る |
| 5G / telecom | 低遅延で packet processing を安定させたい |
ホスト側で確認すること
DPDK を検討するときは、機能名だけを見るのではなく、ホストの CPU、NUMA、HugePages、NIC、Open vSwitch の状態を先に確認します。
lscpu
numactl --hardware
grep -i huge /proc/meminfo
ip link show
ovs-vsctl showDPDK は常に必要なのか
DPDK は、すべての VM ネットワークに必要な技術ではありません。一般的な Web サーバー、DB、管理系 VM では、virtio-net と vhost-net の通常経路で十分なことが多いです。
DPDK が向くのは、packet forwarding そのものが主役で、pps、遅延、jitter、drop を厳しく見たい用途です。性能だけでなく、CPU 専有、HugePages、NUMA、監視、障害時の切り分けを受け入れられるかで判断します。
まとめ
DPDK は、単にネットワークを速くする機能ではありません。Linux kernel の通常経路から userspace dataplane へパケット処理の場所を移し、polling、HugePages、NUMA、CPU 専有を前提に packet processing を作る技術です。
DPDK を選ぶかどうかは、速そうだからではなく、どの dataplane を作りたいのかで決めます。通常の VM ネットワークなら virtio-net / vhost-net を先に確認し、NFV や高 pps の userspace dataplane が必要な場合に DPDK、OVS-DPDK、vhost-user を検討するのが現実的です。
書籍
CPU 仮想化支援、メモリ仮想化、割り込み、仮想デバイスなど、VM の実行モデルを低レイヤから理解する参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。

