Пересылка пакетов в физические сетевые адаптеры
Примечание На этой странице предполагается, что вы знакомы со сведениями и схемами на следующих страницах:
- Расширения пересылки
- Гибридная пересылка
- Расширения расширяемого коммутатора Hyper-V
- Обзор расширяемого коммутатора Hyper-V
- Расширения поставщика объединения
На этой странице описывается, как расширения переадресации коммутаторов Hyper-V могут пересылать запросы на отправку пакетов в базовые физические адаптеры. Один или несколько физических сетевых адаптеров можно привязать к внешнему сетевому адаптеру расширяемого коммутатора.
Например, внешний сетевой адаптер расширяемого коммутатора можно привязать к краю виртуального минипорта промежуточного драйвера мультиплексера NDIS (MUX). Сам промежуточный драйвер MUX может быть привязан к команде из одной или нескольких физических сетей на узле. Эта конфигурация называется командой расширяемых коммутаторов. Дополнительные сведения о командах расширяемых коммутаторов см. в разделе Типы конфигураций физических сетевых адаптеров.
В этой конфигурации расширения расширяемого коммутатора доступны для каждого сетевого адаптера в команде расширяемых коммутаторов. Это позволяет расширению переадресации в стеке драйверов расширяемого коммутатора управлять конфигурацией и использованием отдельных сетевых адаптеров в команде. Например, расширение может обеспечить поддержку решения балансировки нагрузки для отработки отказа (LBFO) для команды путем пересылки исходящих пакетов отдельным адаптерам. Например, расширение называется поставщиком группирования. Дополнительные сведения о поставщиках группирования см. в разделе Teaming Provider Extensions.
Если расширение переадресации установлено и включено в стеке драйвера расширяемого коммутатора, оно отвечает за принятие решений по пересылке для каждого пакета, который он получает по пути входящего трафика расширяемого коммутатора, если пакет не является пакетом NVGRE. (Дополнительные сведения о пакетах NVGRE см. в разделе Гибридная пересылка.) На основе этих решений по пересылке расширение может добавлять порты назначения во внеполосные данные NET_BUFFER_LIST структуры пакета . После завершения обхода пакета пути данных расширяемого коммутатора интерфейс расширяемого коммутатора доставляет пакет на указанные порты назначения.
Примечание Если расширение пересылки не установлено или не включено, расширяемый коммутатор сам принимает решения о переадресации пакетов, которые он получает из пути данных входящего трафика. Коммутатор добавляет порты назначения к данным OOB NET_BUFFER_LIST структуры пакета, прежде чем перенаправляет пакет по пути исходящих данных расширяемого коммутатора.
При вызове функции FilterSendNetBufferLists расширения пересылки параметр NetBufferList содержит указатель на связанный список NET_BUFFER_LIST структур. Каждая из этих структур задает пакет, полученный из пути данных входящего трафика. В данных OOB структуры NET_BUFFER_LIST каждого пакета данные для портов назначения содержатся в структуре NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . Расширение получает структуру NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY и ее элементы, вызывая Метод GetNetBufferListDestinations.
Примечание Для повышения производительности расширение переадресации может вызывать функцию GrowNetBufferListDestinations вместо GetNetBufferListDestinations , чтобы получить указатель на структуру NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY . Расширение делает это, если определяет, что ему нужны дополнительные элементы массива в данных OOB пакета для портов назначения. Дополнительные сведения см. в разделе Добавление данных порта назначения расширяемого коммутатора в пакет.
Каждый элемент в массиве NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY определяет порт назначения и форматируется как структура NDIS_SWITCH_PORT_DESTINATION . Эта структура содержит следующие элементы:
Элемент PortId содержит значение, указывающее порт назначения в расширяемом коммутаторе.
Элемент NicIndex указывает индекс сетевого адаптера, подключенного к порту расширяемого коммутатора, указанному элементом PortId .
Дополнительные сведения об этих значениях индекса см. в разделе Значения индекса сетевого адаптера.
Если расширение пересылки добавляет порт назначения, подключенный к внешнему сетевому адаптеру, расширение может указать индекс базового физического сетевого адаптера. Например, расширение может выступать в качестве поставщика групп для поддержки LBFO через команду расширяемого коммутатора. Это позволяет расширению сбалансировать нагрузку на трафик, перенаправляя запросы на отправку разным адаптерам команды.
Расширение переадресации должно соответствовать этим рекомендациям при добавлении или изменении структуры NDIS_SWITCH_PORT_DESTINATION для пересылки запросов к базовому физическому сетевому адаптеру:
Если член PortId указывает расширяемый порт коммутатора, к которому подключен внешний сетевой адаптер, расширение должно задать для члена NicIndex одно из следующих значений индекса:
Если к внешнему сетевому адаптеру привязан только один физический сетевой адаптер, расширение должно задать для члена NicIndexзначение NDIS_SWITCH_DEFAULT_NIC_INDEX или один.
Если к внешнему сетевому адаптеру привязано несколько физических сетевых адаптеров, расширение должно задать для члена NicIndex значение ненулевого индекса целевого сетевого адаптера в команде расширяемого коммутатора.
Примечание Если член PortId не указывает порт расширяемого коммутатора, к которому подключен внешний сетевой адаптер, расширение должно задать для элемента NicIndexзначение NDIS_SWITCH_DEFAULT_NIC_INDEX.
После того как расширение добавит все порты назначения для пакета, оно должно вызвать NdisFSendNetBufferLists , чтобы перенаправлять пакет по пути данных входящего трафика.
Дополнительные сведения о добавлении портов назначения в пакет см. в статье Пересылка пакетов в порты расширяемого коммутатора Hyper-V.
Дополнительные сведения о пути исходящих данных см. в статье Hyper-V Extensible Switch Data Path.