筛选扩展

Hyper-V 可扩展交换机筛选扩展可以检查、修改数据包并将其插入到可扩展交换机数据路径中。 根据可扩展的交换机端口和交换机策略设置,扩展可以删除数据包或排除其传递到一个或多个目标端口的数据包。

在捕获入口数据路径中的扩展后,在出口数据路径中的转发扩展之后调用筛选扩展。 有关这些数据路径的详细信息,请参阅 Hyper-V 可扩展交换机数据路径

筛选扩展可以使用在入口数据路径上获取的数据包执行以下操作:

  • 筛选数据包流量,并强制实施自定义端口或交换机策略,以便通过可扩展交换机传递数据包。 当筛选扩展筛选入口数据路径中的数据包时,它只能基于源端口和源自数据包的网络适配器连接应用筛选规则。 此信息存储在带外 (OOB) 数据包 NET_BUFFER_LIST 结构的数据中,可以使用 NET_BUFFER_LIST_SWITCH_FORWARDING_DETAIL 宏获取。

    注意 在入口数据路径上获取的数据包不包含目标端口。 基于目标端口筛选数据包只能在出口数据路径上获取的数据包上完成。

    自定义策略由独立软件供应商 (ISV) 定义。 此策略类型的属性设置通过 Hyper-V WMI 管理层进行管理。 筛选扩展通过对象标识符 (OID) OID_SWITCH_PORT_PROPERTY_UPDATEOID_SWITCH_PROPERTY_UPDATE请求配置这些属性设置。

    有关自定义可扩展端口或交换机策略的详细信息,请参阅 管理 Hyper-V 可扩展交换机策略

    注意 只有转发扩展可以通过可扩展交换机对数据包传送强制实施标准端口策略。

  • 将新的、修改的或克隆的数据包注入入口数据路径。

    有关详细信息,请参阅 Hyper-V 可扩展交换机发送和接收操作

筛选扩展可以使用在出口数据路径上获取的数据包执行以下操作:

  • 筛选数据包流量,并强制实施自定义端口或交换机策略,以便通过可扩展交换机传递数据包。 当筛选扩展筛选出口数据路径中的数据包时,它可以基于数据包的源或目标端口应用筛选规则。 目标端口数据存储在数据包 NET_BUFFER_LIST 结构的 OOB 数据中。 扩展通过调用 GetNetBufferListDestinations 函数获取此信息。

  • 排除将数据包传送到一个或多个可扩展交换机目标端口。 这允许筛选扩展排除数据包传递到可扩展交换机端口。

    有关如何排除到可扩展交换机端口的数据包传递的详细信息,请参阅 排除到可扩展交换机目标端口的数据包传递

  • 通过推迟将数据包转发到出口数据路径来管理发往一个或多个目标端口的流量。

    例如,支持服务质量 (QoS) 功能的筛选扩展可能希望立即调用 NdisFSendNetBufferLists 以转发使用更高优先级值指定的数据包。 根据流量流,扩展可能需要在以后转发优先级值较低的数据包。

  • 修改数据包数据。 如果筛选扩展需要修改数据包中的数据,则必须首先克隆数据包,而不保留端口目标。 然后,扩展必须将修改后的数据包注入入口数据路径。 这允许基础扩展对修改后的数据包强制实施策略,转发扩展可以添加端口目标。

    有关详细信息,请参阅 克隆数据包流量

除了检查 OID 请求和 NDIS 状态指示外,筛选扩展还可以执行以下操作:

  • 通过返回适用的可扩展交换机 OID 的STATUS_DATA_NOT_ACCEPTED,否决创建可扩展交换机端口或网络适配器连接。 例如,当驱动程序收到OID_SWITCH_PORT_CREATE的 OID 集请求时,筛选扩展可以通过返回STATUS_DATA_NOT_ACCEPTED来否决端口创建请求。

    注意 筛选扩展不会创建或删除端口或网络适配器连接。 可扩展交换机的协议边缘会发出 OID,以通知基础筛选器驱动程序有关创建或删除端口或网络适配器连接的信息。 有关详细信息,请参阅 Hyper-V 可扩展交换机端口和网络适配器状态

  • 通过返回适用的可扩展交换机 OID 的STATUS_DATA_NOT_ACCEPTED,否决添加或更新可扩展交换机或端口策略。 例如,当扩展收到OID_SWITCH_PORT_PROPERTY_ADD的 OID 集请求时,筛选扩展可以通过返回STATUS_DATA_NOT_ACCEPTED来否决 添加端口策略。

    有关可扩展交换机策略的详细信息,请参阅 管理 Hyper-V 可扩展交换机策略

筛选扩展具有以下要求:

  • 必须将筛选扩展开发为支持可扩展交换机接口的 NDIS 筛选器驱动程序。

    有关筛选器驱动程序的详细信息,请参阅 NDIS 筛选器驱动程序

    有关如何编写筛选扩展的详细信息,请参阅 编写 Hyper-V 可扩展交换机扩展

    注意 Windows 筛选平台 (WFP) 提供内置可扩展开关筛选扩展 (Wfplwfs.sys ) 。 此扩展允许 WFP 筛选器或标注驱动程序沿 Hyper-V 可扩展交换机数据路径截获数据包。 这允许筛选器或标注驱动程序使用 WFP 管理和系统功能执行数据包检查或修改。 有关 WFP 的概述,请参阅 Windows 筛选平台

  • 筛选扩展的 INF 文件必须将驱动程序安装为修改筛选器驱动程序。 NDIS 监视筛选器驱动程序不能安装在可扩展交换机驱动程序堆栈中。

    有关修改筛选器驱动程序的详细信息,请参阅 筛选器驱动程序的类型

    有关修改筛选器驱动程序的 INF 要求的详细信息,请参阅 为修改筛选器驱动程序配置 INF 文件

  • 筛选器驱动程序的 INF 文件中的 FilterClass 值必须设置为 ms_switch_filter。 有关详细信息,请参阅 Hyper-V 可扩展交换机扩展的 INF 要求

  • 可以在驱动程序堆栈中为可扩展交换机的每个实例绑定和启用任意数量的筛选扩展。 默认情况下,多个筛选扩展根据安装时间进行排序。 例如,多个筛选扩展层放在可扩展交换机驱动程序堆栈中,最近安装的扩展层放在堆栈中其他筛选扩展之上。

    在可扩展交换机实例中绑定并启用这些扩展后,可扩展交换机驱动程序堆栈中筛选扩展的分层可以重新排序。 有关详细信息,请参阅 重新排序 Hyper-V 可扩展交换机扩展