仮想ポート (VPort)
仮想ポート (VPort) は、単一ルート I/O 仮想化 (SR-IOV) をサポートするネットワーク アダプターの NIC スイッチの内部ポートを表すデータ オブジェクトです。 各 NIC スイッチには、ネットワーク接続用の次のポートがあります。
外部物理ネットワークに接続するための 1 つの外部物理ポート。
PCI Express 物理機能 (PF) または仮想関数 (VFs) に接続されている 1 つ以上の内部 VPort。
PF は Hyper-V 親パーティションにアタッチされ、そのパーティションで実行される管理オペレーティング システムの仮想ネットワーク アダプターとして公開されます。
VF は Hyper-V 子パーティションにアタッチされ、そのパーティションで実行されるゲスト オペレーティング システムの仮想ネットワーク アダプターとして公開されます。
NIC スイッチは、物理ポートから 1 つ以上の VPort にネットワーク トラフィックをブリッジします。 これにより、基になる物理ネットワーク インターフェイスへの仮想化アクセスが提供されます。
各 VPort には、ネットワーク アダプターの NIC スイッチに対して一意の一意識別子 (VPortId) があります。 既定の VPort は常に既定の NIC スイッチに存在し、削除することはできません。 既定の VPort には、NDIS_DEFAULT_VPORT_IDの VPortId があります。
PF ミニポート ドライバーは、OID_NIC_SWITCH_CREATE_SWITCH のオブジェクト識別子 (OID) メソッド要求を処理するときに、NIC スイッチとそのスイッチの既定の VPort を作成します。 既定の VPort は常に PF にアタッチされ、常に操作状態になります。
既定以外の VPort は、OID_NIC_SWITCH_CREATE_VPORT の OID メソッド要求によって作成されます。 VF にアタッチできる既定以外の VPort は 1 つだけです。 アタッチされると、既定値は運用状態になります。 1 つ以上の既定以外の VPort を作成して PF にアタッチすることもできます。 これらの VPort は作成時に非動作であり、OID_NIC_SWITCH_VPORT_PARAMETERS の OID セット要求を介して動作可能になります。
Note
VPort が操作可能になった後は、OID_NIC_SWITCH_DELETE_VPORT のの OID 要求を介して削除された場合にのみ非動作になります。
各 VPort には、パケットを受信および送信するための 1 つ以上のハードウェア キュー ペアが関連付けられています。 ネットワーク アダプターの既定のキュー ペアは、既定の VPort で使用するために予約されています。 既定以外の VPort のキュー ペアは、OID_NIC_SWITCH_CREATE_VPORT 要求によって VPort が作成されるときに割り当てられます。
既定以外の VPort は、OID_NIC_SWITCH_CREATE_VPORT の OID メソッド要求によって作成され設定されます。 既定の VPort と既定以外の VPort は、OID_NIC_SWITCH_VPORT_PARAMETERS の OID セット要求によって再構成されます。 各 OID 要求には、次の構成パラメーターを指定する NDIS_NIC_SWITCH_VPORT_PARAMETERS 構造体が含まれています。
VPort がアタッチされている PCIe 関数。
各 VPort は、PF にアタッチすることも、VF を使用していつでも接続することもできます。 VPort が作成され、PCIe 関数にアタッチされた後、添付ファイルを別の PCIe 関数に動的に変更することはできません。
Note
既定の VPort は、常にネットワーク アダプターの PF に接続されます。
Windows Server 2012 以降では、既定以外の VPort は 1 つしか VF にアタッチできません。 ただし、既定以外の複数の VPort と既定の VPort を PF にアタッチできます。
VPort に割り当てられているハードウェア キュー ペアの数。
各 VPort には、使用可能な一連のハードウェア キュー ペアがあります。 各キュー ペアは、ネットワーク アダプター上の個別の送信キューと受信キューで構成されます。
キュー ペアは、ネットワーク アダプター上の限られたリソースです。 既定の VPort と既定以外の VPort で使用するために予約されたキュー ペアの合計数は、NIC スイッチの作成時に指定されます。 これにより、既定の VPort に割り当てられているキュー ペアの数が既定以外の VPort と異なることがあります。
既定以外の各 VPort は、異なる数のキュー ペアを持つように構成できます。 これを、キュー ペアの非対称割り当てと呼びます。 NIC でこのような非対称割り当てが許可されていない場合、既定以外の各 VPort は同じ数のキュー ペアを持つよう構成されます。 これを、キュー ペアの対称割り当てと呼びます。 詳細については、「キュー ペアの対称および非対称割り当て」を参照してください。
Note
PF ミニポート ドライバーは、 MiniportInitializeEx による初期化中にキュー ペアの非対称割り当てをサポートするかどうかを報告します。 詳細については、「PF ミニポート ドライバーの初期化」を参照してください。
各 VPort に割り当てられたキュー ペアの数は動的に変更されません。 VPort が作成された後で、VPort に割り当てられたキュー ペアの数を変更することはできません。
Note
既定以外の VPort に割り当てられた 1 つ以上のキュー ペアは、ゲスト オペレーティング システムで実行される VF ミニポート ドライバーによる受信側スケーリング (RSS) に使用できます。
VPort の割り込みモデレーション パラメーター。
割り込みモデレーションの種類は、異なる VPort に対して指定できます。 これにより、仮想化スタックは、特定の VPort によって生成される割り込みの数を制御できます。
構成パラメーターに加えて、基になるドライバーは、OID_RECEIVE_FILTER_SET_FILTER の OID メソッド要求を発行することによって、各 VPort の受信フィルターを構成できます。 NIC スイッチは、指定された受信フィルター処理を VPort 単位で実行します。
VPort の受信フィルター パラメーターには、メディア アクセス制御 (MAC) アドレスの一覧や仮想 LAN (VLAN) 識別子などのパケット フィルター条件が含まれます。 MAC アドレスと VLAN 識別子のフィルターは、常に、NDIS_RECEIVE_FILTER_PARAMETERS 内で OID_RECEIVE_FILTER_SET_FILTER要求に関連付けられて一緒に指定されます。 NIC スイッチは、宛先 MAC アドレスと VLAN 識別子が VPort で設定された受信フィルター条件と一致するスイッチへの受信パケットをフィルター処理する必要があります。 NIC スイッチは、別の VPort または外部物理ポートから受信したパケットをフィルター処理します。 パケットがフィルターと一致する場合、NIC スイッチはそれを VPort に転送する必要があります。
VPort では、複数の MAC アドレスと VLAN 識別子のペアを設定できます。 MAC アドレスのみが設定されている場合、受信フィルターは、VPort が次の条件に一致するパケットを受信するように指定します。
パケットの宛先 MAC アドレスは、フィルターの MAC アドレスと一致します。
パケットに VLAN タグがあります。または(VLAN タグが存在する場合)、VLAN 識別子は 0 です。
既定以外の VPort は、OID_NIC_SWITCH_DELETE_VPORT の OID セット要求によって削除されます。 既定の VPort は、OID_NIC_SWITCH_DELETE_SWITCH の OID セット要求 によって NIC スイッチが削除された場合にのみ削除されます。