VMQ 的标准化 INF 关键字

定义以下标准化 INF 关键字是为了启用或禁用对虚拟机队列的支持, (VMQ) 网络适配器的功能。

*VMQ
一个 值,该值描述设备是已启用还是禁用了 VMQ 功能。

*VMQLookaheadSplit
一个 值,该值描述设备是否已启用或禁用了将接收缓冲区拆分为观察缓冲区和后观察缓冲区的功能。 微型端口驱动程序使用 NDIS_RECEIVE_FILTER_CAPABILITIES 结构的 SupportedQueueProperties 成员中的 NDIS_RECEIVE_FILTER_LOOKAHEAD_SPLIT_SUPPORTED 标志报告 此功能 。 有关此功能的详细信息,请参阅 接收缓冲区中的共享内存

注意 从 NDIS 6.30 开始,不再支持将数据包拆分为单独的观察缓冲区。 从 Windows Server 2012 开始,此 INF 关键字 (keyword) 已过时。

*VMQVlanFiltering
一个 值,该值描述设备是否已启用或禁用使用媒体访问控制 (MAC) 标头中的 VLAN 标识符筛选网络数据包的功能。 微型端口驱动程序使用 NDIS_RECEIVE_FILTER_CAPABILITIES 结构的 SupportedMacHeaderFields 成员中的 NDIS_RECEIVE_FILTER_MAC_HEADER_VLAN_ID_SUPPORTED 标志报告 此功能

*RssOrVmqPreference
一个 值,该值定义是否应启用 VMQ 功能,而不是接收方缩放 (RSS) 功能。

这是一个隐藏关键字 (keyword) 值,不能在 INF 文件中指定,并且不会显示在网络适配器的“高级”属性页中。 有关详细信息,请参阅 处理 VMQ 和 RSS INF 关键字

VMQ 标准化 INF 关键字是枚举关键字。 下表描述了 VMQ 标准化 INF 关键字的可能 INF 条目。

SubkeyName ParamDesc EnumDesc
*VMQ 虚拟机队列 0 已禁用
1 (默认) Enabled
*VMQLookaheadSplit VMQ Lookahead 拆分 0 禁用注释 从 NDIS 6.30 开始,不再支持此关键字 (keyword) 。
1 (默认) Enabled
*VMQVlanFiltering VMQ VLAN 筛选 0 已禁用
1 (默认) Enabled
*RssOrVmqPreference 注意:此子项的 ParamDesc 和 EnumDesc 条目不能在 INF 文件或用户界面中使用。 有关详细信息,请参阅 处理 VMQ 和 RSS INF 关键字 0(默认值) 注意 报告 RSS 功能
1 注意 报告 VMQ 功能

下表中的列描述了枚举关键字 (keyword) 的以下属性:

SubkeyName
必须在 INF 文件中指定的关键字 (keyword) 的名称。 此名称还会显示在网络适配器的 NDI\参数 键下的注册表中。

ParamDesc
与 SubkeyName INF 条目关联的显示文本。

注意 独立硬件供应商 (IHV) 可以为 SubkeyName 定义任何描述性文本。


与列表中的每个 SubkeyName 关联的枚举整数值。

EnumDesc
“高级 ”属性页中显示的每个值关联的显示文本。

有关标准化 INF 关键字的详细信息,请参阅 网络设备的标准化 INF 关键字

处理 VMQ 和 RSS INF 关键字

支持 VMQ 和接收端缩放 (RSS) 的网络适配器不能同时使用这些功能。 操作系统支持通过以下方式使用 RSS 或 VMQ 功能:

  • 当网络适配器绑定到 TCP/IP 堆栈时,操作将允许使用 RSS 功能。

  • 当网络适配器绑定到 Hyper-V 可扩展交换机驱动程序堆栈时,操作系统将允许使用 VMQ 功能。

    有关详细信息,请参阅 Hyper-V 可扩展交换机

由于网络适配器未禁用,然后在从 TCP/IP 堆栈中取消绑定并绑定到 Hyper-V 驱动程序堆栈 (或反向) 时重新启用,因此此类网络适配器无法自动在 VMQ 和 RSS 之间切换。

