ユーザ用ツール

サイト用ツール


サイドバー

目次

ホーム










.

knowledge:dpdk


DPDKで、高速ネットワーク通信を実現する

DPDKとは

Data Plane Development Kitの略で、オープンソースとして公開されている高速パケット処理用のライブラリとネットワークドライバのセットです。



DPDKとは? ~DPDK入門 第1回~ | NTTテクノクロスブログ

DPDKは特定のアプリケーションに対してカーネル機能をバイパスした専用機能を提供することで、高速化が実現できる開発キットになります。DPDKで実現する高速化の仕組みを図を用いて説明します。通常のアプリケーションあるいはユーザは、システムコールインタフェースを介して、カーネルの様々な機能を利用しています。DPDKで作成したアプリケーションは、システムコールを介することなく直接ハードウェアを制御できるため、より高速に動作することができます。

上図のようにカーネルの機能を頼ることなく必要最低限の処理を作り組むことで高速化を実現します。



リソース設定(NIC) ~DPDK入門 第6回~ | NTTテクノクロスブログ

通常のアプリケーション
NICは受信したパケットや送信するパケットを格納しておくメモリ領域を持っています。このメモリ領域のことを「キュー」といいます。 通常はカーネルがNICが受信したパケットをキューから取り出したり、送信したいパケットをキューに格納します。カーネルがこのような役割を担っているため、アプリケーションがパケット処理を実現する場合、システムコールを通してカーネルが格納したパケットを取得したり、送信したいパケットをカーネルに渡す必要があります。

DPDKアプリケーション
DPDKアプリケーションでパケット処理を実現する場合、下図のようにNICに対して常にポーリングでパケット受信を監視する形をとり、パケット自体もNICのキューから直接ユーザ空間(Hugepage)に移すため、オーバーヘッドなくすぐにパケット処理を実施することができます。


DPDKの注意点

DPDKでは、DPDKは、UIO(User space I/O)が直接NICを制御し、カーネルを利用しなくなるので、
tcpdumpでパケット受信確認を行う等、カーネルが用意しているコマンドが使用できなくなります。

通常アプリケーションによるカーネルでの処理内容

参考

ネットワークスタック

参考


knowledge/dpdk.txt · 最終更新: 2021/05/18 00:00 by kurihara

ページ用ツール