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


Поток пакетов через путь к данным расширяемого коммутатора

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

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

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

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

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

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

На следующем рисунке показан путь к данным расширяемого коммутатора для NDIS 6.30 (Windows Server 2012).

Схема: расширяемая архитектура коммутатора Hyper-V для NDIS 6.30.

Дополнительные сведения о компонентах интерфейса расширяемого коммутатора см. в статье Hyper-V Extensible Switch Architecture.

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

Превышение границы протокола

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

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

    Дополнительные сведения о контексте переадресации см. в разделе Контекст переадресации расширяемого коммутатора Hyper-V.

  2. В NDIS 6.40 (Windows Server 2012 R2) и более поздних версиях, если пакет является пакетом NVGRE из внешнего сетевого адаптера, расширяемый коммутатор устанавливает флаг NativeForwardingRequired в сведениях о внешнем канале (OOB) пакета. Дополнительные сведения см. в разделе Гибридная пересылка.

  3. Если пакет поступил на порт, где трафик имеет виртуальную подсеть, расширяемый коммутатор задает для пакета элемент VirtualSubnetIdNDIS_NET_BUFFER_LIST_VIRTUAL_SUBNET_INFO структуры.

    Примечание Виртуальная подсеть может быть подсетью HNV или сторонней виртуальной подсетью.

Путь к данным входящего трафика

  1. Расширение получает пакет из пути данных входящего трафика при вызове его функции FilterSendNetBufferLists . Расширение перенаправляет пакет базовым расширениям по пути данных входящего трафика, вызывая NdisFSendNetBufferLists. Расширения фильтрации и пересылки также могут удалять пакет из пути данных входящего трафика путем вызова NdisFSendNetBufferListsComplete.

  2. При записи расширения получают пакеты по пути данных входящего трафика, они могут проверять данные пакетов. Однако захватываемые расширения не должны завершать запросы на отправку пакетов по пути входящего трафика. Эти расширения всегда должны пересылать пакеты базовым расширениям в стеке драйверов расширяемого коммутатора.

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

    Дополнительные сведения об источнике пакетов с помощью расширения см. в разделе Исходящий трафик пакетов.

  3. При фильтрации расширений, получающих пакеты по пути данных входящего трафика, они могут выполнять следующие действия.

    • Удаление пакетов на основе настраиваемых расширяемых коммутаторов или политик портов.

      Дополнительные сведения об этих политиках см. в статье Политики расширяемого коммутатора Hyper-V.

      Примечание Пакеты, полученные по пути данных входящего трафика, не имеют портов назначения, определенных в данных OOB пакета. В результате расширения фильтрации должны применять только настраиваемые политики на основе данных пакета, исходного порта или подключения к сетевому адаптеру пакета.

  • Клонирование или изменение пакетов, полученных из пути данных входящего трафика.

  • Внедрение новых пакетов в путь данных входящего трафика.

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

    • Если пакет является пакетом NVGRE от внешнего сетевого адаптера, адрес в заголовке пакета является адресным адресом поставщика (PA). Расширяемый переключатель указывает на это путем установки флага NativeForwardingRequired в сведениях о внеполосном (OOB) пакета. Дополнительные сведения см. в разделе Гибридная пересылка.

    • Расширяемый коммутатор применяет встроенные политики входящего трафика к пакету. Эти политики могут включать списки управления доступом (ACL) входящего трафика, DHCP Guard и Router Guard.

  2. Если расширение пересылки не включено в стеке драйверов расширяемого коммутатора, массив портов назначения для пакета определяется расширяемым коммутатором.

  3. Если расширение переадресации включено, оно должно выполнять следующие действия при получении пакетов по пути данных входящего трафика:

    • В NDIS 6.40 и более поздних версиях, если пакет является пакетом NVGRE (см. раздел Гибридная пересылка), расширение переадресации не может изменить массив портов назначения в данных OOB пакета в пути к данным входящего трафика. Однако пакет может быть отброшен.

    • Если пакет не является пакетом NVGRE, расширение пересылки должно добавить порты назначения в массив портов назначения в данных OOB пакета.

    • Расширение переадресации должно удалять пакеты на основе стандартных или пользовательских расширяемых коммутаторов или политик портов. Стандартные политики коммутаторов или портов включают свойства безопасности и виртуальной локальной сети (VLAN). Если расширение переадресации не включено в стеке драйверов расширяемого коммутатора, эти политики применяются расширяемым коммутатором.

      Примечание Когда модуль пересылки фильтрует пакеты в пути данных входящего трафика, он применяет правила фильтрации на основе исходного порта, а также портов назначения, которые расширение назначает пакету.

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

  • Клонирование или изменение пакетов, полученных из пути данных входящего трафика.

  • Внедрение новых пакетов в путь данных входящего трафика.