当 NDIS 调用 MiniportInitializeEx 函数时,微型端口驱动程序会遵循以下步骤,然后向 NDIS 报告其当前启用的 VMQ 或 RSS 功能:

  1. 微型端口驱动程序先读取 *RssOrVmqPreference 关键字 (keyword) ,然后再将其当前启用的功能报告给 NDIS。

    如果 *RssOrVmqPreference 关键字 (keyword) 的值为 1,则为 VMQ 首选项配置微型端口驱动程序。

    如果 *RssOrVmqPreference 关键字 (keyword) 的值为零或不存在关键字 (keyword) ,则会为 RSS 首选项配置微型端口驱动程序。

  2. 如果为 VMQ 首选项配置了微型端口驱动程序,则必须读取 *VMQ 关键字 (keyword) 以确定是否在网络适配器上启用了 VMQ。 如果关键字 (keyword) 设置为 1,驱动程序将报告当前启用的 VMQ 设置。 有关微型端口驱动程序如何报告 VMQ 设置的详细信息,请参阅 确定网络适配器的 VMQ 功能

    有关 VMQ 关键字的详细信息,请参阅 VMQ 的标准化 INF 关键字。

    注意 如果微型端口驱动程序配置为 VMQ 首选项,则它不得读取任何 RSS 标准化关键字。

  3. 如果为 RSS 首选项配置了微型端口驱动程序,则必须读取 *RSS 关键字 (keyword) 以确定网络适配器上是否启用了 RSS。 如果关键字 (keyword) 设置为 1,驱动程序将报告当前启用的 RSS 设置。 有关微型端口驱动程序如何报告 RSS 设置的详细信息,请参阅 RSS 配置

    有关 RSS 关键字的详细信息,请参阅 RSS 的标准化 INF 关键字

    注意 如果微型端口驱动程序配置为 RSS 首选项,则它不得读取任何 VMQ 标准化关键字。

下表介绍了微型端口驱动程序如何根据注册表关键字确定 RSS 或 VMQ 首选项并播发功能:

*RssOrVmqPreference *VMQ *Rss 播发的 VMQ 或 RSS 功能
1 1 不适用 VMQ
1 0 空值 None
0,或注册表中不存在 空值 1 RSS
0 或注册表中不存在 空值 0

注意 无论这些关键字的值如何,微型端口驱动程序都必须始终报告完整的 RSS 和 VMQ 硬件功能。 这些关键字 (keyword) 设置仅影响驱动程序报告当前启用的 RSS 和 VMQ 功能的方式。

保留的注册表关键字

如果微型端口驱动程序支持 VMQ,并且网络适配器上启用了 VMQ 接口,则驱动程序不得读取以下 RSS INF 条目:

SubkeyName ParamDesc
*RssMaxProcNumber RSS 接口的最大处理器数。 0 到 (MAXIMUM_PROC_PER_GROUP-1) ,
*MaxRssProcessors RSS 处理器的最大数目。 1 到 MAXIMUM_PROC_PER_SYSTEM。

支持 VMQ 的微型端口驱动程序不得读取 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\服务\VMSMP\参数 注册表项下的以下子项。

SubkeyName ParamDesc
*TenGigVmqEnabled 在所有 10 千兆位/秒 (Gbps) 网络适配器上启用或禁用 VMQ。 0=Windows Server 2008 R2) 禁用系统默认 (。
1 = 已启用。
2 = 显式禁用。
*BelowTenGigVmqEnabled 在支持小于 10 Gbps 的所有网络适配器上启用或禁用 VMQ。 0=Windows Server 2008 R2) 禁用系统默认 (。
1 = 已启用。
2 = 显式禁用。
*RssMaxProcNumber RSS 接口的最大处理器数。 0 到 (MAXIMUM_PROC_PER_GROUP-1) ,
*MaxRssProcessors RSS 处理器的最大数目。 1 到 MAXIMUM_PROC_PER_SYSTEM。