Фильтрация расширений
Расширение фильтрации расширяемых коммутаторов Hyper-V может проверять, изменять и вставлять пакеты в путь данных расширяемого коммутатора. На основе расширяемого порта коммутатора и параметров политики переключения расширение может удалить пакет или исключить его доставку на один или несколько портов назначения.
Модули фильтрации вызываются после записи расширений в пути данных входящего трафика и после расширений пересылки в пути исходящих данных. Дополнительные сведения об этих путях данных см. в статье Путь к данным расширенного коммутатора Hyper-V.
Расширение фильтрации может выполнять следующие действия с пакетами, полученными по пути входящего трафика:
Фильтрация трафика пакетов и применение настраиваемых политик порта или коммутатора для доставки пакетов через расширяемый коммутатор. Когда расширение фильтрации фильтрует пакеты в пути к данным входящего трафика, оно может применять правила фильтрации только на основе исходного порта и подключения сетевого адаптера, из которого был получен пакет. Эти сведения хранятся во внеполосных данных (OOB) структуры NET_BUFFER_LIST пакета и могут быть получены с помощью макроса NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL .
Примечание Пакеты, полученные по пути данных входящего трафика, не содержат порты назначения. Фильтрация пакетов на основе портов назначения может выполняться только для пакетов, полученных по пути исходящих данных.
Настраиваемые политики определяются независимым поставщиком программного обеспечения. Параметры свойств для этого типа политики управляются с помощью уровня управления WMI Hyper-V. Расширение фильтрации настраивается с этими параметрами свойств с помощью запроса идентификатора объекта (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 (ВПП) предоставляет встроенное расширяемое расширение фильтрации коммутаторов (Wfplwfs.sys ). Это расширение позволяет фильтрам ИЛИ драйверам выносок ВПП перехватывать пакеты по пути данных расширяемого коммутатора Hyper-V. Это позволяет фильтрам или драйверам выносок выполнять проверку или изменение пакетов с помощью системных функций управления и системы МПП. Общие сведения о ВПП см. в статье Платформа фильтрации Windows.
Inf-файл для расширения фильтрации должен установить драйвер в качестве изменяющегося драйвера фильтра. Драйверы фильтров мониторинга NDIS не могут быть установлены в стеке драйверов расширяемого коммутатора.
Дополнительные сведения об изменении драйверов фильтров см. в разделе Типы драйверов фильтров.
Дополнительные сведения о требованиях INF для изменения драйверов фильтров см. в статье Настройка INF-файла для драйвера фильтра.
Значение FilterClass в INF-файле для драйвера фильтра должно иметь значение ms_switch_filter. Дополнительные сведения см. в разделе Требования к INF для расширений расширяемого коммутатора Hyper-V.
Любое количество расширений фильтрации можно привязать и включить в стеке драйверов для каждого экземпляра расширяемого коммутатора. По умолчанию несколько расширений фильтрации упорядочены в зависимости от того, когда они были установлены. Например, несколько расширений фильтрации размещаются в стеке драйвера расширяемого коммутатора, а последнее установленное расширение — над другими расширениями фильтрации в стеке.
После привязки и включения в экземпляре расширяемого коммутатора можно изменить порядок расширений фильтрации в стеке драйвера расширяемого коммутатора. Дополнительные сведения см. в статье Изменение порядка расширений коммутаторов Hyper-V.