Share via


NDIS VMQ ライブ マイグレーションのサポート

ライブ マイグレーションをサポートするために、任意の命令または保留中の I/O 境界で仮想マシン (VM) を一時停止することができます。 つまり、VM は保留中の受信要求を完了しない可能性があります。 そのため、ネットワーク仮想サービス プロバイダー (VSP) は、受信したすべてのパケットを、VM が返さなかった下位のネットワーク アダプターに返します。

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

VM が別のホストで再起動されると、新しいホスト上のネットワーク VSP は、再開された VM が返す受信パケットを処理し、ミニポート ドライバーの新しい基盤には渡しません。 マイグレーションが完了すると、その VM に関連付けられていた受信キューは解放され、別の VM に再利用できるようになります。

注意:新しいネットワーク アダプターが VMQ をサポートしていない可能性があります。

NDIS がミニポート ドライバーに VMQ 受信キューの解放を要求する場合は、以下の手順に従います。

  1. ネットワーク アダプターは、受信キューに関連付けられている受信バッファーへのデータの DMA 転送を停止します。その後、キューは DMA 停止状態に入る必要があります。 受信キューに最後に設定されたフィルタをクリアするためのOID_RECIVE_FILTER_CLEAR_FILTER OID 要求を受信したときに、ネットワーク アダプターが DMA アクティビティを停止した可能性があります。

  2. ミニポート ドライバーは、NDIS_STATUS_RECEIVE_QUEUE_STATE ステータス表示を生成し、QueueState メンバーを NDIS_RECEIVE_QUEUE_STATE 構造に NdisReceiveQueueOperationalStateDmaStopped を設定して、DMA 転送が停止したことを NDIS に通知します。

  3. ミニポート ドライバーは、そのキューに指示されたすべての受信パケットがミニポート ドライバーに返されるのを待ちます。

  4. ミニポート ドライバーは、NdisFreeSharedMemory を呼び出すことによって、キューに関連付けられているネットワークアダプターの受信バッファーに割り当てられたすべての共有メモリを解放します。

  5. ミニポート ドライバーは、OID_RECEIVE_FILTER_FREE_QUEUE OID 要求を完了し、受信キューを解放します。

キューの状態の詳細については、「NDIS VM キューの状態」を参照してください。