SR-IOV の使用について
適切なハードウェアと SR-IOV を使用して、Linux ベースの仮想化デバイスとネットワーク機能の仮想化(NFV)モジュール間の通信を有効にすることができます。
物理デバイスが仮想化されると、物理 NIC インターフェイスと外部物理スイッチの両方、および仮想 NIC インターフェイスと内部仮想スイッチが共存します。それぞれ独自のメモリ、ディスク領域、CPU サイクルを持つデバイス内の分離された仮想マシン(VM)またはコンテナーが相互に通信しようとすると、使用中の複数のポート、MAC アドレス、および IP アドレスが課題になります。
SR-IOV は、仮想化機能の概念を物理 NIC にまで拡張します。1 つの物理カードは、上位レイヤーで実行されている仮想機能に対応する物理 NIC ポートごとにパーティションに分割されます。これらの仮想関数間の通信は、個々の NIC を持つデバイス間の通信が通常ブリッジで処理されるのと同じ方法で処理されます。SR-IOV には、SR-IOV NIC スイッチを作成、削除、一覧表示、および照会するための一連の標準メソッドと、設定できる一連の標準パラメーターが含まれています。
SR-IOV の単一ルートは、すべての操作を制御する NIC の 1 つのプライマリ部分のみを参照します。SR-IOV 対応 NIC は、ネットワーク カードと同じ物理ビット単位の機能を提供する標準イーサネット ポートです。
SR-IOV には、単純なキューを使用して入出力タスクを処理することによって実現されるいくつかの仮想関数が用意されています。デバイスで実行されている各 VNF は、VNF 自体が NIC ハードウェアリソースに直接アクセスできるように、NIC パーティションの 1 つにマッピングされます。NIC には、フレームをトラフィック キューに分類するシンプルなレイヤー 2 ソーター機能があります。パケットは、ハイパーバイザーを完全にバイパスして、ダイレクト メモリ アクセス (DMA) を使用して、ネットワーク仮想関数と VM のメモリとの間で直接移動されます。SR-IOV 操作における NIC の役割を 図 1 に示します。
ハイパーバイザーは、VNFの割り当てと物理カードの管理には関与しますが、パケット内のデータの転送には関与しません。VNF 間通信は、仮想 NIC 1、仮想 NIC 2、仮想 NIC N によって実行されます。また、NIC はすべての仮想機能とソーターを追跡し、VNF と外部デバイスポート間でトラフィックを移動します。
SR-IOV のサポートは、ハードウェア プラットフォーム、特に NIC ハードウェア、およびデータ転送に DMA を使用するための VNF またはコンテナのソフトウェアによって異なります。