SR-IOV VF フェールオーバーおよびライブ マイグレーションのサポート
Hyper-V 子パーティションが開始されると、ネットワーク トラフィックは合成データ パスを経由します。 物理ネットワーク アダプターがシングル ルート I/O 仮想化 (SR-IOV) インターフェイスをサポートしている場合は、1 つ以上の PCI Express (PCIe) 仮想関数 (VFs) を有効にすることができます。 各 VF は、Hyper-V 子パーティションに接続できます。 この場合、ネットワーク トラフィックはハードウェア最適化 「SR-IOV VF データ パス」を経由します。
VF データ パスが確立された後、次のいずれかの条件に該当する 場合、ネットワーク トラフィックは合成データ パスに戻すことができます。
VF は Hyper-V 子パーティションに接続されていましたが、切断されました。 たとえば、仮想化スタックでは、1 つの子パーティションから VF を切断し、別の子パーティションに接続できます。 これは、基になる SR-IOV ネットワーク アダプター上の VF リソースよりも実行されている Hyper-V 子パーティションが多い場合に発生する可能性があります。
VF データ パスから合成データ パスにフェールオーバーするプロセスは、VF フェールオーバーと呼ばれます。
Hyper-V 子パーティションは、別のホストにライブ マイグレーションされています。
次の図は、SR-IOV ネットワーク アダプターでサポートされているさまざまなデータ パスを示しています。
NetVSC は、VF データ パスをサポートするために VF ミニポート ドライバーにバインドされている仮想マシン (VM) ネットワーク アダプターを公開します。 合成データ パスへの移行中、VF ネットワーク アダプターは、可能であればゲスト オペレーティング システムから正常に削除されます。 VF を正常に削除できずタイムアウトすると、突然削除されます。 その後、VF ミニポート ドライバーが停止し、ネットワーク仮想サービス クライアント (NetVSC) が VF ミニポート ドライバーから非バインドされます。
VF と合成データ パス間の遷移は、パケットの損失を最小限に抑え、TCP 接続の損失を防ぎます。 合成データ パスへの移行が完了する前に、仮想化スタックは次の手順に従います。
仮想化スタックは、VM ネットワーク アダプターのメディア アクセス制御 (MAC) および仮想 LAN (VLAN) フィルターを、PCIe 物理機能 (PF) に接続されている既定の仮想ポート (VPort) に移動します。 VM ネットワーク アダプターは、子パーティションのゲスト オペレーティング システムで公開されます。
フィルターが既定の VPort に移動されると、合成データ パスは、ゲスト オペレーティング システムで実行されるネットワーク コンポーネントとの間のネットワーク トラフィックに対して完全に動作します。 PF ミニポート ドライバーは、合成データ パスを使用してゲスト オペレーティング システムへのパケットを示す既定の PF VPort で受信したパケットを示します。 同様に、ゲスト オペレーティング システムから送信されるすべてのパケットは合成データ パスを介してルーティングされ、既定の PF VPort を介して送信されます。
VPort の詳細については「仮想ポート (VPort)」を参照してください。
仮想化スタックは、PF ミニポート ドライバーに OID_NIC_SWITCH_DELETE_VPORT のオブジェクト識別子 (OID) セット要求を発行することによって、VF に接続されている VPort を削除します。 ミニポート ドライバーは、VPort に関連付けられているハードウェアおよびソフトウェア リソースを解放し、OID 要求を完了します。
詳細については「仮想ポートの削除」を参照してください。
仮想化スタックは、リソースの割り当てが解除される前に、VF の PCIe 関数レベル リセット (FLR) を要求します。 スタックは、PF ミニポート ドライバーに OID_SRIOV_RESET_VF の OID セット要求を発行することによってこれを行います。 FLR は SR-IOV ネットワーク アダプターの VF を静止状態にし、VF の保留中の割り込みイベントをクリアします。
VF がリセットされた後、仮想化スタックは、PF ミニポート ドライバーに OID_NIC_SWITCH_FREE_VF の OID セット要求を発行することによって VF リソースの割り当て解除を要求します。 これにより、ミニポート ドライバーは、VF に関連付けられているハードウェア リソースを解放します。
このプロセスの詳細については「仮想関数の破棄シーケンス」を参照してください。