RSS 支持
除了默认的 Toeplitz 函数外,该设备还支持使用 XOR 作为 RSS 分布函数。
对于少量流,XOR 函数在驱动程序的接收队列之间提供更好的分布,确保每个 TCP/UDP 流都分配到不同的队列。
要在 Toeplitz 和 XOR RSS 哈希函数之间切换,请使用 sysfs
接口,路径为:/sys/class/net/eth*/settings/hfunc
。
查询操作和支持的哈希函数
cat /sys/class
/net/eth*/settings/hfunc
示例
cat /sys/class
/net/eth2/settings/hfunc
Operational hfunc: toeplitz
Supported hfuncs: xor toeplitz
更改操作哈希函数
echo xor > /sys/class
/net/eth*/settings/hfunc
接收端扩展 (RSS) 技术允许在不同的接收描述符队列之间分散传入流量。将每个队列分配给不同的 CPU 核心可以更好地平衡传入流量的负载并提高性能。
此技术已通过 verbs 层扩展到用户空间,可用于 RAW ETH QP。
导引规则对传入数据包进行分类,并将特定的流量类型(例如 TCP/UDP,仅 IP)或特定流传递到 “RX Hash” QP。“RX Hash” QP 负责使用 RX 哈希和间接表在接收工作队列之间分散其处理的流量。接收工作队列可以指向可以与不同 CPU 核心关联的不同 CQ。
以下 verbs 应用于在控制和数据路径中实现此任务。每个 verb 的详细信息应从其手册页中引用。
ibv_create_wq
,ibv_modify_wq
,ibv_destory_wq
ibv_create_rwq_ind_table
,ibv_destroy_rwq_ind_table
ibv_create_qp_ex
与特定的 RX 配置,以创建 “RX hash” QP