Condividi tramite


Supporto di NDIS VMQ Live Migration

Per supportare la migrazione in tempo reale, una macchina virtuale può essere sospesa in qualsiasi istruzione o limite di I/O in sospeso. In questo caso, la macchina virtuale potrebbe non terminare le richieste di ricezione in sospeso. Quindi, il provider di servizi virtuali di rete (VSP) restituisce tutti i pacchetti ricevuti alla scheda di rete sottostante che la macchina virtuale non ha restituito.

Nota In Hyper-V una partizione figlio è nota anche come macchina virtuale.

Quando la macchina virtuale viene riavviata in un altro host, il VSP di rete nel nuovo host gestisce i pacchetti di ricezione restituiti dalla macchina virtuale ripresa e non li passa al nuovo driver sottostante in miniport. Al termine della migrazione, la coda di ricezione associata alla macchina virtuale viene liberata e può essere riutilizzata per un'altra macchina virtuale.

Nota La nuova scheda di rete potrebbe non supportare VMQ.

Quando NDIS richiede a un driver miniport di liberare una coda di ricezione VMQ, seguire questa procedura:

  1. La scheda di rete arresta il trasferimento DMA dei dati per ricevere buffer associati alla coda di ricezione, dopo la quale la coda deve immettere lo stato DMA Stopped. La scheda di rete ha probabilmente arrestato l'attività DMA quando ha ricevuto la richiesta OID OID_RECEIVE_FILTER_CLEAR_FILTER per cancellare l'ultimo filtro set nella coda di ricezione.

  2. Il driver miniport genera un'indicazione di stato NDIS_STATUS_RECEIVE_QUEUE_STATE con il membro QueueState della struttura NDIS_RECEIVE_QUEUE_STATE impostata su NdisReceiveQueueOperationalStateDmaStopped per notificare a NDIS che il trasferimento DMA è stato arrestato.

  3. Il driver miniport attende che tutti i pacchetti di ricezione indicati vengano restituiti al driver miniport.

  4. Il driver miniport libera tutta la memoria condivisa allocata per i buffer di ricezione della scheda di rete associati alla coda chiamando NdisFreeSharedMemory.

  5. Il driver miniport completa la richiesta OID OID_RECEIVE_FILTER_FREE_QUEUE per liberare la coda di ricezione.

Per altre informazioni sugli stati della coda, vedere Stati di coda della macchina virtuale NDIS.