Outline
- Motivation
- DPDK 概要
- DPDK 誕生の背景
- DPDKの動作概観
- DPDKのユースケース
- HOW TO USE DPDK
- Reference
- まとめ
Motivation
DPDK (Data Plane Development Kit)が発表された2014年からだいぶ月日は立っています。
ネットワーク業界でネットワークスタックの高速化話すると言葉を聞かないことがないDPDKについて、簡単ですが、自分の理解をまとめてみようと思います。
DPDK 概要
- Data Plane Development Kit の略
- ネットワーク処理に特化したアプリケーションを作成するためのソフトウェアライブラリ
- 特定のCPUコアをネットワークスタック処理するためのアプリケーションに割り当てて、集中的にアプリケーションがネットワーク処理を実行する
- DPDKで割り当てられたCPUは、NICの受信データを割り込み駆動ではなく、ポーリングして監視しているところがポイント
- 余談:Intel DPDKとDPDKは同等の意。Intelが途中からDPDKに変更
DPDK 誕生の背景
-
従来
- 専用機器を作ってパケット処理を実行
-
近年
- クラウド技術の流れを受けて、専用機器で実行していたパケット処理をソフトウェア実行することが流行り始める
- ソフトウェア化による大幅な性能低下が浮上
- e.g., 10Gbps NICのパケット処理不可能
-
ソフトウェアによる高速ネットワーク処理を実現するため、Intelが提案したのが、DPDK
ソフトウェアでパケット処理ときのオーバヘッド
例.カーネルで受信パケットカウント処理を実行する場合の処理シーケンス
- NICがカーネルに割り込み発生させる
- カーネルが割り込み処理するために、コンテキストスイッチを発生させる
- カーネルがNICに対応するDriver処理を実行する
- カーネルがネットワークスタック処理を実行する
- カーネルがパケットカウント処理(アプリケーション)を実行する
処理2と処理3, 処理4のソフトウェアオーバヘッドが大きい
DPDKの動作概観
アプリケーションはDPDKが提供するライブラリを使用することで、NICの送受信データとアプリケーション間でダイレクトにクセス可能
DPDKのユースケース [1/2]
下記のリンクに設定方法、サンプルコードと一緒にユースケースがリスト化されているので便利
http://dpdk.org/doc/guides-16.04/sample_app_ug/index.html
DPDKのユースケース [2/2]
例:Software Router
HOW TO USE DPDK
下記のスライドがよくまとまっている
http://blog.slankdev.net/2016/05/08/dpdk-setup/
Reference
- "DPDK Documentation"
http://dpdk.org/doc/guides-16.04/index.html - "Understanding DPDK"
www.slideshare.net/garyachy/dpdk-44585840 - "第53回 NFVとIntel DPDK(前編/後編) (中井悦司)"
https://www.school.ctc-g.co.jp/columns/nakai/nakai53.html
http://www.school.ctc-g.co.jp/columns/nakai/nakai54.html - "Intel DPDK の環境構築 [実機編]”
http://blog.slankdev.net/2016/05/08/dpdk-setup/
まとめ
- DPDK
- 専有的にCPUコアをアプリケーション処理に割り当てることで実現するネットワーク処理を高速化するためのツールキット
- ネットワークスタック処理の高速化手段として期待されている
用語説明
- Hugepages: ユーザスペースの1pageのサイズを大きくする仕組み
- PMD: CPUがドライバをポーリングするために使用するドライバーをPMD
- UIO: ユーザスペースにドライバを作成するための機能