NDIS_STATUS_SWITCH_PORT_REMOVE_VF
NDIS_STATUS_SWITCH_PORT_REMOVE_VF ステータス指示は、Hyper-V 拡張可能スイッチ転送拡張機能によって発行され、仮想マシン (VM) ネットワーク アダプターと PCI Express (PCIe) 仮想関数 (VF) の間のバインドを削除します。 VF は、単一ルート I/O 仮想化 (SR-IOV) インターフェイスをサポートする基になる物理ネットワーク アダプターによって公開およびサポートされます。
NDIS_STATUS_SWITCH_PORT_REMOVE_VF ステータス指示を発行するには、転送拡張機能を使用して NDIS_SWITCH_NIC_STATUS_INDICATION 構造で指示をカプセル化し、NDIS_STATUS_SWITCH_NIC_STATUS ステータス指示を発行する必要があります。
このプロセスについて詳しくは、「NDIS_STATUS_SWITCH_PORT_REMOVE_VF ステータス指示を発行するためのガイドライン」をご覧ください。
解説
PCIe VF が作成され、SR-IOV インターフェイスがサポートされる、基になる物理アダプターによって割り当てられます。 作成されると、仮想化スタックによって VF が Hyper-V 子パーティションにアタッチまたは割り当てられます。 このパーティションで実行されるゲスト オペレーティング システムは、基になる SR-IOV 物理アダプターの VF にバインドされている仮想マシン (VM) ネットワーク アダプターを公開します。
仮想ネットワーク アダプターと物理ネットワーク アダプターが割り当てられると、パケットは VF と VM ネットワーク アダプターの間で直接ルーティングされます。 ただし、拡張可能スイッチはパケット配信に関与しないため、拡張可能スイッチ ポート ポリシーはこれらのパケットには適用されません。 これには、アクセス制御リスト (ACL) とサービス品質 (QoS) のポート ポリシーが含まれます。
拡張可能スイッチ転送拡張機能は、NDIS_STATUS_SWITCH_PORT_REMOVE_VF ステータス指示を発行することによって、子パーティションへの VF の割り当てを削除できます。 この指示により、VM ネットワーク アダプターと基になる SR-IOV 物理アダプターの VF の間で直接配信されるのではなく、拡張可能スイッチ ポートを介してパケットが配信されます。 これにより、拡張可能スイッチ ポートを介して送受信されるパケットに拡張可能スイッチ ポート ポリシーを適用できます。
転送拡張機能は、NDIS_STATUS_SWITCH_PORT_REMOVE_VF ステータス指示を作成するとき、VM ネットワーク アダプターが接続されている拡張可能スイッチ ポートを指定します。
拡張可能スイッチ転送拡張機能について詳しくは、「拡張機能の転送」をご覧ください。
NDIS_STATUS_SWITCH_PORT_REMOVE_VF ステータス指示の発行に関するガイドライン
NDIS_STATUS_SWITCH_PORT_REMOVE_VF ステータス指示を発行するには、転送拡張機能で次の手順を実行する必要があります。
転送拡張機能は、NDIS_STATUS_SWITCH_PORT_REMOVE_VF 指示の NDIS_STATUS_INDICATION 構造を初期化します。 この指示の場合、転送拡張機能は NDIS_STATUS_INDICATION 構造の次のメンバーを設定します。
StatusCode メンバーは、NDIS_STATUS_SWITCH_PORT_REMOVE_VF に設定する必要があります。
StatusBuffer メンバーは NULL に設定する必要があります。
StatusBufferSize は 0 に設定する必要があります。
転送拡張機能は、NDIS_SWITCH_NIC_STATUS_INDICATION 構造を初期化します。 VF の割り当てを削除するには、転送拡張機能で次のようにメンバーを設定する必要があります。
DestinationPortId メンバーは、VM ネットワーク アダプターが接続されている拡張可能スイッチ ポートの識別子に設定する必要があります。
DestinationNicIndex メンバーは、指定されたポートに接続されている VM ネットワーク アダプターのインデックス値に設定する必要があります。
SourcePortId メンバーは NDIS_SWITCH_DEFAULT_PORT_ID に設定する必要があります。
SourceNicIndex メンバーは NDIS_SWITCH_DEFAULT_NIC_INDEX に設定する必要があります。
StatusIndication メンバーは、NDIS_STATUS_SWITCH_PORT_REMOVE_VF 指示の NDIS_STATUS_INDICATION 構造のアドレスに設定する必要があります。
転送拡張機能は、NDIS_SWITCH_NIC_STATUS_INDICATION 指示の NDIS_STATUS_INDICATION 構造を初期化します。 この指示の場合、転送拡張機能は NDIS_STATUS_INDICATION 構造の次のメンバーを設定します。
StatusCode メンバーは、NDIS_STATUS_SWITCH_NIC_STATUS に設定する必要があります。
StatusBuffer メンバーは、NDIS_SWITCH_NIC_STATUS_INDICATION 構造のアドレスに設定する必要があります。
StatusBufferSize は、NDIS_SWITCH_NIC_STATUS_INDICATION 構造の長さ (バイト単位) と、NDIS_STATUS_SWITCH_PORT_REMOVE_VF 指示の NDIS_STATUS_INDICATION 構造に設定する必要があります。
転送拡張機能は、ReferenceSwitchNic を呼び出して、VM ネットワーク アダプターの参照カウンターをインクリメントする必要があります。 ReferenceSwitchNic が NDIS_STATUS_SUCCESS で完了しない場合、転送拡張機能がステータス指示を転送してはなりません。
注 転送拡張機能が VM アダプターの OID_SWITCH_NIC_DISCONNECT セット要求を受信した場合、ReferenceSwitchNic を呼び出したり、ステータス指示を転送したりしてはなりません。
転送拡張機能は NdisFIndicateStatus を呼び出して、拡張可能スイッチ ドライバー スタック内の上にある拡張機能に NDIS_STATUS_INDICATION を転送します。 転送拡張機能は、この関数を呼び出すとき、StatusIndication パラメーターを NDIS_STATUS_SWITCH_NIC_STATUS の NDIS_STATUS_INDICATION 構造へのポインターに設定します。
NdisFIndicateStatus が返されたら、転送拡張機能が DereferenceSwitchNic を呼び出して、VM ネットワーク アダプターの参照カウンターをデクリメントする必要があります。
注 転送拡張機能は、転送拡張機能を削除する各 VF 割り当ての前の手順に従う必要があります。
転送拡張機能がステータス指示を転送する方法について詳しくは、「モジュール ステータス指示のフィルター処理」をご覧ください。
VF の割り当てを決定するためのガイドライン
転送拡張機能は、OID_SWITCH_NIC_ARRAY の OID クエリ要求を発行することにより、仮想ネットワーク アダプターの現在の VF 割り当てを列挙できます。 この要求は、NDIS_SWITCH_NIC_PARAMETERS 構造の配列を含む NDIS_SWITCH_NIC_ARRAY 構造を返します。 各 NDIS_SWITCH_NIC_PARAMETERS 構造は、次のいずれかの環境で公開されるネットワーク アダプターのパラメーターを指定します。
Hyper-V 親パーティションで実行される管理オペレーティング システム。
このオペレーティング システムで公開されているネットワーク アダプターは、NdisSwitchNicTypeExternal または NdisSwitchNicTypeInternal の NDIS_SWITCH_NIC_TYPE 列挙値と共に指定されます。
Hyper-V 子パーティションで実行されるゲスト オペレーティング システム。
このオペレーティング システムで公開されているネットワーク アダプターは、NdisSwitchNicTypeSynthetic または NdisSwitchNicTypeEmulated の NDIS_SWITCH_NIC_TYPE 列挙値と共に指定されます。
OID_SWITCH_NIC_ARRAY の OID クエリ要求が NDIS_STATUS_SUCCESS のステータスで完了した場合、転送拡張機能は、返された配列内の各 NDIS_SWITCH_NIC_PARAMETERS 構造を調べることにより VF の割り当てを決定できます。 NDIS_SWITCH_NIC_PARAMETERS 構造の VFAssigned メンバーが TRUE に設定されている場合、NDIS_SWITCH_NIC_PARAMETERS 構造に対応するネットワーク アダプターが VF に割り当てられます。
転送拡張機能は、NDIS_STATUS_SWITCH_PORT_REMOVE_VF ステータス指示を発行することにより割り当てを削除できます。 この場合、転送拡張機能は、NDIS_SWITCH_NIC_STATUS_INDICATION の DestinationPortId メンバーを、NDIS_SWITCH_NIC_PARAMETERS 構造の PortId メンバーの値に設定する必要があります。
NDIS_STATUS_SWITCH_PORT_REMOVE_VF ステータス指示を発行する方法について詳しくは、「NDIS_STATUS_SWITCH_PORT_REMOVE_VF ステータス指示を発行するためのガイドライン」をご覧ください。
要件
バージョン |
NDIS 6.30 以降でサポートされています。 |
ヘッダー |
Ndis.h (Ndis.h を含む) |