Compartilhar via


Suporte à migração dinâmica do VMQ do NDIS

Para dar suporte à migração dinâmica, uma VM (máquina virtual) pode ser pausada em qualquer instrução ou limite de E/S pendente. Ou seja, a VM pode não concluir solicitações de recebimento pendentes. Portanto, o VSP (provedor de serviços virtuais de rede) retorna todos os pacotes recebidos para o adaptador de rede subjacente que a VM não retornou.

Nota No Hyper-V, uma partição filho também é conhecida como uma VM.

Quando a VM é reiniciada em outro host, o VSP de rede no novo host manipula os pacotes de recebimento que a VM retomada retorna e não os passa para o novo driver subjacente no miniportor. Depois que a migração for concluída, a fila de recebimento associada à VM será liberada e poderá ser reutilizado para outra VM.

Nota O novo adaptador de rede pode não dar suporte ao VMQ.

Quando o NDIS solicita um driver de miniporto para liberar uma fila de recebimento de VMQ, ele segue estas etapas:

  1. O adaptador de rede interrompe a transferência de dados de DMA para receber buffers associados à fila de recebimento, após o qual a fila deve entrar no estado DMA Parado. O adaptador de rede provavelmente interrompeu a atividade de DMA quando recebeu a solicitação OID OID_RECEIVE_FILTER_CLEAR_FILTER para limpar o último filtro definido na fila de recebimento.

  2. O driver de miniporto gera uma indicação NDIS_STATUS_RECEIVE_QUEUE_STATE status com o membro QueueState da estrutura de NDIS_RECEIVE_QUEUE_STATE definida como NdisReceiveQueueOperationalStateDmaStopped para notificar o NDIS de que a transferência de DMA foi interrompida.

  3. O driver de miniporto aguarda todos os pacotes de recebimento indicados para que essa fila seja retornada ao driver de miniporto.

  4. O driver de miniporto libera toda a memória compartilhada alocada para os buffers de recebimento do adaptador de rede associados à fila chamando NdisFreeSharedMemory.

  5. O driver de miniporto conclui o OID_RECEIVE_FILTER_FREE_QUEUE solicitação OID para liberar a fila de recebimento.

Para obter mais informações sobre estados de fila, consulte Estados de fila de VM do NDIS.