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


Использование фильтрации виртуальных коммутаторов

Обзор фильтрации виртуальных коммутаторов

Фильтрация виртуальных коммутаторов поддерживается в Windows 8 и более поздних версиях Windows.

Эта функция МПП позволяет фильтровать поля заголовка MAC, заголовка IP-адресов и портов верхнего протокола, а также определенные поля виртуального коммутатора, такие как виртуальный порт (VPort) и идентификатор виртуальной машины (идентификатор виртуальной машины). Эти слои вызываются для каждого пакета в отдельности для всех пакетов, проходящих через виртуальный коммутатор. Доступ к этим уровням осуществляется через фильтр расширения виртуального коммутатора — разновидность легковесного фильтра (LWF) в драйвере NDIS.

Драйвер callout вызывает функцию FwpsvSwitchEventsSubscribe0, чтобы зарегистрировать точки входа обратного вызова для событий уровня виртуального коммутатора.

Точки входа для функций уведомлений обратного вызова указываются в структуре FWPS_VSWITCH_EVENT_DISPATCH_TABLE0 . Доступные функции обратного вызова:

Перечисление FWPS_VSWITCH_EVENT_TYPE определяет значения параметра eventType функций уведомлений виртуального коммутатора.

Драйвер вызывного модуля должен в конечном итоге вызвать FwpsvSwitchEventsUnsubscribe0 чтобы освободить системные ресурсы.

Если драйвер коллаута возвращает STATUS_PENDING из функции уведомления WFP, то WFP вернет STATUS_PENDING обработчику запросов OID. Драйвер выноски должен вызвать функцию FwpsvSwitchNotifyComplete0, чтобы завершить ожидающую операцию. После вызова FwpsvSwitchNotifyComplete0 ВПП вызывает функцию NdisFOidRequestComplete , чтобы завершить OID для виртуального коммутатора.

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

Уровень фильтра и поля виртуального коммутатора МПП

Идентификаторы слоев фильтрации во время выполнения для фильтрации виртуальных коммутаторов:

  • FWPS_LAYER_INGRESS_VSWITCH_ETHERNET
  • FWPS_LAYER_EGRESS_VSWITCH_ETHERNET
  • FWPS_LAYER_INGRESS_VSWITCH_TRANSPORT_V4
  • FWPS_LAYER_INGRESS_VSWITCH_TRANSPORT_V6
  • FWPS_LAYER_EGRESS_VSWITCH_TRANSPORT_V4
  • FWPS_LAYER_EGRESS_VSWITCH_TRANSPORT_V6

Идентификаторы полей данных для фильтрации виртуальных коммутаторов:

Руководство для авторов выносок виртуальных переключателей WFP

Трафик порта 0

Для виртуальных коммутаторов WFP трафик из порта 0 (идентификатор порта по умолчанию) считается доверенным и не должен фильтроваться. Это связано с тем, что, как правило, трафик через порт 0 инициируется другими расширениями в стеке драйверов и поэтому обрабатывается каналом данных как привилегированный и доверенный. Расширения виртуального коммутатора будут редко использовать порт 0 для таких ситуаций, как исходящий управляющий пакет, который не должен фильтроваться и отклоняться любыми базовыми расширениями. Дополнительные сведения об изменении исходного порта расширяемого коммутатора Hyper-V см. в разделе "Изменение данных исходного порта коммутатора".

Правила сопоставления выносок

При настройке правила соответствия для фильтрации не следует использовать MAC-адрес в качестве основы для сравнения в вызовах виртуального коммутатора. MAC-адреса могут изменяться во время выполнения, а некоторые порты могут генерировать трафик из нескольких MAC-адресов. Вместо этого выноски должны использовать более устойчивое правило сопоставления, например идентификатор сетевого адаптера, которое не изменится.

Виртуализация ввода-вывода (IOV) и сосуществование МПП

МПП не может быть включен на коммутаторе IOV и блокируется операционной системой, если предпринята попытка включить его.

Включение или отключение WFP

Установщики для вызовов виртуальных коммутаторов WFP не должны изменять состояние подключения WFP; то есть они не должны включать или отключать сам WFP.