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

Общие сведения о фильтрации виртуальных коммутаторов

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

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

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

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

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

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

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

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

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

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

  • 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

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

Руководство для модулей записи выносок виртуального коммутатора МПП

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

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

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

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

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

Функция МПП не может быть включена на коммутаторе IOV и блокируется ОПЕРАЦИОННОй системой, если предпринята попытка включить его.

Включение или отключение МПП

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