Share via


SR-IOV 仮想機能 (VF)

PCI Express (PCIe) 仮想関数 (VF) は、シングル ルート I/O 仮想化 (SR-IOV) をサポートするネットワーク アダプター上の軽量 PCIe 関数です。

VF は、ネットワーク アダプター上の PCIe 物理機能 (PF) に関連付けされ、ネットワーク アダプターの仮想化されたインスタンスを表します。 各 VF には、独自の PCI 構成領域があります。 また、各 VF は、外部ネットワーク ポートなどのネットワーク アダプター上の 1 つ以上の物理リソースを PF やその他の VM と共有します。

VF は本格的な PCIe デバイスではありません。 ただし、Hyper-V 子パーティションと基になる SR-IOV ネットワーク アダプターの間でデータを直接転送するための基本的なメカニズムが提供されます。 データ転送に関連付けられているソフトウェア リソースは VF で直接使用でき、他の VM または PF による使用から分離されます。 ただし、これらのリソースの大部分の構成は、Hyper-V 親パーティションの管理オペレーティング システムで実行される PF ミニポート ドライバーによって実行されます。

VF は、Hyper-V 子パーティションで実行されるゲスト オペレーティング システムの仮想ネットワーク アダプター (VF ネットワーク アダプター) として公開されます。 VF が SR-IOV ネットワーク アダプターの NIC スイッチの仮想ポート (VPort) に関連付けられると、VM で実行される仮想 PCI (VPCI) ドライバーによって VF ネットワーク アダプターが公開されます。 公開されると、ゲスト オペレーティング システムの PnP マネージャーが VF ミニポート ドライバーを読み込みます。

Note

Hyper-V では、子パーティションは仮想マシン (VM) とも呼ばれます。

VF ミニポート ドライバーは、VF を管理するために VM にインストールされている NDIS ミニポート ドライバーです。 VF ミニポート ドライバーによって実行されるすべての操作は、同じネットワーク アダプター上の他の VF または PF に影響を与えてはなりません。

VF ミニポート ドライバーは、任意の PCI デバイス ドライバーと同様に機能できます。 VF の PCI 構成領域の読み取りと書き込みを行うことができます。 ただし、仮想 PCI デバイスへのアクセスは特権操作であり、次のように PF ミニポート ドライバーによって管理されます。

  • VF ミニポート ドライバーが NdisMGetBusData を呼び出して VF ネットワーク アダプターの PCI 構成空間からデータを読み取ると、仮想化スタックが通知されます。 このスタックは、Hyper-V 親パーティションの管理オペレーティング システムで実行されます。 スタックが読み取り要求の通知を受け取ると、PF ミニポート ドライバーに OID_SRIOV_READ_VF_CONFIG_SPACE のオブジェクト識別子 (OID) メソッド要求を発行します。 読み取るデータは、OID 要求に 含まれる NDIS_SRIOV_READ_VF_CONFIG_SPACE_PARAMETERS 構造体で指定されます。

    ドライバーは、VF PCI 構成領域から要求されたデータを読み取り、OID 要求を完了することによってデータを返します。 このデータは、NdisMGetBusData への呼び出しが完了すると、VF ミニポート ドライバーに返されます。

  • VF ミニポート ドライバーが NDISMSetBusData を呼び出して VF ネットワーク アダプターの PCI 構成空間にデータを書き込むと、仮想化スタックに書き込み要求が通知されます。 PF ミニポート ドライバーに OID_SRIOV_WRITE_VF_CONFIG_SPACEの OID メソッド要求を発行します。 書き込むデータは、OID 要求に含まれる NDIS_SRIOV_WRITE_VF_CONFIG_SPACE_PARAMETERS 構造体で指定されます。

    ドライバーは、VF PCI 構成領域にデータを書き込み、OID 要求が完了したときに要求の状態を返します。 この状態は、NdisMSetBusData への呼び出しが完了した後、VF ミニポート ドライバーに返されます。

VF ミニポート ドライバーは、PF ミニポート ドライバーと通信することもできます。 この通信パスは、バックチャネル インターフェイス経由です。 詳細については「SR-IOV PF/VF バックチャネル通信」を参照してください。

: VF ミニポート ドライバーは、特定の操作の PF ミニポート ドライバーと通信できるように、仮想化された環境で実行されていることを認識する必要があります。 ドライバーがこれを行う方法の詳細については「VF ミニポート ドライバーの初期化」を参照してください。