| 安定版リリース | 2024年11月24日/11月30日[1] |
|---|---|
| リポジトリ | git.dpdk.org |
| 書かれた | C |
| オペレーティング·システム | Linux、FreeBSD、Windows |
| タイプ | パケット処理 |
| ライセンス | BSDA の |
| Webサイト | 詳しくはこちら |
データプレーン開発キット( DPDK ) は、Linux Foundationが管理するオープンソース ソフトウェア プロジェクトです。オペレーティング システムカーネルからユーザー空間で実行されているプロセスにTCPパケット処理をオフロードするためのデータ プレーンライブラリとネットワーク インターフェイス コントローラのポーリング モード ドライバのセットを提供します。このオフロードにより、カーネルで提供される割り込み駆動型処理を使用する場合よりも高い計算効率とパケット スループットが実現されます。
DPDKは、 x86、ARM、PowerPCプロセッサ用のプログラミングフレームワークを提供し、高速データパケットネットワーキングアプリケーションの開発を迅速化します。[2] [3] Intel AtomなどのモバイルプロセッサからIntel Xeonなどのサーバーグレードのプロセッサまで対応しています。Intel、IBM POWER8、EZchip、ARMなどの命令セットアーキテクチャをサポートしています。[4]オープンソースの[5] BSDライセンスに基づいて提供およびサポートされています。
DPDKは、愛情を込めて「DPDKの父」として知られるIntelのエンジニア、ベンキー・ベンカテサンによって作成されました。彼は長い癌との闘病の末、2018年に亡くなりました。[6]
概要
DPDKフレームワークは、環境抽象化レイヤー(EAL)の作成を通じて、特定のハードウェア/ソフトウェア環境用のライブラリセットを作成します。[7] [8] EALは環境の詳細を隠し、ライブラリ、利用可能なハードウェアアクセラレータ、その他のハードウェアおよびオペレーティングシステム(Linux、FreeBSD)要素への標準プログラミングインターフェイスを提供します。特定の環境用のEALが作成されると、開発者はライブラリにリンクしてアプリケーションを作成します。たとえば、EALはLinux、FreeBSD、Intel IA- 32ビットまたは64ビット、IBM POWER9、ARM 32ビットまたは64ビットをサポートするフレームワークを提供します。
EAL は、時間参照、汎用バスアクセス、トレースおよびデバッグ機能、アラーム操作などの追加サービスも提供します。
DPDKライブラリを使用すると、カーネルとカーネルからユーザーへのコピーを排除して、オーバーヘッドの少ない実行完了、パイプラインまたはステージング、イベント駆動、またはハイブリッドモデルを完全にユーザー空間で実装できます。NIC / Regex /アクセラレータからのハードウェア支援、バルクパフォーマンスのためのIntelligence Storage Acceleration(ISA) [9]を利用するように強化されたライブラリ、ポーリングによるデバイスへのアクセスは、割り込みのパフォーマンスオーバーヘッドの排除にも役立ちます。Hugepagesは、大規模なメモリプールの割り当てに使用され、検索とページ管理の量を減らします。[10]
DPDK には、ソフトウェア アーキテクチャのベスト プラクティス、データ構造の設計とストレージに関するヒント、アプリケーション プロファイリングとパフォーマンス チューニング ユーティリティ、一般的なネットワーク パフォーマンスの欠陥に対処するヒントを強調したソフトウェア サンプルも含まれています。
図書館
DPDKには、以下のデータプレーンライブラリと最適化されたネットワークインターフェースコントローラ(NIC)ドライバが含まれています。 [11]
- キューマネージャはロックレスキューを実装する
- バッファマネージャは固定サイズのバッファを事前に割り当てる
- メモリマネージャはメモリ内のオブジェクトのプールを割り当て、リングを使用して空きオブジェクトを格納します。これにより、オブジェクトがすべてのDRAMチャネルに均等に分散されます。
- ポーリングモードドライバ(PMD)は非同期通知なしで動作するように設計されており、オーバーヘッドを削減します。
- パケットフレームワーク – パケット処理の開発を支援するライブラリのセット
すべてのライブラリはdpdk/lib/librte_*ディレクトリに保存されます。
プラグイン
DPDKには多くのハードウェアタイプ用のドライバが含まれています。[12]過去にはツリー外のプラグインドライバがいくつか追加されていましたが、現在は非推奨と見なされています。
- librte_pmd_vmxnet3.so – Vmxnet3 準仮想化 NIC をサポートする PMDイーサネットレイヤーを提供します。ネイティブ DPDK での完全な VMXNET3 サポートに置き換えられました。
- librte_pmd_memnic_copy.so – パケットの2つのメモリコピーに基づく共有メモリを介して仮想PMDイーサネット層を提供します。
環境
DPDK は元々、現在非推奨となっているベアメタルモードで実行するように設計されました。DPDK の EAL は、Linux または FreeBSDユーザーランド アプリケーションのサポートを提供します。[引用が必要]
EAL は、あらゆるプロセッサをサポートするために拡張できます。[引用が必要]
エコシステム
DPDKは現在、 Linux Foundationのオープンソースプロジェクトであり、多くの企業によってサポートされています。DPDKは理事会によって統括されています。技術活動は技術委員会によって監督されています。[13 ] DPDKの貢献者であるIntelのほかにも、いくつかのベンダーが自社製品内でDPDKをサポートしており、追加のトレーニング、サポート、プロフェッショナルサービスを提供しています。DPDKのサポートを発表しているベンダーのリストには、 6WIND、[14]、 ALTEN Calsoft Labs、[15] [16]、 Advantech、[17]、 Brocade、[18]、 Big Switch Networks、Mellanox Technologies、[19]、 Radisys、[20]、 Tieto、[21]、 Wind River、[22]、 Lanner Inc. [23]、NXPが含まれています。[24]
プロジェクト
pfSenseプロジェクトは2015年2月25日にロードマップを公開し、開発者のジム・トンプソンはpfSenseコア(pf、ネットワークパケット転送とシェーピング、リンクボンディング、IPsecを含む)をDPDKを使用して書き直すことを発表しました。「私たちの目標は、少なくとも14.88Mppsの速度でパケットフィルタリングを行いながら転送できるようにすることです。これは10Gbpsのインターフェースでの「ラインレート」です。このタイプの負荷には、今日のFreeBSD(またはLinux)のカーネル内スタックを使用する方法はありません。」[25]
Open vSwitch (OVS) には、Linux カーネル OVS 処理をバイパスするために利用できる、ユーザーランドで実行される限定された機能セットがあります。DPDK ユーザーランドでの OVS のこのユースケースは、通常、OVS-DPDK と呼ばれます。これは主にOpenStack Neutron でデプロイされますが、Openstack の多くの機能とソフトウェア定義ネットワーク(SDN) 機能が無効になっていることを前提としています。たとえば、OVS-DPDK を使用すると、Neutron は OVS カーネルを使用する場合よりもセキュリティ レベルが低くなります (ステートフル ファイアウォールなし、セキュリティ グループが少ない)。
FD.IO VPP プラットフォームは、すぐに使用できる製品品質のスイッチ/ルーター機能を提供する拡張可能なフレームワークです。これは、シスコのVector Packet Processing ( VPP ) テクノロジのオープンソース バージョンです。これは、汎用 CPU で実行できる高性能のパケット処理スタックであり、NIC と暗号化アクセラレーション ハードウェアおよびライブラリの両方で Poll Mode Drivers を活用できます。[26] VPP は DPDK ライブラリをサポートし、使用します。[27]
TRexはDPDKを使用したオープンソースのトラフィックジェネレータです。実際のトラフィックテンプレートの前処理とスマートリプレイに基づいてL4-7トラフィックを生成します。TRexはクライアント側とサーバー側の両方のトラフィックを増幅し、Intel XL710を使用した1つのUCSで200Gbit/sまで拡張できます。TRexは複数のストリームをサポートし、任意のパケットフィールドを変更する機能があり、ストリームごとの統計、レイテンシ、ジッターを提供します。[28]
DTS(DPDK Test Suite)は、機能テストとベンチマークのためのPythonベースのフレームワークです。2014年に開始されたオープンソースプロジェクトで、dpdk.orgでホストされています。Scapyやdpdk-pktgenなどのソフトウェアトラフィックジェネレータと、Ixiaなどのハードウェアトラフィックジェネレータの両方をサポートしています。[29]
DPDKはいくつかのSRIOVネットワークドライバをサポートしており、PF(物理機能)とVFの作成を可能にし、またVM(QEMU VMなど)を起動し、PCIパススルーを使用してVFを割り当てることも可能である[30]
DDP(Dynamic Device Personalization)は、DPDKで実装された新しい高度な機能の1つです。これにより、ホストをリセットすることなく、デバイスのファームウェアを動的にロードできます。[31]
参照
参考文献
- ^ 「DPDK」. core.dpdk.org .
- ^ Simon Stanley、パケット処理のすべて変更、Wayback Machineで 2016 年 8 月 21 日にアーカイブ、Heavy Reading、2013
- ^ Shamus McGillicudy、DPDK、スイッチ、サーバーのリファレンス設計がSDNエコシステムを前進させる、2015年9月18日アーカイブ、Wayback Machine、SearchSDN、2013年4月
- ^ 「DPDK: データプレーン開発キット - 概要」dpdk.org . 2016 年3 月 29 日閲覧。
- ^ Simon Stanley、DPDK がオープンソース化、Intel Embedded Community、2013 年 5 月
- ^ 「愛をこめて:DPDKの父、ベンキー・ベンカテサン」DPDK . 2022年5月12日閲覧。
- ^ DPDK ドキュメント、データ プレーン開発キット: プログラマーズ ガイド、2017 年 9 月
- ^ 「DPDK はユーザー空間からデバイスにどのようにアクセスできますか?」CodiLime 2019 年 8 月 22 日2019 年8 月 28 日閲覧。
- ^ 「DPDK がデータをデフレートする方法 | SNIA」www.snia.org . 2021 年6 月 21 日閲覧。
- ^ PANTHEON.tech (2020年1月9日). 「VPP 105: メモリ管理とDPDK API」. PANTHEON.tech . 2021年6月21日閲覧。
- ^ Intel Communications Infrastructure Division、データプレーン開発キットの概要、2012 年 12 月
- ^ 「サポートされているNIC」
- ^ DPDK 技術委員会
- ^ PRWeb、6WIND がポータブル パケット処理ソフトウェアを拡張し、データ プレーン開発キットをサポート、2016 年 3 月 26 日にWayback Machineにアーカイブ、2011 年 9 月
- ^ Calsoft Labs がデータプレーン開発キットの専門サービスとサポートを提供、ALTEN Calsoft Labs、2014 年 2 月 18 日、2016 年 3 月 4 日時点のオリジナルよりアーカイブ、2014 年10 月 28 日閲覧
- ^ https://builders.intel.com/docs/ALTEN-Calsoft-Labs-and-Intel-Improving-Network-Agility-with-Virtual-CPE.pdf [ベア URL PDF ]
- ^ COTS Journal、ATCA ブレードが Xeon E5-2600 プロセッサを搭載、2016 年 3 月 4 日にWayback Machineにアーカイブ、2012 年 6 月
- ^ ブロケード vRouter
- ^ Technologies、Mellanox。「データプレーン開発キット (DPDK) | ポールモードドライバー (PMD)」。Mellanox 。 2021年2月10日閲覧。
- ^ MarketWatch、ラディシスがデータプレーン開発キット向けの業界初の 40G ソリューションを提供、2012 年 9 月
- ^ Tieto、Tieto はデータプレーン開発キット向けの専門的なソフトウェア サービスとサポートを提供します、2012 年 2 月
- ^ ロイター、ウインドリバー、高性能パケット処理向けデータプレーン開発キットのサポートとサービスを提供、2012年5月
- ^ Get Flying with the Data Plane Development Kit、Lanner Electronics Inc.、2013年2月20日、2015年12月6日時点のオリジナルよりアーカイブ、 2013年7月11日閲覧
- ^ データプレーン開発キットにおける NXP プラットフォームのサポート
- ^ Thompson, Jim (2015 年 2 月 25 日). 「Further (a roadmap for pfSense)」. blog.pfsense.org . Electric Sheep Fencing LLC . 2015 年4 月 21 日閲覧。
- ^ 「VPP fd.io」。wiki.fd.io。Linux Foundation 。 2016年12月29日閲覧。
- ^ PANTHEON.tech (2020年1月9日). 「VPP 105: メモリ管理とDPDK API」. PANTHEON.tech . 2021年6月21日閲覧。
- ^ "TRex". Cisco Systems . 2016年12月29日閲覧。
- ^ Rami Rosen、DPDK によるネットワーク高速化、lwn.net、2017 年 7 月
- ^ Rami Rosen、「DPDK を使用したユーザー空間ネットワーキング」、Linux Journal、2018 年 4 月。
- ^ Rami Rosen、「DPDK の詳細」、Kernel TLV、2018 年 8 月
