VMMQ 发送和接收处理
虚拟机多个队列 (VMMQ) 使用 RSS 处理有效地分发物理功能 虚拟端口 的网络流量 (PF VPorts) 。 有关 单根 I/O 虚拟化 (SR-IOV) 接口及其组件的详细信息,请参阅 SR-IOV 体系结构。
下图显示了 VMMQ 接口中的网络数据包接收路径。
在接收路径上,当数据包到达支持 VMM 的 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 的流量中断。