在 RSS 和 VMQ 接收任务卸载中支持 NVGRE

NDIS 6.30 (Windows Server 2012) 引入了使用通用路由封装 (NVGRE) 的网络虚拟化。 执行 接收方缩放 (RSS) 和 虚拟机队列 (VMQ) 接收任务卸载的 NDIS 微型端口驱动程序和 NIC 应采用支持 NVGRE 的方式执行此操作。

注意 本页假定你熟悉 卸载大型 TCP 数据包分段中的信息。

如果微型端口驱动程序支持封装数据包的 RSS 和 VMQ,则必须在 NDIS_ENCAPSULATED_PACKET_TASK_OFFLOAD 结构的 RssSupportedVmqSupported 成员中播发这些功能。 如果微型端口播发了这些功能,收到了 OID_TCP_OFFLOAD_PARAMETERS OID 请求,并且成功执行了 OID,则 NIC 必须对播发的封装数据包类型执行 RSS 和 VMQ。

对于能够分析的受支持的封装数据包,NIC 必须在传输的有效负载中对 TCP 或 UDP 标头执行 RSS, (内部) IP 标头和内部 MAC 标头上的 VMQ。

若要执行 RSS 和 VMQ,NIC 必须访问封装数据包的内部) IP 标头的传输 (,如在接收路径中查找封装数据包的传输标头中所述,并检查协议编号。 如果 NIC 收到使用 NIC 可以分析的协议的数据包,则 NIC 应:

  • 通过在传输 (内部) IP 标头和 TCP 或 UDP 标头上执行 4 元组哈希来执行 RSS。
    • 对于微端口无法分析其协议的封装数据包,NIC 应在隧道 (外部) IP 标头的源和目标地址字段上执行 2 元组哈希。
    • 对于不包含紧跟传输 (内部) IP 标头之后的 TCP 或 UDP 标头的封装数据包,NIC 应在隧道 (外部) IP 标头的源和目标地址字段上执行 2 元组哈希。
  • 使用封装数据包中的以太网标头执行 VMQ。 对于封装数据包) 中不包含以太网标头 (的封装数据包,应使用最外层的以太网标头执行 VMQ。