SDN・ネットワーク仮想化

DPDK(Data Plane Development Kit) でぃーぴーでぃーけー

カーネルバイパスパケット処理ユーザー空間高速ネットワークNICSR-IOV
DPDKって何?なんで必要なの?

簡単に言うとこんな感じ!

ネットワークの「高速レーン」を作る技術だよ!普通はOSが「パケット(データの塊)の仕分け係」をやるんだけど、それが遅い原因になることも。DPDKはOSを飛び越えてアプリが直接NIC(ネットワークカード)と通信できるから、爆速でパケットを処理できるんだ!


DPDK(Data Plane Development Kit)とは

DPDK(Data Plane Development Kit) は、Intelが開発しオープンソース化した、高速パケット処理を実現するためのライブラリとドライバの集合体です。通信事業者やクラウド事業者が求める「毎秒数百万〜数千万パケット」という超高速処理を、汎用的なx86サーバー上で実現するために生まれました。

従来、LinuxなどのOSカーネル(OSの中核部分)がパケットの送受信を担当していました。しかし、カーネルとアプリケーションの間でデータをやり取りする「コンテキストスイッチ」や「メモリコピー」が発生するため、どうしても処理に時間がかかります。DPDKは「カーネルバイパス」という手法でこの問題を解決します。つまり、OSカーネルを経由せずに、アプリケーションが直接ネットワークカード(NIC)と通信するのです。

DPDKは5Gコアネットワーク、仮想ルーターファイアウォールロードバランサーなど、通信業界のあらゆる「高速処理が求められる場所」で活用されています。専任のインフラ担当者やシステムベンダーが導入を担う技術ですが、高性能ネットワーク機器の選定やシステム発注時に「DPDKに対応しているか」を確認することがビジネスパーソンにも求められる場面が増えています。


DPDKの仕組みと核心概念

DPDKの高速化は、いくつかの重要な技術要素の組み合わせで実現されています。

技術要素内容なぜ速いのか
カーネルバイパスOSカーネルを介さずNICに直接アクセスコンテキストスイッチ・割り込みが不要
ポーリングモード(PMD)割り込みを使わずCPUがNICを常時監視割り込み処理のオーバーヘッドがゼロ
HugePage通常より大きなメモリページ(2MB/1GB)を使用TLBミス(メモリアドレス解決の失敗)が激減
CPUコア固定(CPU Affinity)特定のCPUコアをパケット処理専用に割り当てキャッシュ効率が向上、他の処理と競合しない
ゼロコピーメモリ間のデータコピーを最小化メモリ帯域幅を無駄遣いしない
NUMA対応CPUとメモリの物理的な近さを考慮した配置メモリアクセスレイテンシを最小化

「カーネルバイパス」の覚え方

「高速道路のETC専用レーン」をイメージすると分かりやすいです。一般道(OS経由)は信号・渋滞(割り込み処理・コンテキストスイッチ)だらけ。ETCレーン(DPDK)は料金所を止まらずにスルーできるから爆速!という感じです。

処理速度の目安

処理方式1秒あたりのパケット処理数(目安)
Linuxカーネル(通常)数百万pps(packet per second)
DPDK利用時数千万〜1億pps以上
専用ハードウェアASIC数億pps〜(ただし柔軟性は低い)

歴史と背景

  • 2010年 — Intelが社内プロジェクトとして開発開始。汎用サーバーで通信専用機器(ルーター・スイッチ)に匹敵する性能を目指す
  • 2013年 — オープンソースとして公開。Linux Foundationのプロジェクトに採用される
  • 2014〜2016年NFV(ネットワーク機能仮想化)の普及とともに急速に注目される。通信キャリアが5G・クラウド化を進める上で必須技術に
  • 2016年 — DPDK.orgが設立され、コミュニティが拡大。ARM・IBM POWERなどx86以外のアーキテクチャにも対応
  • 2017年以降 — OpenStackやKubernetes上でのNFV基盤(例:Open vSwitch with DPDK)に組み込まれ、主要クラウド事業者が採用
  • 現在 — 5Gコアネットワーク、SD-WAN、仮想ファイアウォール、高頻度取引(HFT)など幅広い領域で標準的な技術となっている

通常のLinuxカーネル処理とDPDKの比較

DPDKがどのように「OS経由の処理」を省略しているかを図で見てみましょう。

通常のLinuxカーネル処理 NIC(ネットワークカード) パケットを受信 割り込み発生 OSカーネル パケット仕分け・コピー コンテキストスイッチ ソケットバッファ メモリコピー発生 アプリケーション ようやく処理開始 DPDK(カーネルバイパス) NIC(ネットワークカード) パケットを受信 カーネル バイパス! OSを省略 OSカーネル (スキップ) DPDKアプリケーション 直接・高速処理! ⚠ 遅延・オーバーヘッドが大きい ⚡ 超低遅延・高スループット

DPDKと関連技術の比較

技術アプローチ主な用途柔軟性
DPDKカーネルバイパス+ユーザー空間処理仮想NF・5G・HFT
SR-IOV物理NICを複数VMに直接割り当て仮想化環境での高速I/O
XDP(eBPFカーネル内で早期パケット処理DDoS対策・負荷分散中〜高
RDMAネットワーク越しの直接メモリアクセスストレージ・HPC低〜中
専用ASICハードウェアで固定処理高性能ルーター・スイッチ非常に低

DPDK vs XDP(eBPF) は最近よく比較されます。DPDKは「ユーザー空間で自由に処理を書ける柔軟さ」、XDPは「カーネル内で動くので管理が楽」という違いがあります。どちらが良いかはユースケース次第です。


関連する規格・RFC

規格・RFC番号内容
RFC 7348VXLAN(DPDKで高速処理されるオーバーレイネットワーク)
RFC 8300NSH(Network Service Header):NFVサービスチェイニングで利用
RFC 7665SFC(Service Function Chaining)アーキテクチャ:DPDKを活用するNFV構成の基盤

関連用語