Intelテクノロジーを使用して、物理アダプターから仮想アダプターにネットワークトラフィックを転送する

みなさんこんにちは! できるだけ早く物理カードから仮想マシンにトラフィックを転送できる既存のIntelテクノロジーの分析を共有したいと思います。 原則として、すべての方法はIntel XL710カードで実際にテストされているため、長所と短所についても説明します。 また、当社は仮想スイッチの開発にも関与しているため、これはすべて仮想スイッチの観点からです。



Intel SR-IOV



インテルの技術ではありませんが、実装のみが感じられます。 つまり、物理アダプター(PF)は複数の仮想(VF)に分割されます。 デフォルトでは、単一のVLAN内のトラフィックはPFの境界を越えず、ソフトウェアブリッジ上の仮想アダプターと比較して遅延が最も少なくなります。



ドライバー
VFは、仮想マシンにスローされるPCIデバイスです。 仮想マシンにはi40eドライバーが必要です。そうしないと、仮想マシンをピックアップできません。 確かに、港湾労働者は愚かにネットに投げ込むことができます。


Intel FlowDirectorを使用すると、基本的に動作を変更し、トラフィックがVF間またはPFから出るルールを指定できます。 また、RXキューでの手動トラフィック分散を行うか、カードに入った直後にハードウェアでトラフィックをドロップすることもできます。 フロー構成のサポートはドライバーにありますが、Flow Director専用の個別のAPIは見つかりませんでした。 誰が遊びたいか-ethtoolのソースを掘り下げるか、Intel DPDKを使用できます。APIはその中に実装されていますが、カードはすべての結果でカーネルドライバーから切り離されます。



私の観点から見ると、これらのテクノロジーは主に、仮想マシン間でトラフィックを転送する際の遅延を減らす必要がある管理者向けです。



長所 :VMWareとKVMの両方で動作します。 遅延と帯域幅の両方の点で、どこでもソフトウェアブリッジよりも高速です。 そして、CPUは食べません。



短所 :この場合の仮想スイッチ-仮想マシンを備えたサーバーからのPFがスタックしている別のハードウェアで実際のスイッチに変更する必要があります。

また、PFあたり64 VFは非常に小さくなりました。



Intel DPDK



この開発キットに関する記事はすでにハブにありました しかし、仮想マシンのコンテストでは、かなりの情報があります。 物理アダプターと仮想アダプターの間でトラフィックを転送する必要がある場合に、Intel DPDKを使用する主な方法を分析します。 私たちはOpenflowスイッチを使用しているため、このテクノロジーは私たちにとって主要なものです。

VMWareハイパーバイザーには実際には何も置かず、VMWare仮想マシン(e1000またはvmxnet3)の中にはあまり選択肢がないため、仮想マシンとして、DPDKアプリケーションが内部にあるKVMを意味します。 vmxnet3をお勧めします。



Intelは次の機能を喜んでくれました



方法1:痛み


技術的には、2つのうちの1つです。 TAPを介して仮想スイッチを選択し、e1000を仮想アダプターとして使用できます。DPDKVM内のアプリケーションがigb pmdを介してそれに固執する場合。









TAP経由で仮想スイッチを選択し、virtio-netを仮想アダプターとして使用できます。DPDKVM内にある場合、アプリケーションはvirtio pmdを介して仮想スイッチに固執します。









これらの方法の利点:シンプル; DPDKアプリケーションと通常のアプリケーションの両方で機能します。

短所:パフォーマンスは、痛み、大量のコピー、仮想マシン内の多くの移行、およびコンテキストの切り替えにすぎません。



方法2:Fast&Furios



IVSHMEMを使用して仮想スイッチを取得し(Qemuでパッチを適用する必要があり、現在は強力になっているようです)、仮想アダプターとして特殊なDPDKリングアダプターを作成できます。これは、DPDKアプリケーション間の最速のIPCメカニズムです。







長所 :より良いパフォーマンス

短所 :DPDKアプリケーションのみ



方法3:1つのサイズがすべてに適合する


vhost-user APIを使用して仮想スイッチを選択し、virtio-netを仮想アダプターとして使用できます。







長所 :DPDKアプリケーションと通常のアプリケーションの両方で機能し、パフォーマンスは良好です(ただし、アプリケーションにVM内にDPDKがある場合は、方法2よりも劣ります)

短所 :主にリンクステータスと他のバインディングに関連付けられており、解決できます



方法4:秘儀


Intel DPDKは、KNIデバイスを作成する方法も提供します。 簡単に言うと、ソフトrx / txキューを整理し、これらのキューを使用して仮想アダプターを作成し、skb_bufからmbufへのコピーを提供し、ネットワークの動作をエミュレートする個別のカーネルモジュールがあります。

最終結果が出るまで、現在調査中です。



しかし、すでに知られています:



長所 :DPDKリングと組み合わせて、レガシーの場合はKNIを作成し、DPDKのリングを残すことができます。 物理マップの上にKNIを作成できます。

短所 :どういうわけかうまくいかず、CPUが大量に消費し、特別な利点が見えません。

しかし、私たちはそれに取り組んでいます。



投稿し続けます。



All Articles