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


Расширения для фильтрации

Расширение фильтрации расширяемого коммутатора Hyper-V может проверять, изменять и вставлять пакеты в путь данных расширяемого коммутатора. В зависимости от настроек порта коммутатора и политики коммутатора расширение может отбросить пакет или предотвратить его доставку на один или несколько целевых портов.

Расширения фильтрации вызываются после фиксирования расширений на пути данных входящего трафика и после расширений пересылки на пути данных исходящего трафика. Дополнительные сведения об этих путях данных см. в Hyper-V Расширяемый путь данных коммутатора.

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

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

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

    Пользовательские политики определяются независимым поставщиком программного обеспечения (ISV). Параметры свойств для этого типа политики управляются с помощью уровня управления Hyper-V WMI. Расширение фильтрации настраивается с этими параметрами свойств с помощью запроса идентификатора объекта (OID) OID_SWITCH_PORT_PROPERTY_UPDATE и OID_SWITCH_PROPERTY_UPDATE.

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

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

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

    Дополнительную информацию см. в разделе Hyper-V «Расширяемые операции отправки и получения».

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

  • Фильтрация трафика пакетов и применение пользовательских политик порта или коммутатора для доставки пакетов через расширяемый коммутатор. Когда расширение для фильтрации фильтрует пакеты на пути исходящих данных, оно может применять правила фильтрации на основе портов источника или назначения для пакета. Данные порта назначения хранятся в данных OOB NET_BUFFER_LIST структуры пакета. Расширения получают эти сведения путем вызова функции GetNetBufferListDestinations.

  • Исключите доставку пакета одному или нескольким расширяемым портам назначения коммутатора. Это позволяет расширению фильтрации исключить доставку пакета в расширяемые порты коммутаторов.

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

  • Управляйте потоком трафика на один или несколько конечных портов, отложив пересылку пакетов вверх по пути исходящего трафика.

    Например, расширение фильтрации, поддерживающее функции качества обслуживания (QoS), может захотеть немедленно вызвать NdisFSendNetBufferLists для пересылки пакетов, указанных с более высоким приоритетом. В зависимости от потока трафика расширение, возможно, захочет перенаправить пакеты с более низким значением приоритета позже.

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

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

Помимо проверки запросов OID и индикаторов состояния NDIS, расширение фильтрации может выполнять следующие действия:

  • Наложите вето на создание расширяемого порта коммутатора или подключение сетевого адаптера, возвращая STATUS_DATA_NOT_ACCEPTED для применимых расширяемых OID коммутатора. Например, расширение фильтрации может наложить вето на запрос на создание порта, возвращая "STATUS_DATA_NOT_ACCEPTED", когда драйвер получает запрос набора OID OID_SWITCH_PORT_CREATE.

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

  • Запретите добавление или обновление расширяемого коммутатора или политики портов, возвращая STATUS_DATA_NOT_ACCEPTED для соответствующих OID расширяемого коммутатора. Например, расширение фильтрации может наложить вето на добавление политики порта, возвращая STATUS_DATA_NOT_ACCEPTED, когда расширение получает OID-запрос на установку OID_SWITCH_PORT_PROPERTY_ADD.

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

Расширение фильтрации имеет следующие требования:

  • Расширение фильтрации должно быть разработано как драйвер фильтра NDIS, поддерживающий расширяемый интерфейс коммутатора.

    Дополнительные сведения о драйверах фильтров см. в драйверах фильтров NDIS.

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

    Примечание Windows Filtering Platform (WFP) предоставляет встроенное расширение для фильтрации расширяемого коммутатора (Wfplwfs.sys). Это расширение позволяет фильтрам или драйверам обратного вызова WFP перехватывать пакеты вдоль расширяемого пути данных коммутатора Hyper-V. Это позволяет фильтрам или драйверам выносок выполнять проверку или изменение пакетов с помощью функций управления и системных функций Windows Filtering Platform (WFP). Для получения сведений о платформе фильтрации Windows см. .

  • INF-файл фильтрующего расширения должен установить драйвер в качестве модифицирующего фильтрующего драйвера. Драйверы фильтров мониторинга NDIS нельзя установить в расширяемом стеке драйверов коммутатора.

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

    Дополнительные сведения о требованиях INF для изменения драйверов фильтров см. в настройке INF-файла для модифицирующего драйвера фильтра.

  • Значение FilterClass в INF-файле драйвера фильтра должно иметь значение ms_switch_filter. Дополнительные сведения см. в разделе INF-требования для расширений Hyper-V расширяемого коммутатора.

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

    После привязки и включения в расширяемом экземпляре коммутатора можно изменить порядок слоев расширений фильтрации в расширяемом стеке драйверов коммутатора. Дополнительные сведения см. в разделе Переупорядочение Hyper-V расширяемые расширения коммутатора.