Freigeben über


Unterstützung der NDIS VMQ-Live-Migration

Zur Unterstützung der Live-Migration kann eine virtuelle Maschine (VM) an einer beliebigen Anweisung oder einer ausstehenden E/A-Grenze angehalten werden. Das heißt, der virtuelle Computer beendet möglicherweise keine ausstehenden Empfangsanforderungen. Der virtuelle Netzwerkdienstanbieter (Virtual Service Provider, VSP) gibt also alle empfangenen Pakete an den zugrunde liegenden Netzwerkadapter zurück, den der virtuelle Computer nicht zurückgegeben hat.

Anmerkung In Hyper-V wird eine untergeordnete Partition auch als VM bezeichnet.

Wenn der virtuelle Computer auf einem anderen Host neu gestartet wird, verarbeitet der Netzwerk-VSP auf dem neuen Host die Empfangenpakete, die die fortgesetzte VM zurückgibt, und übergibt sie nicht an den neuen zugrunde liegenden Miniporttreiber. Nach Abschluss der Migration wird die Empfangswarteschlange, die der VM zugeordnet war, freigegeben und kann für einen anderen virtuellen Computer wiederverwendet werden.

Anmerkung Der neue Netzwerkadapter unterstützt möglicherweise vmQ nicht.

Wenn NDIS einen Miniporttreiber zum Freigeben einer VMQ-Empfangswarteschlange anfordert, führen Sie die folgenden Schritte aus:

  1. Der Netzwerkadapter stoppt die DMA-Übertragung von Daten, um Puffer zu empfangen, die der Empfangswarteschlange zugeordnet sind, nach der die Warteschlange den DMA-Status "Beendet" eingeben muss. Der Netzwerkadapter hat die DMA-Aktivität wahrscheinlich beendet, wenn sie die OID_RECEIVE_FILTER_CLEAR_FILTER OID-Anforderung empfangen hat, um den letzten Satzfilter in der Empfangswarteschlange zu löschen.

  2. Der Miniporttreiber generiert eine NDIS_STATUS_RECEIVE_QUEUE_STATE Statusanzeige mit dem QueueState Member der NDIS_RECEIVE_QUEUE_STATE Struktur, die auf NdisReceiveQueueOperationalStateDmaStopped festgelegt ist, um NDIS zu benachrichtigen, dass die DMA-Übertragung beendet wurde.

  3. Der Miniporttreiber wartet auf alle angegebenen Empfangenpakete, damit diese Warteschlange an den Miniporttreiber zurückgegeben wird.

  4. Der Miniporttreiber gibt den freigegebenen Speicher frei, den er für die Empfangenpuffer des Netzwerkadapters zugewiesen hat, die der Warteschlange zugeordnet sind, indem NdisFreeSharedMemoryaufgerufen wird.

  5. Der Miniporttreiber schließt die OID_RECEIVE_FILTER_FREE_QUEUE OID-Anforderung ab, um die Empfangswarteschlange freizustellen.

Weitere Informationen zu Warteschlangenzuständen finden Sie unter NDIS VM Queue States.