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


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

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

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

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

На следующем рисунке показан путь управления расширяемым коммутатором 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 создается краем виртуального адаптера драйвера MUX. В противном случае указание состояния создается одним физическим сетевым адаптером, привязанным к внешнему сетевому адаптеру.

Когда индикатор состояния NDIS поступает в расширяемый интерфейс коммутатора, он инкапсулирует его внутри структуры NDIS_SWITCH_NIC_STATUS_INDICATION . Затем граница минипорта расширяемого коммутатора выдает NDIS_STATUS_SWITCH_NIC_STATUS указание, содержащее эту структуру.

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

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

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

  • Безопасность протокола ИНТЕРНЕТА (IPsec)

  • Очередь виртуализированной машины (VMQ)

  • Виртуализация одно корневого ввода-вывода (SR-IOV)

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

  • Для элемента SourcePortId необходимо задать идентификатор порта, к которому подключен внешний сетевой адаптер. Внешний сетевой адаптер привязан к одному или нескольким физическим адаптерам. Дополнительные сведения см. в разделе Внешние сетевые адаптеры.

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

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

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

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

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

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

    Когда расширение вызывает ReferenceSwitchNic, оно задает для параметра SwitchPortId значение, указанное для элемента SourcePortId . Расширение также задает для параметра SwitchNicIndex значение, указанное для элемента SourceNicIndex .

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

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

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

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

Дополнительные сведения о драйверах MUX см. в разделе NDIS MUX Intermediate Drivers.