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 ステータス指示を発行するには、転送拡張機能で次の手順を実行する必要があります。

  1. 転送拡張機能は、NDIS_STATUS_SWITCH_PORT_REMOVE_VF 指示の NDIS_STATUS_INDICATION 構造を初期化します。 この指示の場合、転送拡張機能は NDIS_STATUS_INDICATION 構造の次のメンバーを設定します。

    • StatusCode メンバーは、NDIS_STATUS_SWITCH_PORT_REMOVE_VF に設定する必要があります。

    • StatusBuffer メンバーは NULL に設定する必要があります。

    • StatusBufferSize は 0 に設定する必要があります。

  2. 転送拡張機能は、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 構造のアドレスに設定する必要があります。

  3. 転送拡張機能は、NDIS_SWITCH_NIC_STATUS_INDICATION 指示の NDIS_STATUS_INDICATION 構造を初期化します。 この指示の場合、転送拡張機能は NDIS_STATUS_INDICATION 構造の次のメンバーを設定します。

  4. 転送拡張機能は、ReferenceSwitchNic を呼び出して、VM ネットワーク アダプターの参照カウンターをインクリメントする必要があります。 ReferenceSwitchNic が NDIS_STATUS_SUCCESS で完了しない場合、転送拡張機能がステータス指示を転送してはなりません。

    転送拡張機能が VM アダプターの OID_SWITCH_NIC_DISCONNECT セット要求を受信した場合、ReferenceSwitchNic を呼び出したり、ステータス指示を転送したりしてはなりません。

  5. 転送拡張機能は NdisFIndicateStatus を呼び出して、拡張可能スイッチ ドライバー スタック内の上にある拡張機能に NDIS_STATUS_INDICATION を転送します。 転送拡張機能は、この関数を呼び出すとき、StatusIndication パラメーターを NDIS_STATUS_SWITCH_NIC_STATUSNDIS_STATUS_INDICATION 構造へのポインターに設定します。

  6. 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 または NdisSwitchNicTypeInternalNDIS_SWITCH_NIC_TYPE 列挙値と共に指定されます。

  • Hyper-V 子パーティションで実行されるゲスト オペレーティング システム。

    このオペレーティング システムで公開されているネットワーク アダプターは、NdisSwitchNicTypeSynthetic または NdisSwitchNicTypeEmulatedNDIS_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_INDICATIONDestinationPortId メンバーを、NDIS_SWITCH_NIC_PARAMETERS 構造の PortId メンバーの値に設定する必要があります。

NDIS_STATUS_SWITCH_PORT_REMOVE_VF ステータス指示を発行する方法について詳しくは、「NDIS_STATUS_SWITCH_PORT_REMOVE_VF ステータス指示を発行するためのガイドライン」をご覧ください。

要件

バージョン

NDIS 6.30 以降でサポートされています。

ヘッダー

Ndis.h (Ndis.h を含む)

関連項目


NdisFIndicateStatus

NDIS_STATUS_INDICATION

NDIS_STATUS_SWITCH_NIC_STATUS

NDIS_SWITCH_NIC_ARRAY

NDIS_SWITCH_NIC_PARAMETERS

NDIS_SWITCH_NIC_TYPE

OID_SWITCH_NIC_ARRAY