处理 SR-IOV、VMQ 和 RSS 标准化 INF 关键字

支持单根 I/O 虚拟化 (SR-IOV) 、虚拟机队列 (VMQ) 以及接收端缩放 (RSS) 的网络适配器可以通过以下方式启用这些接口:

  • SR-IOV 和 VMQ 可以单独启用,也可以同时启用。

  • 启用 SR-IOV 或 VMQ 后,无法在网络适配器上启用 RSS。

操作系统支持通过以下方式使用 SR-IOV、VMQ 或 RSS 接口:

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

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

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

当网络适配器从 TCP/IP 堆栈和 Hyper-V 可扩展交换机驱动程序堆栈取消绑定时,微型端口驱动程序将停止,然后重新初始化。 因此,此类网络适配器无法自动在 RSS、VMQ 和 SR-IOV 之间切换。

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

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

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

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

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

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

  3. 如果微型端口驱动程序配置为 SR-IOV 首选项,则必须读取 *SRIOV 关键字 (keyword) 以确定是否在网络适配器上启用了 SR-IOV。 如果关键字 (keyword) 设置为 1,驱动程序将报告当前启用的 SR-IOV 设置。

    有关微型端口驱动程序如何报告 SR-IOV 设置的详细信息,请参阅 确定 SR-IOV 功能

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

    注意 如果微型端口驱动程序配置为 SR-IOV 首选项,则它不得读取任何 RSS 标准化关键字。 但是,驱动程序必须读取 VMQ *VMQVlanFiltering 标准化关键字 (keyword) 。 此关键字 (keyword) 指定是否启用微型端口驱动程序,以便在媒体访问控制 (MAC) 标头中使用虚拟 VLAN (VLAN) 标识符筛选网络数据包。 微型端口驱动程序通过在 NDIS_RECEIVE_FILTER_CAPABILITIES 结构的 SupportedMacHeaderFields 成员中设置 NDIS_RECEIVE_FILTER_MAC_HEADER_VLAN_ID_SUPPORTED 标志来报告此功能。 有关 *VMQVlanFiltering 标准化关键字 (keyword) 的详细信息,请参阅 VMQ 的标准化 INF 关键字

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

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

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

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

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

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

下表介绍了微型端口驱动程序如何确定 SR-IOV、VMQ 或 RSS 首选项,以便在网络适配器中启用正确的接口。

SriovPreferred RssOrVmqPreference SRIOV VMQ *Rss 启用的界面

1

1

1

1

不适用

SR-IOV 和 VMQ

1

1

0

1

不适用

VMQ

1

注册表中存在 1、0 或不存在

0

0

空值

None

0,或注册表中不存在

1

不适用

1

不适用

VMQ

0,或注册表中不存在

1

不适用

0

空值

None

0,或注册表中不存在

0,或注册表中不存在

空值

空值

1

RSS

0,或注册表中不存在

0,或注册表中不存在

空值

空值

0

注意 同时启用 SR-IOV 和 VMQ 接口后,将 (附加到 PCI Express (PCIe) 物理功能 (PF) 的 VPort) 使用 SR-IOV 非默认虚拟端口,而不是 VMQ 接口的 VM 队列。 有关详细信息,请参阅 非默认虚拟端口和 VMQ

微型端口驱动程序必须播发当前启用的接口的功能。 例如,如果启用了 SR-IOV,微型端口驱动程序必须播发 SR-IOV 功能,但不能播发 VMQ 或 RSS 的功能。 但是,无论网络适配器上启用了哪个接口,微型端口驱动程序都必须始终报告完整的 RSS、VMQ 和 SR-IOV 硬件功能。

注意 VMQ 和 SR-IOV 接口对 VM 队列或 SR-IOV 虚拟端口使用接收筛选, (VPorts) 。 因此,启用其中任一接口时,某些接收筛选功能需要相同或不同的设置。 有关如何报告 SR-IOV 接口的接收筛选功能的详细信息,请参阅 确定接收筛选功能。 有关如何报告 VMQ 接口的接收筛选功能的详细信息,请参阅 确定网络适配器的 VMQ 功能