虚拟机多队列(VMMQ) 利用 RSS 处理高效地把网络流量分配给物理功能的虚拟端口(PF VPorts)。 有关 单根 I/O 虚拟化(SR-IOV) 接口及其组件的详细信息,请参阅 SR-IOV 体系结构。
下图显示了 VMMQ 接口中的网络数据包接收路径。
在接收路径上,当数据包到达支持 VMMQ NIC 的 NIC 时:
匹配目标 MAC 地址以查找目标 VPort。
使用 VPort 的 RSS 参数 (密钥、哈希函数和哈希类型)计算数据包的 RSS 哈希值。
使用哈希值为与 VPort 关联的间接表编制索引。 间接表中的值用于将接收的数据分配给处理器。
中断目标处理器,并将收到的数据包指示给主机网络堆栈。
指示收到的 NBL 时,微型端口适配器会将 VPort ID 和 RSS 相关的带外 (OOB) 字段设置为适当的值。
在传输路径上,NIC 必须使用数据包(如果存在)中的 RSS 哈希值作为 VPort 的 RSS 间接表的索引。 NIC 使用此间接表值来确定哪个处理器负责处理数据包的传输完成中断和延迟过程调用(DPC)。
如果 NIC 无法计算收到的数据包的 RSS 哈希值,或者传输数据包中不存在 RSS 哈希值,则应使用 VPort 的默认 RSS 处理器作为目标 RSS 处理器。 VPort 的默认 RSS 处理器将在 VPort 的 RSS 参数中指定。 有关详细信息,请参阅 在 VPort 上启用、禁用和更新 VMMQ。
主机网络堆栈可以在运行时动态更新 VPort 的 RSS 参数。 NIC 应响应 VPort 的 RSS 参数中的更改,同时尽量减少传入和传出 VPort 的流量中断。