接收有关 Hyper-V 可扩展交换机配置更改的 OID 请求

可扩展交换机接口通过发出可扩展交换机对象标识符 (OID) 集请求,通知基础扩展对可扩展交换机组件配置和策略参数的更改。 这些请求由可扩展交换机的协议边缘发出,以通知基础扩展对可扩展交换机组件配置和策略参数的更改。 这些 OID 请求通过可扩展交换机驱动程序堆栈移动到可扩展交换机的基础微型端口边缘。

下图显示了 NDIS 6.40 (Windows Server 2012 R2) 及更高版本的 OID 请求的可扩展交换机控制路径。

显示 NDIS 6.40 中 OID 请求的可扩展交换机控制路径的关系图。

下图显示了 NDIS 6.30 (Windows Server 2012) 的 OID 请求的可扩展交换机控制路径。

显示 NDIS 6.30 中 OID 请求的可扩展交换机控制路径的关系图。

注意 在可扩展交换机接口中,NDIS 筛选器驱动程序称为 可扩展交换机扩展 ,驱动程序堆栈称为 可扩展交换机驱动程序堆栈

可扩展交换机的协议边缘针对以下类型的通知发出 OID 集请求:

  • 对可扩展交换机上的端口配置的更改。

    例如,协议驱动程序发出 OID_SWITCH_PORT_CREATE ,以通知基础扩展在可扩展交换机上创建端口。 同样,协议驱动程序会发出 OID_SWITCH_PORT_DELETE ,以通知扩展有关删除端口的信息。

    有关此类 OID 通知的详细信息,请参阅 Hyper-V 可扩展交换机端口

  • 更改到可扩展交换机上的端口的网络适配器连接。

    例如,协议驱动程序发出 OID_SWITCH_NIC_CONNECT ,以通知基础扩展有关网络适配器与可扩展交换机上的端口的连接。 同样,协议驱动程序 会发出OID_SWITCH_NIC_DISCONNECT ,以通知扩展已断开网络适配器与端口的连接。

    有关此类 OID 通知的详细信息,请参阅 Hyper-V 可扩展交换机网络适配器

  • 对可扩展交换机端口或交换机策略的更改。

    例如,协议驱动程序发出 OID_SWITCH_PROPERTY_ADD ,以通知基础扩展添加可扩展开关属性。 同样,协议驱动程序会发出 OID_SWITCH_PORT_PROPERTY_DELETE ,以通知扩展删除端口属性。

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

    注意 扩展不会收到对由可扩展交换机的基础微型端口边缘管理的默认端口或交换机策略更改的通知。

  • 保存或还原运行时端口数据。

    例如,协议驱动程序发出 OID_SWITCH_NIC_SAVE ,通知基础扩展保存可扩展交换机上指定端口的运行时数据。 这些 OID 是在 Hyper-V 状态保存或迁移到另一台主机时发出的。 同样,协议驱动程序 发出OID_SWITCH_NIC_RESTORE ,以通知扩展正在可扩展交换机上还原运行时端口数据。

    有关此类 OID 通知的详细信息,请参阅 管理 Hyper-V 可扩展交换机 Run-Time 数据

可扩展交换机扩展微型端口驱动程序负责完成这些 OID 请求。 但是,对于某些可扩展交换机 OID 请求,基础扩展可能会使 OID 请求失败,以否决通知。 例如,当可扩展交换机协议驱动程序通知筛选器驱动程序将在可扩展交换机上创建的新端口时,它会发出 OID_SWITCH_PORT_CREATE的 OID 集请求。 基础筛选或转发扩展可以通过使用 STATUS_DATA_NOT_ACCEPTED 完成 OID 请求来否决端口创建。

