7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

SR-IOV vs DPDK

Posted at

なぜ SR-IOV vs DPDK をテーマに

 5G ネットワークの三大特徴高速度、低遅延、多接続の中、高速度と低遅延を実現するために、Core & RAN の VNF / CNF が高いスループットと低遅延のネットワーク要件をクリアしなければいけません。
 その要件を実現するための技術として、SR-IOV と DPDK がよく挙げられています。それぞれの定義および2つの違いと利用シーンはこちらの BlogIntel さんの論文には詳しく記載されています。この Blog は私個人の勉強のためのメモとなります。

通常の VM のネットワークフロー

image.png
 アプリは OS カーネルを通して VM vNIC からパケットを送出し、さらにハイパーバイザーの vSwith を経由して、最終的に物理サーバの NIC から外の物理ネットワークに出て行きます。受信する時も同じプロセスを経て受信します。

SR-IOV とは

 SR-IOV (Single Root IO Virtualization) は物理 NIC が提供する仮想機能であり、1つの物理 NIC(PF)から複数の仮想 NIC(VF)を作り出し、直接 vNIC として VM にアサインする技術です。ハイパーバイザーも vNIC -> VF への PCI Pass Through をサポートしなければいけません。
 image.png
 SR-IOV を使う場合、ハイパーバイザーの vSwitch での処理が省かれるため、より高スループットと低遅延が実現されます。一方で、vSwitch が提供する運用に利便な機能(例えば vSphere VDS / vMotion)が使えなくなります。
 ※ vSphere 環境での SR-IOV 実装

DPDK とは

DPDK

 DPDK(Data Plane Development Kit)はその名と通り、開発キットなので、アプリに組み込み型で高速通信を実現する技術です。
image.png
 アプリが DPDK を使い、ネットワーク IO 処理をカーネルを飛ばして、直接 NIC 経由で外と通信します。
 素の DPDK はアプリ向けの技術なので、サーバは VM / 物理マシンを問わないです。

DPDK + OVS

 DPDK の特性を VM の世界で生かして、ハイパーバイザに内蔵する vSwitch と結合したのは DPDK + OVS です。
 OVS も Linux ベースなので、DPDK を入れることによって、vSwith での処理もアプリ VM と同じように、カーネルを飛ばすことができます。
image.png
 この場合、アプリには DPDK が入ってないですが、OVS の DPDK は OVS のパフォーマンスを上げられます。
 ※ vSphere + NSX-T の場合、NSX-T の Enhanced Data Path 機能を使い、N-VDS で DPDK が実装されます。(ただ、VM が DPDK を対応しないと、vSwitch のみの DPDK は性能改善の効果があんまりよくない)
 ※ NSX-T 3.2 Enhanced Data Path の実装

DPDK + OVS & VNF

 アプリの DPDK と OVS の DPDK を併用することによって、VM のカーネルと vSwitch のカーネルを両方飛ばすことによって、更なる性能改善が期待できます。
image.png

DPDK vs SR-IOV

 DPDK と SR-IOV は両方ともネットワーク処理性能を上げるための技術ですが、どれを使うべきかとの質問がよくあります。
 NFV 環境において、ベアメタルに近い性能を追求するケースがよくありますので、SR-IOV がよく使われます。でも DPDK は SR-IOV と比べるともメリットがあります。
 1つは DPDK が vSwitch の機能を影響しなく、運用に利便性を提供しつつ性能を上げることができます。
 もう1つ、DPDK は vSwitch を使うので、VM-VM 間の E-W 通信は物理 NW に出ず、仮想 NW 内で完結することができ場合もありますので、特定のシナリオにおいて、SR-IOV より高い性能を出すことができます。
 こちらの Intel さんの論文 は異なるシナリオにおいて、DPDK と SR-IOV の性能差異に関する検証結果を示しています。

image.png
image.png
 逆に、N-S のトラフィックが多い場合、SR-IOV は著しい性能改善効果があります。
image.png
image.png

DPDK + SR-IOV

 上記 DPDK と SR-IOV を比較しましたが、実は DPDK と SR-IOV 仕組み上コンフリクトしていないので、両方合わせて構成することもできます。
 image.png
 いわゆる、アプリ/VM レイヤに DPDK + ハイパーバイザレイヤに SR-IOV の組み合わせです。単独より組み合わせの方は改善効果が期待できます。
 ただ、前章で比較されているのはハイパーバイザレイヤでの DPDK vs SR-IOV なので、こちらの組み合わせと前提が違うので、気を付けておく必要があります。

最後に

 今回は SR-IOV と DPDK の概要、違いおよび利用シーンについてまとめました。CNF の場合も同じ考え方をシェアします。ただ、CNF の場合は Multus 等の実装方法も絡んで来るので、そこらへんは次回以降書いていきます。

7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?