Prise en charge de la migration dynamique de NDIS VMQ

Pour prendre en charge la migration dynamique, une machine virtuelle peut être suspendue à n’importe quelle instruction ou limite d’E/S en attente. Autrement dit, la machine virtuelle peut ne pas se terminer en attente de demandes de réception. Ainsi, le fournisseur de services virtuels réseau (VSP) retourne tous les paquets reçus à la carte réseau sous-jacente que la machine virtuelle n’a pas retournée.

Note Dans Hyper-V, une partition enfant est également appelée machine virtuelle.

Lorsque la machine virtuelle est redémarrée sur un autre hôte, le VSP réseau sur le nouvel hôte gère les paquets de réception retournés par la machine virtuelle reprise et ne les transmet pas au nouveau sous-jacent dans le pilote miniport. Une fois la migration terminée, la file d’attente de réception associée à la machine virtuelle est libérée et peut être réutilisée pour une autre machine virtuelle.

Note La nouvelle carte réseau peut ne pas prendre en charge VMQ.

Quand NDIS demande à un pilote miniport de libérer une file d’attente de réception VMQ, il effectue les étapes suivantes :

  1. La carte réseau arrête le transfert DMA de données pour recevoir les mémoires tampons associées à la file d’attente de réception, après quoi la file d’attente doit passer à l’état DMA Arrêté. La carte réseau a probablement arrêté l’activité DMA lorsqu’elle a reçu la requête OID OID_RECEIVE_FILTER_CLEAR_FILTER pour effacer le dernier filtre défini sur la file d’attente de réception.

  2. Le pilote miniport génère une indication de status NDIS_STATUS_RECEIVE_QUEUE_STATE avec le membre QueueState de la structure NDIS_RECEIVE_QUEUE_STATE défini sur NdisReceiveQueueOperationalStateDmaStopped pour informer NDIS que le transfert DMA a été arrêté.

  3. Le pilote miniport attend que tous les paquets de réception indiqués pour cette file d’attente soient retournés au pilote miniport.

  4. Le pilote miniport libère toute la mémoire partagée qu’il a allouée aux mémoires tampons de réception de la carte réseau associées à la file d’attente en appelant NdisFreeSharedMemory.

  5. Le pilote miniport termine la requête OID OID_RECEIVE_FILTER_FREE_QUEUE pour libérer la file d’attente de réception.

Pour plus d’informations sur les états de file d’attente, consultez États de file d’attente des machines virtuelles NDIS.