组合提供程序扩展
可扩展交换机外部网络适配器可以绑定到 NDIS 多路复用器 (MUX) 中间驱动程序的虚拟微型端口边缘。 MUX 中间驱动程序本身可以绑定到主机上一个或多个物理网络的团队。 此配置称为 可扩展交换机团队。 有关可扩展交换机团队的详细信息,请参阅 物理网络适配器配置类型。
在此配置中,可扩展交换机扩展将公开给可扩展交换机团队中的每个网络适配器。 这允许可扩展交换机驱动程序堆栈中的转发扩展管理团队中各个网络适配器的配置和使用。 例如,该扩展可以通过将传出数据包转发到单个适配器,支持通过团队 (LBFO) 解决方案进行负载均衡故障转移。 此类扩展称为 组合提供程序。
下图显示了发往或传出基础可扩展交换机团队的数据包流量的数据路径,该数据路径绑定到 NDIS 6.40 (Windows Server 2012 R2) 及更高版本的外部网络适配器。
下图显示了发往或传出基础可扩展交换机团队的数据包流量的数据路径,该数据路径绑定到 NDIS 6.30 (Windows Server 2012) 的外部网络适配器。
组合提供程序可以执行转发扩展所能做的一切。 此外,组合提供程序可以执行以下操作。
将传出数据包转发到可扩展交换机团队中的单个物理适配器。 此功能对于 LBFO 功能特别有用。
将标准 NDIS 对象标识符 (OID) 请求转发到可扩展交换机团队中的单个物理适配器。 此功能对于为硬件卸载配置团队中的适配器特别有用。
例如,MUX 驱动程序播发整个可扩展交换机团队的常见功能。 但是,组合提供程序可以发出 OID 请求来查询团队中适配器的各个功能。 然后,组合提供程序可以向可扩展交换机外部网络适配器发出 OID 请求,以设置适用于整个团队的功能。
将专用 OID 请求转发到可扩展交换机团队中的单个物理适配器。 这些专用 OID 请求由物理网络适配器的独立硬件供应商 (IHV) 定义。 这允许也由 IHV 开发的组合提供程序启用或禁用团队中各个物理适配器的专有属性。
修改可扩展交换机团队的 NDIS 状态指示。 此功能对于管理硬件卸载的可扩展交换机团队特别有用。
例如,MUX 驱动程序使用整个可扩展交换机团队通用的设置发出 NDIS 状态指示。 如果状态指示针对硬件卸载,该硬件卸载指示为可扩展交换机团队中的网络适配器启用组合提供程序,则组合提供程序可以首先发出 OID 请求来查询该适配器上的当前功能。 然后,组合提供程序可以修改指示数据,以设置适配器上可能已更改的属性。
管理可扩展交换机团队时,组合提供程序必须遵循以下准则:
组合提供程序必须维护已为其建立了可扩展交换机网络连接的每个物理网络适配器的状态。
对于绑定到外部网络适配器的每个物理网络适配器,可扩展交换机的协议边缘会发出单独的 OID 集 请求OID_SWITCH_NIC_CREATE。 此 OID 请求通知扩展创建到基础物理适配器的网络连接。
创建与物理网络适配器的网络连接时,会为其分配一个非零索引值,该值对于外部网络适配器连接到的端口是唯一的。
当组合提供程序发出数据包或 OID 请求或将请求转发到基础物理网络适配器时,它必须指定网络适配器索引值。
有关详细信息,请参阅 网络适配器索引值。
如果组合提供程序发出数据包或将数据包转发到物理适配器,则必须指定物理适配器连接的非零网络适配器索引值。
当提供程序收到数据包时,它可以从 NET_BUFFER_LIST 结构中的数据包的带外转发上下文中确定源网络适配器索引值。 有关转发上下文的详细信息,请参阅 Hyper-V 可扩展交换机转发上下文。
有关详细信息,请参阅 Hyper-V 可扩展交换机数据路径。
若要向物理适配器发出转发 OID 请求,组合提供程序必须将 OID 请求封装在 NDIS_SWITCH_NIC_OID_REQUEST 结构中。 提供程序必须将 DestinationNicIndex 成员设置为物理适配器连接的非零网络适配器索引值。 然后,提供程序发出 OID_SWITCH_NIC_REQUEST 的 OID 集请求,将封装的 OID 请求传递到目标物理适配器。
有关详细信息,请参阅 管理对物理网络适配器的 OID 请求。
组合提供程序可以代表基础物理适配器发出 NDIS 状态指示。 为此,提供程序必须将指示封装在 NDIS_SWITCH_NIC_STATUS_INDICATION 结构中。 提供程序必须将 SourceNicIndex 成员设置为物理适配器连接的非零网络适配器索引值。 然后,提供程序发出 NDIS_STATUS_SWITCH_NIC_STATUS 的 NDIS 状态指示,以将封装的状态指示传递给可扩展交换机驱动程序堆栈中的过度驱动程序。
有关详细信息,请参阅 从物理网络适配器管理 NDIS 状态指示。
有关转发扩展的详细信息,请参阅 转发扩展。
有关 MUX 驱动程序的详细信息,请参阅 NDIS MUX 中间驱动程序。