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

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

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

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

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

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

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

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

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

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

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

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