Виртуальные порты (VPorts)
Виртуальный порт (VPort) — это объект данных, представляющий внутренний порт на коммутаторе сетевого адаптера, который поддерживает виртуализацию одно корневых операций ввода-вывода (SR-IOV). Каждый коммутатор сетевого адаптера имеет следующие порты для сетевого подключения:
Один внешний физический порт для подключения к внешней физической сети.
Один или несколько внутренних виртуальных портов, подключенных к физической функции PCI Express (PF) или виртуальным функциям (VFs).
- PF подключен к родительскому разделу Hyper-V и предоставляется в качестве адаптера виртуальной сети в операционной системе управления, работающей в этом разделе.
- VF подсоединён к дочернему разделу Hyper-V и предоставляется в качестве адаптера виртуальной сети в гостевой операционной системе, работающей в этом разделе.
Сетевой адаптер переключает сетевой трафик с физического порта на один или несколько виртуальных портов. Это обеспечивает виртуализированный доступ к базовому физическому сетевому интерфейсу.
Каждый VPort имеет уникальный идентификатор (VPortId), уникальный для коммутатора сетевого адаптера. VPort по умолчанию всегда существует в коммутаторе сетевого адаптера по умолчанию и никогда не может быть удален. По умолчанию VPort имеет VPortId NDIS_DEFAULT_VPORT_ID
.
Когда драйвер минипорта PF обрабатывает запрос метода идентификатора объекта (OID) OID_NIC_SWITCH_CREATE_SWITCH, он создает NIC-коммутатор и VPort по умолчанию для него. VPort по умолчанию всегда подключен к PF и всегда находится в рабочем состоянии.
Нестандартные VPorts создаются с помощью запросов метода OID OID_NIC_SWITCH_CREATE_VPORT. К VF может быть присоединён только один VPort не по умолчанию. После присоединения значение по умолчанию находится в рабочем состоянии. Можно также создать один или несколько нестандартных VPorts и подключить их к PF. Эти виртуальные порты являются неработоспособными при создании и могут работать с помощью запроса набора OID OID_NIC_SWITCH_VPORT_PARAMETERS.
Заметка
После того, как VPort станет активным, он может стать неработоспособным только при удалении через запрос OID OID_NIC_SWITCH_DELETE_VPORT.
Каждый VPort имеет одну или несколько пар аппаратных очередей, связанных с ним для получения и передачи пакетов. Пара очередей по умолчанию на сетевом адаптере зарезервирована для использования VPort по умолчанию. Пары очередей для нестандартных VPorts выделяются и присваиваются, когда VPort создается с помощью запроса OID_NIC_SWITCH_CREATE_VPORT.
Нестандартные VPorts создаются и настраиваются методами запросов OID OID_NIC_SWITCH_CREATE_VPORT. Виртуальные порты по умолчанию и виртуальные порты, отличные от порта по умолчанию, перенастраиваются с помощью запросов набора OID OID_NIC_SWITCH_VPORT_PARAMETERS. Каждый запрос OID содержит структуру NDIS_NIC_SWITCH_VPORT_PARAMETERS, которая задает следующие параметры конфигурации:
Функция PCIe, к которой подключен VPort.
Каждый VPort может быть подключен либо к PF, либо к VF в любое время. После создания и подключения VPort к функции PCIe вложение не может быть динамически изменено на другую функцию PCIe.
Заметка
VPort по умолчанию всегда подключен к PF на сетевом адаптере.
Начиная с NDIS версии 6.30 в Windows Server 2012, к виртуальной функции (VF) можно подключить только один недефолтный VPort. Однако к PF можно подключить несколько нестандартных VPort, а также VPort по умолчанию.
Количество пар аппаратных очередей, назначенных для VPort.
Каждый VPort имеет набор пар аппаратных очередей, доступных ему. Каждая пара очередей состоит из отдельной очереди передачи и получения в сетевом адаптере.
Пары очередей представляют собой ограниченные ресурсы сетевого адаптера. Общее количество пар очередей, которые зарезервированы для использования по умолчанию и не по умолчанию VPort, указывается при создании переключателя сетевого интерфейса. Это позволяет количеству пар очередей, назначенных VPort по умолчанию, отличаться от VPort непоумолчанию.
Каждый VPort, не по умолчанию, можно настроить на различное количество пар очередей. Это называется асимметричным выделением пар очередей. Если сетевой адаптер не разрешает такое асимметричное выделение, то для каждого недефаультного VPort настроено равное количество пар очередей. Это называется симметричным выделением пар очередей. Дополнительные сведения см. в разделе «Симметричное и асимметричное назначение пар очередей».
Заметка
Драйвер минипорта PF сообщает, поддерживает ли он асимметричное выделение пар очередей во время MiniportInitializeEx. Дополнительные сведения см. в Инициализация драйвера минипорта PF.
Количество пар очередей, назначенных каждому VPort, не изменяется динамически. Невозможно изменить количество пар очередей, назначенных VPort, после его создания.
Заметка
Для масштабирования на стороне получения (RSS) можно использовать одну или несколько пар очередей, назначенных нестандартным VPorts, посредством минипорта VF, который работает в гостевой операционной системе.
Параметры модерации прерываний для VPort.
Для разных виртуальных портов можно указать различные типы модерации прерываний. Это позволяет стеку виртуализации управлять количеством прерываний, созданных определенным виртуальным портом.
В дополнение к параметрам конфигурации, вышележащие драйверы могут настраивать фильтры получения для каждого VPort, отправляя запросы метода OID OID_RECEIVE_FILTER_SET_FILTER. Коммутатор сетевого адаптера выполняет указанную фильтрацию приема на основе VPort.
Параметры фильтра для VPorts включают условия фильтрации пакетов, такие как список MAC-адресов и идентификаторы виртуальной локальной сети (VLAN). Фильтры для MAC-адресов и идентификаторов VLAN всегда указываются вместе в NDIS_RECEIVE_FILTER_PARAMETERS, связанных с запросом OID_RECEIVE_FILTER_SET_FILTER. Коммутатор сетевого адаптера должен фильтровать входящие пакеты таким образом, чтобы MAC-адрес назначения и идентификатор VLAN пакета совпадали с любым условием приема, установленным на VPort. Коммутатор сетевого адаптера фильтрует пакеты, полученные из другого VPort или внешнего физического порта. Если пакет соответствует фильтру, переключение сетевого адаптера должно перенаправить его в VPort.
В VPort можно задать несколько пар идентификаторов MAC-адресов и идентификаторов виртуальной локальной сети. Если задан только MAC-адрес, фильтр получения указывает, что VPort должен получать пакеты, соответствующие следующим условиям:
Целевой MAC-адрес пакета соответствует MAC-адресу фильтра.
Пакет имеет тег виртуальной локальной сети или (если тег виртуальной локальной сети присутствует) идентификатор виртуальной локальной сети с нулем.
Неумолчательные VPorts удаляются через запросы установки OID OID_NIC_SWITCH_DELETE_VPORT. Виртуальный порт по умолчанию удаляется только при удалении коммутатора сетевого адаптера с помощью запроса набора OID OID_NIC_SWITCH_DELETE_SWITCH.