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


Исходные указания состояния NDIS из физических сетевых адаптеров

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

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

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

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

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

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

Схема, показывающая путь управления расширяемым коммутатором Hyper-V для указания состояния NDIS из физических сетевых адаптеров и сетевых адаптеров виртуальных машин для NDIS 6.40 и более поздних версий.

На следующем рисунке показан путь к элементу управления расширяемым коммутатором Hyper-V для указаний состояния NDIS из физических сетевых адаптеров и сетевых адаптеров виртуальных машин для NDIS 6.30 (Windows Server 2012).

Схема, показывающая путь управления расширяемым коммутатором Hyper-V для указаний состояния NDIS из физических сетевых адаптеров и сетевых адаптеров виртуальных машин для NDIS 6.30.

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

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

Примечание Только расширения пересылки могут создавать инкапсулированные указания состояния. Дополнительные сведения об этом типе расширения см. в разделе Расширение пересылки.

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

  • Безопасность протокола IP (IPsec).

  • Виртуализированная очередь машин (VMQ).

  • Виртуализация SR-IOV.

Расширение переадресации также может создавать инкапсулированные указания состояния NDIS для изменения ресурсов аппаратной разгрузки, выделенных для дочернего раздела Hyper-V. Начиная с версии NDIS 6.30, расширение может выдавать инкапсулированное NDIS_STATUS_SWITCH_PORT_REMOVE_VF указание на удаление привязки между сетевым адаптером виртуальной машины и виртуальной функцией PCI Express (PCIe) (VF). Виртуальная машина предоставляется и поддерживается базовым физическим сетевым адаптером, поддерживающим интерфейс виртуализации ввода-вывода с одним корнем (SR-IOV).

Если расширение переадресации является источником инкапсулированного состояния NDIS для ресурсов аппаратной разгрузки базового физического адаптера, оно должно задать элементы структуры NDIS_SWITCH_NIC_STATUS_INDICATION следующим образом:

  • Для элемента DestinationPortId необходимо задать значение NDIS_SWITCH_DEFAULT_PORT_ID.

  • Элемент DestinationNicIndex должен иметь значение NDIS_SWITCH_DEFAULT_NIC_INDEX

  • Член SourcePortId должен иметь идентификатор порта расширяемого коммутатора, к которому подключен внешний сетевой адаптер.

  • Элемент SourceNicIndex должен иметь значение NDIS_SWITCH_DEFAULT_NIC_INDEX. Это позволяет интерпретировать индикатор состояния как исходящий от всей команды расширяемых коммутаторов, привязанной к внешнему сетевому адаптеру.

    Примечание Расширение переадресации также должно задать для этого члена значение NDIS_SWITCH_DEFAULT_NIC_INDEX , если к внешнему сетевому адаптеру привязан только один физический сетевой адаптер.

  • Элемент StatusIndication должен иметь указатель на структуру NDIS_STATUS_INDICATION . Эта структура содержит данные для инкапсулированного указания состояния NDIS.

Если расширение переадресации является источником указания состояния NDIS для ресурсов аппаратной разгрузки дочернего раздела Hyper-V, оно должно задать элементы структуры NDIS_SWITCH_NIC_STATUS_INDICATION следующим образом:

  • Для элементов DestinationPortId и DestinationNicIndex необходимо задать соответствующие значения индекса порта и сетевого адаптера для сетевого подключения, используемого секцией.

  • Для элемента SourcePortId необходимо задать значение NDIS_SWITCH_DEFAULT_PORT_ID.

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

  • Элемент StatusIndication должен иметь указатель на структуру NDIS_STATUS_INDICATION . Эта структура содержит данные для инкапсулированного указания состояния NDIS.

Когда расширение выдает инкапсулированное указание состояния NDIS, оно должно выполнить следующие действия:

  1. Расширение вызывает ReferenceSwitchNic для увеличения счетчика ссылок для подключения к сетевому адаптеру источника или назначения. Это гарантирует, что расширяемый интерфейс коммутатора не будет удалять подключение сетевого адаптера, пока его счетчик ссылок не равен нулю.

    Когда расширение вызывает ReferenceSwitchNic, оно задает параметры следующими способами:

    • Если расширение переадресации создает инкапсулированное указание состояния NDIS для базового физического адаптера, оно задает параметру SwitchPortId значение, указанное для элемента SourcePortId . Расширение также задает для параметра SwitchNicIndex значение, указанное для элемента SourceNicIndex .

    • Если расширение переадресации создает указание состояния NDIS для дочерней секции Hyper-V, оно присваивает параметру SwitchPortId значение, указанное для элемента DestinationPortId . Расширение также задает для параметра SwitchNicIndex значение, указанное для элемента DestinationNicIndex .

    Примечание Если ReferenceSwitchNic не возвращает NDIS_STATUS_SUCCESS, инкапсулированное указание состояния NDIS не может быть выдано.

  2. Расширение вызывает NdisFIndicateStatus для пересылки инкапсулированного уведомления о состоянии.

    Примечание Если расширение перенаправит отфильтрованный запрос OID, оно должно вызвать NdisFIndicateStatus в контексте вызова функции FilterStatus .

  3. После возврата NdisFIndicateStatus расширение вызывает DereferenceSwitchNic , чтобы очистить счетчик ссылок для подключения исходного или целевого сетевого адаптера. Расширение задает для параметров SwitchPortId и SwitchNicIndex те же значения, что и при вызове ReferenceSwitchNic.