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


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

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

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

Протокол верхнего уровня на границе

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

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

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

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

  3. Если пакет прибыл на порт, в котором трафик имеет виртуальную подсеть, расширяемый коммутатор задает VirtualSubnetId член структуры NDIS_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 и Guard маршрутизатора.

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

  3. Если расширение пересылки включено, при получении пакетов на входящем маршруте передачи данных необходимо выполнить следующее:

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

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

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

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

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

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

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

Базовый край минипорта

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

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

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

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

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

    1. Если пакет является пакетом NVGRE, поступающим из внешнего сетевого адаптера, компонент Hyper-V Network Virtualization (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) и более поздних версиях, после расширения пересылки, но перед расширениями фильтрации и захвата на пути исходящих данных, расширяемый коммутатор применяет встроенные политики для исходящего трафика к пакету. Эти политики могут включать транковый режим, режим мониторинга, ACL для исходящего трафика и свойства качества обслуживания (QoS).

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

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

    Для получения дополнительной информации см. клонирование илитрафик пакетов.

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

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

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

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