Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этом разделе описывается, как Hyper-V расширения расширяемого коммутатора перенаправляют запросы идентификатора объекта (OID) для базовых физических адаптеров через Hyper-V канал управления коммутатором. Расширение также может создавать запросы OID к базовым физическим сетевым адаптерам, следуя методам, описанным в этом разделе.
Например, внешний сетевой адаптер может быть привязан к краю виртуального минипорта промежуточного драйвера мультиплексера NDIS (MUX). Драйвер MUX привязан к команде одной или нескольких физических сетей на узле. Эта конфигурация называется расширяемой командой коммутаторов.
В этой конфигурации расширение расширяемого коммутатора предоставляется каждому сетевому адаптеру в команде. Это позволяет расширению управлять конфигурацией и использованием отдельных сетевых адаптеров в команде. Например, расширение пересылки может обеспечить поддержку решения балансировки нагрузки и отказоустойчивости (LBFO) для команды, переадресуя исходящие пакеты отдельным адаптерам. Расширение пересылки, которое управляет расширяемой группировкой коммутаторов, называется поставщиком группировки. Дополнительные сведения о провайдерах объединения см. в разделе Расширения провайдера объединений.
На следующем рисунке показан пример расширяемой команды коммутаторов для NDIS 6.40 (Windows Server 2012 R2) и более поздних версий.
На следующем рисунке показан пример расширяемой команды коммутаторов для NDIS 6.30 (Windows Server 2012).
Заметка В интерфейсе расширяемого коммутатора Hyper-V драйверы фильтров NDIS называются расширениями расширяемого коммутатора , а стек драйверов называется стеком расширяемых коммутаторов.
Запросы OID должны быть инкапсулированы для пересылки запроса в базовый физический сетевой адаптер. Запросы OID сначала инкапсулируются в структуре NDIS_SWITCH_NIC_OID_REQUEST. Затем запросы OID пересылаются через расширяемый путь управления коммутатором с помощью запроса установки OID OID_SWITCH_NIC_REQUEST.
Запросы OID к базовым физическим адаптерам выдаются следующим образом:
Расширяемый интерфейс коммутатора.
Запросы OID, такие как запросы на разгрузку оборудования, выдаются вышележащими протокольными или фильтрующими драйверами, которые работают в одном из следующих случаев:
Операционная система управления, которая выполняется в родительской секции Hyper-V.
Гостевая операционная система, которая выполняется в дочернем разделе Hyper-V.
Когда эти запросы OID получаются расширяемым коммутатором, они инкапсулируются и перенаправляются по пути управления расширяемым коммутатором. Когда расширение пересылки получает инкапсулированный запрос OID, оно может перенаправить запрос на базовый физический адаптер. Эта возможность особенно полезна для настройки команды расширяемого коммутатора для разгрузки оборудования.
Например, драйвер MUX объявляет общие возможности всей команды расширяемого коммутатора. Однако расширение пересылки может выдавать запросы OID для запроса или настройки отдельных возможностей адаптеров в составе команды. Затем расширение пересылки может инициировать указание состояния NDIS от внешнего сетевого адаптера, чтобы уведомить вышележащие драйверы о возможностях, которые применяются ко всей команде. Дополнительные сведения об этой процедуре см. в разделе "Исходные сведения о состоянии NDIS" из физических сетевых адаптеров.
Когда расширение пересылки перенаправляет запрос OID по управляющему пути, он принимается внешним сетевым адаптером. На этом этапе запрос OID декапсулируется и пересылается на указанный физический сетевой адаптер.
Заметка Начиная с Windows Server 2012, инкапсулируются и пересылаются только аппаратные запросы OID таким образом. Например, разгрузка запросов OID для очереди виртуальных машин (VMQ) или безопасности протокола Интернета (IPsec) инкапсулируются и перенаправляются по пути управления расширяемым коммутатором. Дополнительные сведения см. в разделе "Управление аппаратными разгрузками запросов OID на физические сетевые адаптеры".
Расширение пересылки.
Расширение пересылки может создавать собственные инкапсулированные запросы OID и пересылать их в базовый физический сетевой адаптер. Расширение пересылки может инкапсулировать стандартные запросы NDIS OID. Расширение пересылки также может инкапсулировать частные запросы OID, определенные независимым поставщиком оборудования (IHV) для физических сетевых адаптеров. Это позволяет расширению для пересылки, разработанному IHV, включать или отключать специфические атрибуты на отдельных физических адаптерах в команде.
Кроме того, расширение пересылки может инициировать инкапсулированные аппаратные запросы разгрузки OID для выделения ресурсов для указанного Hyper-V дочернего раздела. Например, расширение пересылки может создавать инкапсулированные запросы OID OID_RECEIVE_FILTER_ALLOCATE_QUEUE для выделения VMQ для указанного дочернего раздела. В этом случае расширение инкапсулирует запрос как исходящий из расширяемого порта коммутатора и подключения сетевого адаптера, связанного с секцией.
Примечание Расширение перенаправления может создавать только собственный инкапсулированный аппаратный запрос разгрузки OID, если оно фильтрует тот же запрос OID, который был выдан вышеуровневыми драйверами. В этом случае расширение не должно пересылать исходный запрос OID. Вместо этого расширение должно вызывать NdisFOidRequestComplete для завершения этого запроса, когда NDIS вызывает FilterOidRequestComplete для завершения исходного запроса OID.
Фильтрация или захват расширений
Модуль фильтрации или перехвата может создавать собственные инкапсулированные запросы OID и пересылать их в базовый физический сетевой адаптер. Эти расширения могут инкапсулировать стандартные запросы NDIS OID или частные запросы OID, определенные независимым поставщиком оборудования (IHV) для физических сетевых адаптеров.
Заметка Только форвардинговые расширения могут инициировать инкапсулированные запросы набора OID к базовым физическим адаптерам.
Расширение пересылки должно выполнять следующие действия, когда оно пересылает, перенаправляет или вызывает инкапсулированный запрос OID для базового физического адаптера:
Если расширение пересылки инициирует запрос OID, оно должно инициализировать структуру NDIS_OID_REQUEST, выделенную расширением, со сведениями, связанными с запросом.
Если расширение перенаправит запрос OID, оно не должно изменять существующую NDIS_OID_REQUEST структуру, на которую ссылается параметр OidRequest функции FilterOidRequest . Вместо этого расширение должно вызвать NdisAllocateCloneOidRequest , чтобы выделить память для новой структуры NDIS_OID_REQUEST и скопировать все сведения из существующей структуры NDIS_OID_REQUEST .
Расширение задает членам выделенной расширения NDIS_SWITCH_NIC_OID_REQUEST структуры следующие значения:
Элемент DestinationPortId должен иметь идентификатор порта расширяемого коммутатора, к которому подключен внешний сетевой адаптер.
Элемент DestinationNicIndex должен иметь значение ненулевого индекса базового физического сетевого адаптера.
Дополнительные сведения о значениях индекса сетевого адаптера см. в .
Если расширение пересылки инициирует запрос аппаратной разгрузки OID для дочернего раздела Hyper-V, элемент SourcePortId должен быть задан как идентификатор порта, используемый разделом. Кроме того, элемент SourceNicIndex должен быть установлен на индекс сетевого адаптера для подключения к этому порту.
Если расширение пересылки инициирует стандартный или частный запрос OID для собственных целей, члены SourcePortId и SourceNicIndex должны быть равны нулю.
Если расширение пересылки передает или перенаправляет запрос OID аппаратной разгрузки, оно должно сохранять значения членов SourcePortId и SourceNicIndex, которые были установлены интерфейсом расширяемого коммутатора.
Элемент OidRequest должен иметь указатель на инициализированную NDIS_OID_REQUEST структуру для инкапсулированного запроса OID. Расширение пересылки либо выделяет и инициализирует структуру, либо использует её клонированную копию.
Расширение задает членам структуры, выделенной расширением NDIS_OID_REQUEST, следующие значения:
Элемент Oid должен иметь значение OID_SWITCH_NIC_REQUEST.
Элемент InformationBuffer должен содержать указатель на буфер, содержащий созданные или отфильтрованные данные запроса OID.
Элемент InformationBufferLength должен содержать длину в байтах буфера, содержащего созданные или отфильтрованные данные запроса OID.
Расширение задает другим членам значения, допустимые для структуры NDIS_OID_REQUEST .
Расширение вызывает ReferenceSwitchNic для увеличения счетчика ссылок для индекса целевого физического сетевого адаптера. Это гарантирует, что интерфейс расширяемого коммутатора не будет удалять подключение физического сетевого адаптера, пока его счетчик ссылок не является ненулевым.
Когда расширение вызывает ReferenceSwitchNic, он задает параметр SwitchPortId значением, указанным для члена DestinationPortId . Расширение также задает параметр SwitchNicIndex значением, указанным для элемента DestinationNicIndex.
Заметка Если ReferenceSwitchNic не возвращает NDIS_STATUS_SUCCESS, запрос OID нельзя перенаправить в целевой физический сетевой адаптер.
Если расширение перенаправления инициирует аппаратный запрос OID разгрузки для дочернего раздела Hyper-V, оно также вызывает ReferenceSwitchNic для увеличения счетчика ссылок индекса подключения исходного сетевого адаптера, связанного с разделом. Это гарантирует, что интерфейс расширяемого коммутатора не будет удалять подключение физического сетевого адаптера до тех пор, пока его счетчик ссылок не равен нулю.
Когда расширение вызывает ReferenceSwitchNic, он задает параметр SwitchPortId значением, указанным для элемента SourcePortId. Расширение также задает параметр SwitchNicIndex значением, указанным для элемента SourceNicIndex.
Заметка Если ReferenceSwitchNic не возвращает NDIS_STATUS_SUCCESS, запрос OID нельзя перенаправить в целевой физический сетевой адаптер.
Расширение вызывает NdisFOidRequest для пересылки инкапсулированного запроса OID на указанный порт расширяемого коммутатора назначения и сетевого адаптера.
Заметка Если расширение перенаправит отфильтрованный запрос OID, он должен вызывать NdisFOidRequest в контексте вызова функции FilterOidRequest . Если расширение пересылает созданные запросы OID, оно вызывает NdisFIndicateStatus во время выполнения,перезапуска, приостановки и паузы состояния. Дополнительные сведения об этих состояниях см. в разделе "Фильтрация состояний модуля" и "Операции".
Когда NDIS вызывает функцию FilterOidRequestComplete, расширение вызывает DereferenceSwitchNic, чтобы очистить счетчик ссылок для индекса целевого физического сетевого адаптера.
Если расширение пересылки инициировало запрос на аппаратную разгрузку OID для дочернего раздела Hyper-V, оно также вызывает DereferenceSwitchNic, чтобы обнулить счетчик ссылок для индекса подключения исходного сетевого адаптера.
В обоих случаях расширение задает параметры SwitchPortId и SwitchNicIndex одинаковым значениям, которые он использовал в вызове ReferenceSwitchNic.
Дополнительные сведения о том, как расширение формирует запросы OID, см. в разделе "Создание запросов OID из драйвера фильтра NDIS".
Дополнительные сведения о драйверах NDIS MUX (промежуточных) см. в .