Базовая граница мини-порта

  1. Когда пакет поступает на базовый край мини-порта расширяемого коммутатора, расширяемый коммутатор применяет к пакету свои встроенные политики. К этим политикам относятся списки управления доступом (ACL) и свойства качества обслуживания (QoS). Если пакет не удаляется из-за этих политик, расширяемый коммутатор создает сигнал получения для пакета и перенаправляет пакет по пути исходящих данных.

    Примечание Если зеркальное отображение портов включено на порте, на который должен быть доставлен пакет, пограничный порт мини-порта добавляет порт назначения к данным OOB пакета для порта зеркало. Пограничный мини-порт делает это независимо от того, установлено ли расширение пересылки и включено ли оно в стеке драйверов расширяемого коммутатора. Граница мини-порта добавляет порт зеркало только в том случае, если он еще не указан в массиве портов назначения для пакета.

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

  3. В NDIS 6.40 и более поздних версиях компонент HNV выполняет необходимую инкапсуляцию или декапсуляцию NVGRE после входящего трафика и перед исходящим трафиком, чтобы расширение переадресации видело пакет в инкапсулированной и декапсулированной форме. Например, если пакет поступил из внешнего сетевого адаптера и предназначен для внутренней виртуальной машины, расширение переадресации получает инкапсулированный пакет во входящего трафика, а декапсулированный пакет — в исходящем трафике.

    Примечание В инкапсулированном пакете адрес в заголовке пакета является адресом адреса поставщика (PA). В декапсулированном пакете это адрес клиента (ЦС).

    1. Если пакет является пакетом NVGRE, полученным от внешнего сетевого адаптера, компонент виртуализации сети Hyper-V (HNV) расширяемого коммутатора выполняет декапсуляцию NVGRE в пакете. Компонент HNV определяет назначения для пакета в соответствии с политиками HNV, а затем расширяемый коммутатор перенаправит пакет по пути исходящих данных.

    2. Если пакет поступил с внутренней виртуальной машины, компонент HNV выполнит инкапсуляцию NVGRE в пакете, если для пакета заданы политики HNV. Компонент HNV определяет назначения для пакета в соответствии с политиками HNV, а затем расширяемый коммутатор перенаправит пакет по пути исходящих данных.

    3. В противном случае расширение переадресации перенаправит пакет по пути исходящих данных.

  4. В NDIS 6.30, если включено расширение пересылки, оно должно перенаправить пакет по пути исходящих данных.

Путь к исходящим данным

  1. Расширение получает пакет из пути данных исходящего трафика при вызове его функции FilterReceiveNetBufferLists . Расширение перенаправит пакет в сверхрасположенные расширения по пути исходящих данных, вызывая NdisFIndicateReceiveNetBufferLists. Расширения фильтрации и пересылки также могут удалять пакет из пути исходящих данных путем вызова NdisFReturnNetBufferLists.

  2. Когда модуль пересылки получает пакет по пути исходящих данных, он может проверить сведения о порте назначения пакета в данных OOB.

    Примечание Расширение получает эти сведения из данных OOB, вызывая Метод GetNetBufferListDestinations.

На основе стандартных или настраиваемых политик коммутаторов или портов расширение может исключить доставку пакета на один или несколько конечных портов, содержащихся в данных OOB.

  1. В NDIS 6.40 (Windows Server 2012 R2) и более поздних версиях после расширения пересылки, но до расширений фильтрации и записи по пути исходящих данных расширяемый коммутатор применяет встроенные политики исходящего трафика к пакету. Эти политики могут включать режим магистрали, режим мониторинга, списки управления доступом для исходящего трафика и свойства качества обслуживания (QoS).

  2. При фильтрации расширения получают пакет по пути исходящих данных, они могут проверить сведения о порте назначения пакета в данных OOB. На основе настраиваемых политик коммутатора или портов расширение может исключить доставку пакета на один или несколько портов назначения, содержащихся в данных OOB.

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

    Дополнительные сведения см. в разделе Клонирование или трафик пакетов.

  3. При записи расширения получают пакеты по пути исходящих данных, они могут проверять данные пакета. Однако если отслеживаемое расширение должно создавать пакеты для передачи условий трафика в приложение удаленного мониторинга, оно должно инициировать этот трафик пакетов путем вызова NdisFSendNetBufferLists , чтобы инициировать операцию отправки по пути входящего трафика.

  4. Когда пакет поступает на границу протокола расширяемого коммутатора, интерфейс расширяемого коммутатора перенаправит пакет на все указанные порты назначения.

  5. После перенаправления пакета интерфейс завершает пакет по тому же пути в обратном направлении. Сначала интерфейс вызывает функцию FilterReturnNetBufferLists расширения для завершения пакетов, переадресуемых по пути исходящих данных. Затем интерфейс вызывает функцию FilterSendNetBufferListsComplete расширения для завершения пакетов, переадресуемых по пути входящего трафика.

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