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


Выделение ресурсов для виртуальной функции

Сетевой адаптер, поддерживающий виртуализацию одно корневых операций ввода-вывода (SR-IOV), должен поддерживать следующие аппаратные компоненты:

  • Одна физическая функция PCI Express (PCIe). PF всегда существует в сетевом адаптере и подключен к родительскому разделу Hyper-V.

    Дополнительные сведения об этом аппаратном компоненте см. в разделе Физические функции SR-IOV (PF).

  • Одна или несколько виртуальных функций PCIe (VF). Каждая виртуальная машина должна быть инициализирована и подключена к дочернему разделу Hyper-V, прежде чем сетевые компоненты гостевой операционной системы смогут отправлять или получать пакеты через VF.

    Дополнительные сведения об этом аппаратном компоненте см. в статье Виртуальные функции SR-IOV (VFs).

Драйвер минипорта PF, работающий в операционной системе управления родительского раздела Hyper-V, выделяет ресурсы для PF и каждого виртуального экземпляра в сетевом адаптере SR-IOV. Этот драйвер выделяет ресурсы для PF так же, как и для любого сетевого адаптера. Однако драйвер выделяет ресурсы для каждой виртуальной машины следующим образом:

  • Драйвер мини-порта PF выделяет аппаратные ресурсы для каждой виртуальной машины, когда драйвер создает сетевой интерфейс карта (NIC) на сетевом адаптере. Драйвер завершает выделение аппаратных ресурсов для виртуальных машин, вызывая NdisMEnableVirtualization. Дополнительные сведения об этом процессе см. в разделе Создание коммутатора сетевого адаптера.

  • Драйвер минипорта PF выделяет программные ресурсы для VF, когда драйвер обрабатывает запрос метода идентификатора объекта (OID) OID_NIC_SWITCH_ALLOCATE_VF. Несмотря на то, что аппаратные ресурсы были выделены для VF, он считается нерабочим, пока драйвер мини-порта PF не завершит OID_NIC_SWITCH_ALLOCATE_VF.

Драйвер overlying может запросить выделение программных ресурсов для VF, отправив запрос метода OID для OID_NIC_SWITCH_ALLOCATE_VF. Элемент InformationBuffer структуры NDIS_OID_REQUEST для запроса OID содержит указатель на структуру NDIS_NIC_SWITCH_VF_PARAMETERS .

После успешного возврата из запроса OID элемент InformationBuffer структуры NDIS_OID_REQUEST содержит указатель на структуру NDIS_NIC_SWITCH_VF_PARAMETERS . Эта структура имеет уникальный идентификатор VF адаптера и идентификатор инициатора запроса PCI (RID). Эти идентификаторы используются следующими способами:

  • Драйвер overlying использует идентификатор VF в действиях, связанных с VF, например:

    • Получение текущих параметров VF с помощью запроса метода OID OID_NIC_SWITCH_VF_PARAMETERS.

    • Освобождение ранее выделенных ресурсов для виртуальной машины с помощью запроса на набор OID OID_NIC_SWITCH_FREE_VF.

    • Выдача сброса PCI в VF с помощью запроса на набор OID OID_SRIOV_RESET_VF.

  • Rid используется стеком виртуализации для переназначения DMA и прерываний между PF и VF. Rid также позволяет аппаратной единице управления памятью ввода-вывода (IOMMU) преобразовывать физические гостевые адреса в физические адреса размещения.

Дополнительные сведения о том, как избыточный драйвер выдает проблемы OID_NIC_SWITCH_ALLOCATE_VF запросам метода, см. в разделе Выдача запросов OID_NIC_SWITCH_ALLOCATE_VF.

Дополнительные сведения о том, как драйвер минипорта PF обрабатывает запросы OID_NIC_SWITCH_ALLOCATE_VF метода, см. в разделе Обработка запросов OID_NIC_SWITCH_ALLOCATE_VF.

Примечание После выделения ресурсов для виртуальной машины с помощью запроса метода OID OID_NIC_SWITCH_ALLOCATE_VF параметры ресурсов для виртуальной машины нельзя изменить динамически.