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


Переадресация пакетов в физические сетевые адаптеры

Примечание В этом примечании предполагается, что вы знакомы с информацией и схемами на следующих страницах:

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

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

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

Если расширение пересылки установлено и включено в стеке драйверов расширяемого коммутатора, он отвечает за принятие решений по пересылке для каждого пакета, который он получает на пути входящего трафика расширяемого коммутатора, если пакет не является пакетом NVGRE. (Дополнительные сведения о пакетах NVGRE см. в разделе Гибридной Пересылки.) На основе этих решений переадресации расширение может добавлять порты назначения в структуру внеполосных данных пакета NET_BUFFER_LIST. После завершения обхода пути данных расширяемого коммутатора интерфейс расширяемого коммутатора доставляет пакет в указанные порты назначения.

Примечание Если расширение пересылки не установлено и не включено, сам расширяемый коммутатор принимает решения о пересылке пакетов, полученных из входящего пути данных. Коммутатор добавляет порты назначения в данные OOB структуры NET_BUFFER_LIST пакета, прежде чем пересылает пакет вверх по пути исходящих данных расширяемого коммутатора.

Когда вызывается функция FilterSendNetBufferLists расширения пересылки, параметр NetBufferList содержит указатель на связанный список структур NET_BUFFER_LIST. Каждая из этих структур указывает пакет, полученный из входящего пути данных. Данные для конечных портов содержатся в структуре NDIS_SWITCH_FORWARDING_DESTINATION_ARRAY в данных OOB структуры NET_BUFFER_LIST каждого пакета. Расширение получает структуру 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.