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


Управление аппаратной разгрузкой запросов OID на физические сетевые адаптеры

В этом разделе описывается, как расширяемое расширение переадресации Hyper-V обрабатывает запросы идентификатора объекта (OID) для технологий аппаратной разгрузки на физических адаптерах в основе по пути управления расширяемым коммутатором.

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

В этой конфигурации расширение расширяемого коммутатора предоставляется каждому сетевому адаптеру в команде. Это позволяет расширению управлять конфигурацией и использованием отдельных сетевых адаптеров в команде. Например, расширение для переадресации может обеспечить поддержку решения для балансировки нагрузки и отработки отказа (LBFO) в сети, переадресовав исходящие пакеты отдельным адаптерам. Расширение передачи, которое управляет объединяемой командой коммутаторов, называется поставщиком агрегации. Дополнительные сведения о поставщиках объединений см. раздел Расширения поставщика объединения.

На следующем рисунке показан пример расширяемой команды коммутаторов для NDIS 6.40 (Windows Server 2012 R2) и более поздних версий.

схема, показывающая расширяемую команду коммутатора для NDIS 6.40.

На следующем рисунке показан пример расширяемой команды коммутаторов для NDIS 6.30 (Windows Server 2012).

схема, иллюстрирующая расширяемую команду коммутаторов для NDIS 6.30.

Примечание В интерфейсе расширяемого коммутатора драйверы фильтров NDIS называются расширениями расширяемого коммутатора, а стек драйверов называется стеком расширяемых коммутаторов.

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

NDIS и вышележащие протоколы и драйверы фильтров могут выдавать запросы OID для аппаратных технологий разгрузки подлежащему физическому сетевому адаптеру. Когда эти запросы OID поступают в интерфейс расширяемого коммутатора, он инкапсулирует запрос OID внутри NDIS_SWITCH_NIC_OID_REQUEST. Затем край протокола расширяемого коммутатора выдает запрос OID OID_SWITCH_NIC_REQUEST, содержащий эту структуру.

Интерфейс расширяемого коммутатора инкапсулирует OID для следующих технологий разгрузки оборудования:

разгрузка IPsec (версия 2)
Следующие запросы IPsec OID инкапсулируются:

Расширение пересылки не должно завершиться ошибкой или вето, эти запросы OID.

Дополнительные сведения о версии 2 технологии разгрузки оборудования IPsec см. в IPsec Offload Version 2.

виртуализация однокорневого ввода-вывода (SR-IOV)
Следующие запросы OID SR-IOV инкапсулированы:

Расширение пересылки может наложить вето на OID-запросы OID_NIC_SWITCH_ALLOCATE_VF и OID_NIC_SWITCH_CREATE_VPORT, завершив запрос с кодом состояния, отличным от NDIS_STATUS_SUCCESS. Однако расширение не должно налагать вето на другие запросы OID для SR-IOV.

Дополнительные сведения о технологии разгрузки оборудования SR-IOV см. в однокорневой виртуализации ввода-вывода (SR-IOV).

очередь виртуальных машин (VMQ)
Следующие запросы VMQ OID инкапсулируются:

Расширение пересылки может наложить вето на OID-запросы OID_RECEIVE_FILTER_ALLOCATE_QUEUE и OID_RECEIVE_FILTER_SET_FILTER путем завершения запроса с любым кодом состояния, кроме NDIS_STATUS_SUCCESS. Однако расширение не должно накладывать вето на другие запросы OID VMQ.

Дополнительные сведения об аппаратной разгрузке технологии VMQ см. в разделе Очередь виртуальных машин (VMQ).

Расширение пересылки должно соответствовать этим рекомендациям по обработке запросов OID разгрузки аппаратных ресурсов.

  • Платформа обмена мгновенными сообщениями Microsoft рекламирует только общие функции разгрузки для всей команды. Однако расширение может создавать запросы OID для запроса возможностей каждого адаптера в команде.

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

  • Все запросы OID аппаратной разгрузки, возникшие от верхнеуровневых протоколов или драйверов фильтров, будут инкапсулированы в структуру NDIS_SWITCH_NIC_OID_REQUEST. Все запросы на разгрузку оборудования, порожденные расширением пересылки, также должны быть инкапсулированы в структуру NDIS_SWITCH_NIC_OID_REQUEST.

    Расширение перенаправит инкапсулированный запрос OID на базовый физический сетевой адаптер через запрос набора OID OID_SWITCH_NIC_REQUEST. Дополнительные сведения об этой процедуре см. в Пересылка запросов OID на физические сетевые адаптеры.

  • Расширение не должно изменять или прерывать аппаратные запросы OID на разгрузку, чтобы очистить, освободить или завершить выделение ресурсов для разгрузки. Например, расширение не должно вызывать ошибку при выполнении запросов OID OID_RECEIVE_FILTER_CLEAR_FILTER или OID_NIC_SWITCH_DELETE_VPORT. Расширяемый интерфейс коммутатора должен обрабатывать эти запросы OID для очистки сведений о состоянии этих ресурсов.

    Расширение может изменить или предотвратить выполнение OID-запросов разгрузки оборудования для выделения, перемещения или настройки ресурсов разгрузки. Например, расширение может завершиться ошибкой или изменить запросы OID, такие как OID_NIC_SWITCH_ALLOCATE_VF или OID_TCP_TASK_IPSEC_OFFLOAD_V2_ADD_SA.

  • Расширение может инициировать любой аппаратный offload OID к базовому физическому сетевому адаптеру. Однако расширение не должно инициировать аппаратную разгрузку OID, которая очищает или освобождает ресурсы разгрузки, которые расширение не выделяло.

    Например, расширение не должно инициировать запрос OID аппаратной разгрузки OID_RECEIVE_FILTER_FREE_QUEUE, если оно не инициировало запрос OID_RECEIVE_FILTER_ALLOCATE_QUEUE для той же очереди.

    Примечание Расширение может инициировать только собственный инкапсулированный запрос на разгрузку аппаратного обеспечения по OID, если оно фильтрует тот же запрос OID, который был выдан накладывающимися драйверами. В этом случае расширение не должно пересылать исходный запрос OID. Вместо этого расширение должно вызывать NdisFOidRequestComplete для завершения этого запроса, когда NDIS вызывает FilterOidRequestComplete для завершения исходного запроса OID.

  • Если расширение перенаправляет запрос OID аппаратной разгрузки на базовый физический сетевой адаптер, то для элемента DestinationNicIndex структуры NDIS_SWITCH_NIC_OID_REQUEST необходимо установить значение ненулевого индекса адаптера. Дополнительные сведения о значениях индекса сетевого адаптера см. в .

    Кроме того, член DestinationPortId должен быть установлен на идентификатор порта расширяемого коммутатора, к которому подключен внешний сетевой адаптер.

  • Если расширение инициирует запрос OID аппаратной разгрузки для выделения ресурсов для дочернего раздела Hyper-V, элемент SourcePortId структуры NDIS_SWITCH_NIC_OID_REQUEST должен быть установлен в идентификатор расширяемого порта коммутатора, к которому подключен раздел.

    Элемент SourceNicIndex должен иметь значение NDIS_SWITCH_DEFAULT_NIC_INDEX.

  • Когда расширение вызывает NdisFOidRequest для пересылки запроса OID, оно должно задать параметр OidRequest как указатель на структуру NDIS_OID_REQUEST для запроса OID_SWITCH_NIC_REQUEST OID.

Для получения дополнительной информации о том, как расширение фильтрует запросы OID, см. Фильтрация запросов OID вдрайвере фильтра NDIS.

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