DPDKを利用しているOSSの紹介 ~DPDK入門 第17回~
DPDKを利用しているOSS(オープンソースソフトウェア)ついてご紹介します
DPDK入門
- 2023年09月11日公開
はじめに
こんにちは、NTTテクノクロスの山下です。これまで、DPDK入門ブログでは主にDPDKそのものの利用法について解説してきました。一方、世の中にはDPDKを利用したOSS(Open Source Software)が多数存在します。今回は、それらの分類や、それらを利用することによりアプリケーション開発者が得られるメリットについてご紹介したいと思います。
OSSの利便性
まず、OSSの一般的な利便性について考えてみます。
オープンソースソフトウェア(英: Open Source Software、略称: OSS)とは、利用者の目的を問わずソースコードを使用、調査、再利用、修正、拡張、再配布が可能なソフトウェアの総称です。
有名なOSSとしてはLinuxカーネルやDPDKもオープンソースです。OSS利用の大きなメリットの一つとしてソフトウェア製造の「生産性の向上」があります。
DPDK自体を例に説明します。DPDKは大雑把に言うとDPDK対応NICとアプリケーション間でのやりとりを橋渡しする一種のドライバーとメモリ管理など便利な共通処理を提供するライブラリ群の集合です。
開発規模も相当大きいですし、NICが増えるたびにドライバ部を増やす必要もあります。仮に1社だけで、これを開発することは大変です。また、1社開発だとすると苦労して作ったあげく、サポートできるのはA社のNICのみです。
かわりにオープンソースとして複数社として開発した場合のメリットとしては
1)複数社のNICのサポートが可能となる(利用者メリット)
利用者はDPDKの基本的な利用方法を知っていれば、あるベンダのNICから別ベンダのNICへの乗り換えも相対的に容易になる
2)開発スピードが向上する「Time to Market」が短くなる(ベンダメリット)
複数社で分担しながら開発するため、単独社で開発することに比べて開発スピードが向上する
3)オープンソースは無料で利用できるため、より多くのユーザに知ってもらえる機会が増える。このことによりNICの販売機会が向上する(ベンダメリット)
図1. OSSにするメリット
DPDK関連ではどのようなOSSが存在しているか?
今回は、DPDKを開発しているdpdk.orgのWebサイトに掲載されているDPDKを利用したソフトウェア(Ecosystem - DPDK)について2023年6月時点で調査してみました。
上記ページには、ソフトウェアの分類の記載はありませんが、わかりやすさのため、どのよう内訳になるかを分類してみました。
図2. DPDKを利用したOSSの分類
分類をした結果、OSSについてもバラバラな用途で作られているわけではなく、特定の目的にある程度集中しているように見えます。
上位の3分類について、それぞれ利用するメリットを詳しく解説してみます。
1. プロトコルスタック
DPDKは、カーネルバイパスを利用することにより大量・高速のパケット送受信を実現しています。(NICへのオフロード処理がないと仮定した場合)
これは、カーネルで具備しているTCP/IPスタックの処理を自前で準備する必要があることを意味しています
しかしながら、アプリケーション開発者がTCP/IP処理を一から準備することは一般的に困難です。
(TCP/IPにはチェックサム処理や、再送処理や大きいサイズのパケットの分割や組み立て処理があり(TCP)、単純ではありません)
一方、プロトコルスタックがOSSで用意されていれば、この課題を解決することができます。
以下の図は、上記について表しています。
図3. DPDKを利用した場合の課題
2.高速アプリケーション開発フレームワーク
アプリケーションのパケット処理の高速化・大容量化のアプローチとして既存のカーネールベースで動作していたアプリケーションをDPDK向けに移植するという考え方があります。
一方、DPDKが高速化の手段として存在することを前提にアプリケーションを作成するようなフレームワークも存在します。
このようなOSS(フレームワーク)を利用すれば、開発者が一からアプリケーションを作成する手間が軽減される可能性が高くなります。
図4. 高速アプリケーション開発フレームワークを利用するメリット
3. トラフィックジェネレータ
アプリケーションの限界時の性能を測定するために、短期間に大量の負荷をかける目的でトラフィックジェネレータが使われる場合があります。ただし、一般的に専用のトラフィックジェネレータは非常に高機能・高性能であるがゆえに、高額で簡単に購入することができない場合があります。
代替手段として、Linux上にソフトウェアで実現されるトラフィックジェネレータがありました。ただし、従来のカーネルベースのパケットジェネレータではカーネルオーバヘッドにより大量パケットの送受信時にパケットをロスする課題が存在していました。例えば、DPDKライブラリを利用したアプリケーションの性能測定時に上記のようなパケットロスにより性能測定時に課題があります。トラフィックジェネレータもDPDKを採用することによりこの課題を克服することが可能となります。
図5. DPDKベースのトラフィックジェネレータを利用するメリット
おわりに
今回はDPDKを利用したOSSとそれを利用するメリットについてご紹介しました。本記事の連載に関して何か問い合わせがございましたら、以下に連絡下さい。よろしくお願いします。
本件に関するお問い合わせ
[著者プロフィール]
フューチャーネットワーク事業部 第一ビジネスユニット
山下 英之(YAMASHITA HIDEYUKI)