当可扩展交换机 OID 请求调用其 FilterOidRequest 函数时,可扩展交换机扩展必须遵循以下准则:

  • 该扩展不得修改 OidRequest 参数指向的任何数据。

  • 对于某些可扩展交换机 OID 请求,扩展可以使用STATUS_DATA_NOT_ACCEPTED完成 OID 请求。 这会否决对其发出 OID 请求的可扩展交换机组件的操作。

    例如,扩展可以使用 STATUS_DATA_NOT_ACCEPTED 完成OID_SWITCH_NIC_CREATE请求。 如果驱动程序无法在要创建网络连接的指定端口上满足其配置的策略,则可能需要执行此操作。

    扩展可以按这种方式完成以下 OID 的请求:

  • 如果扩展未完成 OID 请求,则必须调用 NdisFOidRequest 以将请求向下转发到可扩展交换机驱动程序堆栈。

    注意 在驱动程序调用 NdisFOidRequest 之前,驱动程序必须调用 NdisAllocateCloneOidRequest 来分配 NDIS_OID_REQUEST 结构并将请求信息传输到新结构。

    当调用其 FilterOidRequestComplete 函数时,扩展应监视 OID 请求的完成结果。 这样,扩展就可以确定对可扩展交换机组件执行的操作是成功完成还是被基础扩展否决。

    有关如何筛选和转发 OID 请求的详细信息,请参阅 在 NDIS 筛选器驱动程序中筛选 OID 请求

  • NDIS 和超载协议和筛选器驱动程序可能会向底层物理网络适配器发出硬件卸载技术的 OID 请求。 这包括卸载技术的 OID 请求,例如虚拟机队列 (VMQ) 、Internet 协议安全 (IPsec) 和单根 I/O 虚拟化 (SR-IOV) 。

    当这些 OID 请求到达可扩展交换机接口时,它会将 OID 请求封装在 NDIS_SWITCH_NIC_OID_REQUEST中。 然后,可扩展交换机的协议边缘发出包含此结构的 OID_SWITCH_NIC_REQUEST 的 OID 请求。

  • 可扩展交换机转发扩展可以在绑定到外部网络适配器的一个或多个物理适配器上为 NDIS 硬件卸载技术提供支持。 在此配置中,可扩展交换机外部网络适配器绑定到 NDIS 多路复用器 (MUX) 中间驱动程序的虚拟微型端口边缘。 MUX 中间驱动程序绑定到主机上一个或多个物理网络的团队。 此配置称为 可扩展交换机团队。 有关可扩展交换机团队的详细信息,请参阅 物理网络适配器配置的类型

    在此配置中,可扩展交换机扩展将公开给团队中的每个网络适配器。 这允许可扩展交换机驱动程序堆栈中的转发扩展管理团队中单个网络适配器的配置和使用。 例如,该扩展可以通过将传出数据包转发到单个适配器, (LBFO) 解决方案来支持团队的负载均衡故障转移。 此类扩展称为 组合提供程序。 有关组合提供程序的详细信息,请参阅 Teaming Provider Extensions

    通过处理 OID_SWITCH_NIC_REQUEST的 OID 请求,组合提供程序可以参与适配器团队的配置,以便卸载硬件。 例如,扩展可以生成自己的 OID 请求(OID_SWITCH_NIC_REQUEST),以使用硬件卸载的参数配置物理适配器。

    有关如何处理 OID_SWITCH_NIC_REQUEST OID 请求的详细信息,请参阅 将 OID 请求转发到物理网络适配器

    注意 扩展筛选器驱动程序可以生成 OID_SWITCH_NIC_REQUEST 的 OID 请求,以向绑定到可扩展交换机外部网络适配器的任何物理适配器发出专用 OID。

注意 当可扩展交换机 OID 请求挂起时,使用 NdisFRestartFilter 的堆栈重启请求将不会完成。 因此,正在等待堆栈重启的扩展必须完成任何正在进行的 OID 请求。

有关可扩展交换机 OID 请求的控制路径的详细信息,请参阅 OID 请求的 Hyper-V 可扩展交换机控制路径