元のリンク: https://zhuanlan.zhihu.com/p/583436603
1 高性能 SR-IOV ネットワーク (SR-IOV)
1.1 SR-IOV 原則の概要
SR-IOV は、Single Root I/O Virtualization の略称です。SR-IOV テクノロジーは、パフォーマンスとスケーラビリティを向上させるハードウェア ベースの仮想化ソリューションです。SR-IOV 標準により、仮想マシン間での PCIe (Peripheral Component Interconnect Express) デバイスの効率的な共有が可能になり、ネイティブ パフォーマンスに匹敵する I/O パフォーマンスを実現するためにハードウェアに実装されます。SR-IOV 仕様は、仮想マシンが I/O デバイスに直接接続できるようにする新しいデバイスを作成できる新しい標準を定義します。
SR-IOV 仕様は、 PCI-SIG ( http://www.pcisig.com )によって定義および維持されます。
単一の I/O リソースを多くの仮想マシンで共有できます。共有デバイスは専用リソースを提供し、共有の汎用リソースも使用します。このようにして、各仮想マシンは固有のリソースにアクセスできるようになります。したがって、SR-IOV が有効で、適切なハードウェアおよび OS サポート (イーサネット ポートなど) を備えた PCIe デバイスは、それぞれが独自の PCIe 構成スペースを持つ複数の個別の物理デバイスとして表示されます。
SR-IOV テクノロジー
SR-IOV の 2 つの新しい機能タイプは次のとおりです。
- 身体機能 (PF)
SR-IOV 仕様で定義されている SR-IOV 機能をサポートする PCI 機能。PF には、SR-IOV 機能を管理するための SR-IOV 機能構造体が含まれています。PF は、他の PCIe デバイスと同様に検出、管理、および処理できるフル機能の PCIe 機能です。PF には完全に構成されたリソースがあり、PCIe デバイスの構成または制御に使用できます。
- 仮想機能 (VF)
身体機能に関連付けられた機能。VF は、1 つ以上の物理リソースを物理機能および同じ物理機能に関連付けられた他の VF と共有できる軽量の PCIe 機能です。VF は、それ自体の動作のための構成リソースのみを持つことが許可されます。
各 SR-IOV デバイスは 1 つの物理機能 (PF) を持つことができ、各 PF には最大 64,000 の仮想機能 (VF) を関連付けることができます。PF は、この目的専用の属性を使用して設計されたレジスタを通じて VF を作成できます。
PF で SR-IOV が有効になると、PF のバス、デバイス、および機能番号 (ルーティング ID) を介して各 VF の PCI 構成空間にアクセスできるようになります。各 VF には、そのレジスタ セットをマップする PCI メモリ空間があります。VF デバイス ドライバーはレジスタ セットを操作してその機能を有効にし、実際の PCI デバイスとして表示します。VF が作成されると、IO ゲストドメインまたはベアメタルプラットフォーム上の Oracle Solaris ゾーンなどの個々のアプリケーションに直接割り当てることができます。この機能により、仮想機能が物理デバイスを共有し、CPU やハイパーバイザー ソフトウェアのオーバーヘッドなしで I/O を実行できるようになります。
1.2 SR-IOV の利点
SR-IOV 標準により、IO ゲスト ドメイン間で PCIe デバイスを効率的に共有できます。SR-IOV デバイスには、物理機能 (PF) に関連付けられた数百の仮想機能 (VF) を含めることができます。VF の作成は、SR-IOV 機能を有効にするように設計されたレジスタを介して PF によって動的に制御できます。デフォルトでは、SR-IOV 機能は無効になっており、PF はレガシー PCIe デバイスとして機能します。
SR-IOV 機能を備えたデバイスは、次の利点を活用できます。
-
高パフォーマンス - 仮想マシン環境からハードウェアに直接アクセスします。
-
コスト削減 - 資本と運用の節約には次のものが含まれます。
- 省エネ
- アダプターの数の削減
- 配線の簡素化
- スイッチポートの削減
1.3 SR-IOV の制限事項
SR-IOV パススルー シナリオでは、仮想マシン (VM) はベア メタル ホストと同等のネットワーク パフォーマンスを得ることができます。ただし、まだ 2 つの制限があります。
(1) SR-IOV VF の VM へのパススルー後、VM の移行が制限される主な理由は、SR-IOV のパススルー I/O が Intel CPU VT-d (Virtualization Technology for Directed I/O) を使用しているためです。 O) または AMD IOMMU (I/O Memory Management Unit) テクノロジを使用すると、VM 上の VF ネットワーク カードが初期化されるときに、ゲスト仮想アドレスからホスト物理アドレスへのマッピング テーブルが確立されるため、この「ステートフル」マッピングはテーブルはライブ マイグレーション中に使用されます。失われます。
(2) SR-IOV VF は VM にパススルーされ、SR-IOV PF は TOR に直接接続されるため、この導入環境では仮想マシン (VM) の外部ネットワークを OVS-DPDK のような自動アクティベーションなどのカスタマイズする必要があります。ネットワークを構築するには、SDN コントローラーの管理範囲に TOR を追加する必要があり、SDN コントローラーがそれを一元的に管理および制御するため、通常、ネットワークの運用が非常に複雑になります。
上記の 2 番目の問題に対応して、Mellanox はまず、スマート ネットワーク カード上で OVS Fastpath ハードウェア オフロードをサポートし、VM への SR-IOV VF パススルーと組み合わせて、回線速度の転送に近いネットワーク機能を提供し、仮想マシン (VM) の問題を解決することを提案しました。 ) テナント ネットワーク 自動オーケストレーションとアクティベーションの問題。
OVS ファストパスがアンインストールされた後、OVS がメッセージを転送するとき、データ フローの最初のパケットは引き続きソフトウェアによって転送されます。転送プロセス中に、ファストパス転送フロー テーブルが生成され、ハードウェア ネットワーク カード上に構成されます。このパケットの後続のパケットは、ハードウェア ネットワーク カード上で生成されます。データ フローは仮想マシン (VM) に直接転送されます。初期の Mellanox スマート ネットワーク カードにはまだ汎用 CPU コアが統合されていないため、OVS のコントロール プレーンは依然として物理ホスト上で実行されます。
1.4 SR-IOV の内部アーキテクチャ
上図はキーワードを一つずつ説明した例です。
- PF は物理ネットワーク カードがサポートする PCI 機能であり、複数の VF を拡張できます。
- VF は、SRIOV または仮想インスタンスをサポートする物理ネットワーク カードによって仮想化された「ネットワーク カード」です。独立したネットワーク カードの形式で表示されます。各 VF には、独自の排他的な PCI 構成領域があり、その領域を共有する他の VF と通信する場合があります。同じ物理リソース (同じ物理ネットワーク ポートを共有)
- PF ミニポート ドライバー、つまり PF ドライバーは、Hyper-V 仮想化プラットフォームの親領域で動作し、VF の前に最初にロードされます。
- VF ミニポート ドライバー、つまり VF ドライバーは、Hyper-V 仮想化プラットフォーム、つまりゲスト OS のサブ領域で動作します。VF と PF は分離されており、結果はすべて VF によって駆動されることに注意してください。 VF または実行されたものは、他の VF または PF には影響しません。
- ネットワーク インターフェイス カードは物理ネットワーク カードです。SRIOV が有効になった後、複数の vport が生成されます。物理 NIC が行う必要があるのは、物理ポートと vport の間でトラフィックを転送することです。
- 物理ポートは、名前が示すとおり、物理ネットワーク ポートです。SRIOV シナリオでは、物理ポートは外部ネットワーク メディアとして機能します。
- VPort は物理ネットワーク ポートに似た抽象化されたインターフェイスであり、親 OS またはゲスト OS が使用するために各 VF または PF にマッピングされます。
上記のアーキテクチャの説明から、SRIOV が有効になった後、物理 NIC は VF を介して仮想マシン (VF ドライバー) とデータを交換し、その逆も行われることがわかります。このようにして、中間の仮想化スタック (つまり、VMM 層) をスキップして、純粋な物理環境に近いパフォーマンスを達成できます。ここに SRIOV の最大の価値があります。