Поделиться через


Поддержка динамической миграции NDIS VMQ

Для поддержки динамической миграции виртуальную машину можно приостановить на любой инструкции или на границе ожидающих операций ввода-вывода. Это значит, что виртуальная машина может не завершить ожидание запросов на получение. Таким образом, поставщик сетевых виртуальных служб (VSP) возвращает все полученные пакеты базовому сетевому адаптеру, который виртуальная машина не вернула.

Примечание В Hyper-V дочерний раздел также называется виртуальной машиной.

При перезапуске виртуальной машины на другом узле сетевой VSP на новом узле обрабатывает пакеты получения, возвращаемые возобновленной виртуальной машиной, и не передает их в новый базовый драйвер в мини-порте. После завершения миграции очередь получения, связанная с виртуальной машиной, освобождается и ее можно повторно использовать для другой виртуальной машины.

Примечание Новый сетевой адаптер может не поддерживать VMQ.

Когда NDIS запрашивает драйвер мини-порта для освобождения очереди получения VMQ, он выполняет следующие действия:

  1. Сетевой адаптер останавливает передачу данных DMA для получения буферов, связанных с очередью получения, после чего очередь должна перейти в состояние Остановлено DMA. Сетевой адаптер, вероятно, остановил действие DMA при получении запроса OID_RECEIVE_FILTER_CLEAR_FILTER OID для очистки фильтра последнего набора в очереди получения.

  2. Драйвер мини-порта создает NDIS_STATUS_RECEIVE_QUEUE_STATE индикатор состояния с элементом QueueStateNDIS_RECEIVE_QUEUE_STATE структуры NdisReceiveQueueOperationalStateDmaStopped , чтобы уведомить NDIS о том, что передача DMA остановлена.

  3. Драйвер мини-порта ожидает, пока все указанные пакеты получения этой очереди будут возвращены драйверу минипорта.

  4. Драйвер мини-порта освобождает всю общую память, выделенную для буферов получения сетевого адаптера, связанных с очередью, путем вызова NdisFreeSharedMemory.

  5. Драйвер мини-порта завершает запрос OID_RECEIVE_FILTER_FREE_QUEUE OID, чтобы освободить очередь получения.

Дополнительные сведения о состояниях очередей см. в разделе Состояния очереди виртуальных машин NDIS.