単一ルート I/O 仮想化 (SR-IOV) をサポートするネットワーク アダプターは、次のハードウェア コンポーネントをサポートできる必要があります。
1 つの PCI Express (PCIe) 物理機能 (PF)。 PF は常にネットワーク・アダプター上に存在し、Hyper-V 親パーティションに接続されます。
このハードウェア コンポーネントの詳細については、「 SR-IOV 物理機能 (PF)」を参照してください。
1 つ以上の PCIe 仮想関数 (VF)。 ゲスト オペレーティング システムのネットワーク コンポーネントが VF 経由でパケットを送受信するには、各 VF を初期化し、Hyper-V 子パーティションに接続する必要があります。
このハードウェア コンポーネントの詳細については、「 SR-IOV Virtual Functions (VFs)」を参照してください。
VF が切断され、そのリソースが解放される前に、仮想化スタックは仮想 PCI (VPCI) 仮想サービス プロバイダー (VSP) に通知します。 この VSP は、Hyper-V 親パーティションの管理オペレーティング システムで実行されます。 この通知は、VF が切断され、子パーティションからデタッチされることを VPCI VSP に通知します。 VPCI VSP は、仮想マシン バス (VMBus) 経由で、子パーティションのゲスト オペレーティング システムで実行される VPCI 仮想サービス クライアント (VSC) にメッセージを送信します。 これらのメッセージは、VF が子パーティションにアタッチされたときに公開された VF ネットワーク アダプターを正常に削除するよう VPCI VSC に要求します。 これにより、NetVSC が VF ミニポート ドライバーからバインドを解除し、ドライバーが停止します。 この時点で、子パーティション内のパケット トラフィックは VF データ パスからソフトウェア ベースの合成データ パスに移行されます。 これらのデータ パスの詳細については、「 SR-IOV データ パス」を参照してください。
合成データ パスへのフェールオーバーが完了すると、VF が切断され、そのリソースが解放されます。 次の図は、VF の破棄に関連する手順を示しています。
NDIS、仮想化スタック、および PF ミニポート ドライバーは、VF 破棄シーケンス中に次の手順に従います。
仮想化スタックは、仮想マシン (VM) ネットワーク アダプターのメディア アクセス制御 (MAC) および仮想 LAN (VLAN) フィルターを、PF に接続されている既定の仮想ポート (VPort) に移動します。 VM ネットワーク アダプターは、子パーティションのゲスト オペレーティング システムで公開されます。
フィルターが既定の VPort に移動されると、合成データ パスは、ゲスト オペレーティング システムで実行されるネットワーク コンポーネントとの間のネットワーク トラフィックに対して完全に動作します。 PF ミニポート ドライバーは、合成データ パスを使用してゲスト オペレーティング システムへのパケットを示す既定の PF VPort で受信したパケットを示します。 同様に、ゲスト オペレーティング システムから送信されるすべてのパケットは合成データ パスを介してルーティングされ、既定の PF 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 に関連付けられているハードウェア リソースを解放します。