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 provedor de serviços virtuais de rede (VSP) devolve todos os pacotes recebidos ao adaptador de rede subjacente que a máquina virtual (VM) não retornou.

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

Quando a VM é reiniciada em um outro host, o VSP de rede no novo host manipula os pacotes recebidos que são retornados pela VM retomada e não os passa para o novo driver de miniporto subjacente. Após a conclusão da migração, a fila de recebimento associada à VM é liberada e pode 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 parado do DMA. 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 de status NDIS_STATUS_RECEIVE_QUEUE_STATE com o QueueState membro da estrutura 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 que todos os pacotes de recebimento indicados sejam retornados para o 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 a solicitação OID OID_RECEIVE_FILTER_FREE_QUEUE para liberar a fila de recebimento.

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