使用虚拟交换机筛选
虚拟交换机筛选概述
Windows 8 及更高版本的 Windows 支持虚拟交换机筛选。
此 WFP 功能允许筛选 MAC 标头、IP 标头和上层协议端口的字段,以及虚拟交换机特定的字段,例如虚拟端口 (VPort) 和虚拟机标识符 (VM ID) 。 对于遍历虚拟交换机的所有数据包,将按数据包调用这些层。 这些层是从虚拟交换机扩展筛选器(一种 NDIS 轻型筛选器 (LWF) 驱动程序)访问的。
标注驱动程序调用 FwpsvSwitchEventsSubscribe0 函数来注册虚拟交换机层事件的回调入口点。
回调通知函数的入口点在 FWPS_VSWITCH_EVENT_DISPATCH_TABLE0 结构中指定。 可用的回调函数包括:
- FWPS_VSWITCH_FILTER_ENGINE_REORDER_CALLBACK0
- FWPS_VSWITCH_INTERFACE_EVENT_CALLBACK0
- FWPS_VSWITCH_LIFETIME_EVENT_CALLBACK0
- FWPS_VSWITCH_POLICY_EVENT_CALLBACK0
- FWPS_VSWITCH_PORT_EVENT_CALLBACK0
- FWPS_VSWITCH_RUNTIME_STATE_RESTORE_CALLBACK0
- FWPS_VSWITCH_RUNTIME_STATE_SAVE_CALLBACK0
FWPS_VSWITCH_EVENT_TYPE 枚举定义虚拟交换机通知函数的 eventType 参数的值。
标注驱动程序最终必须调用 FwpsvSwitchEventsUnsubscribe0 以释放系统资源。
如果标注驱动程序从 WFP 通知函数返回STATUS_PENDING,则 WFP 会将STATUS_PENDING返回到 OID 请求处理程序。 标注驱动程序必须调用 FwpsvSwitchNotifyComplete0 函数才能完成挂起的操作。 在 FwpsvSwitchNotifyComplete0 调用后,WFP 调用 NdisFOidRequestComplete 函数以完成虚拟交换机的 OID。
回调不应在通知函数的上下文中同步添加或删除 WFP 筛选器。 此外,如果通知函数允许回调返回STATUS_PENDING,并且标注返回STATUS_PENDING,则标注在完成通知之前不应添加或删除 WFP 筛选器。
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
用于筛选虚拟交换机的数据字段标识符包括:
- FWPS_FIELDS_EGRESS_VSWITCH_ETHERNET
- FWPS_FIELDS_EGRESS_VSWITCH_TRANSPORT_V4
- FWPS_FIELDS_EGRESS_VSWITCH_TRANSPORT_V6
- FWPS_FIELDS_INGRESS_VSWITCH_ETHERNET
- FWPS_FIELDS_INGRESS_VSWITCH_TRANSPORT_V4
- FWPS_FIELDS_INGRESS_VSWITCH_TRANSPORT_V6
WFP 虚拟交换机标注编写器指南
端口 0 流量
对于 WFP 虚拟交换机标注,来自端口 0 (默认端口 ID) 的流量受信任,不应进行筛选。 这是因为,通常,通过端口 0 的流量来自驱动程序堆栈中的其他扩展,因此数据路径将其视为特权和受信任的。 对于发出控制数据包等情况,虚拟交换机扩展将谨慎使用端口 0,不应由任何基础扩展筛选和拒绝该数据包。 有关 Hyper-V 可扩展交换机源端口模式的详细信息,请参阅 修改数据包的可扩展交换机源端口数据。
标注匹配规则
定义筛选的匹配规则时,虚拟交换机标注不应使用 MAC 地址作为比较的基础。 MAC 地址可以在运行时更改,某些端口可能会从多个 MAC 地址生成流量。 相反,标注应使用更持久的匹配规则,例如 NIC ID,该规则不会更改。
I/O 虚拟化 (IOV) 和 WFP 共存
无法在 IOV 交换机上启用 WFP,如果尝试启用它,则 OS 会阻止它。
启用或禁用 WFP
WFP 虚拟交换机标注的安装程序不应修改 WFP 扩展已启用状态;也就是说,它们不应启用或禁用 WFP 本身。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