RSS的作用
RSS是网卡提供的分流机制。用来将报表分流到不同的收包队列,以提高收包性能。
RSS及Flow Director都是靠网卡上的资源来达到分类的目的,所以在初始化配置网卡时,我们需要传递相应的配置信息去使能网卡的RSS及Flow Director功能。
RSS(receive side scaling)是由微软提出的一种负载分流方法,通过计算网络数据报文中的网络层&传输层二/三/四元组HASH值,取HASH值的最低有效位(LSB)用于索引间接寻址表RETA(Redirection Table),间接寻址表RETA中的保存索引值用于分配数据报文到不同的CPU接收处理。现阶段RSS基本已有硬件实现,通过这项技术能够将网络流量分载到多个CPU上,降低操作系统单个CPU的占用率。
-
没有开启 rss负载分流情况下:
- 所有报文只会从一个硬件队列来收包。
-
开启 rss进行负载分流情况下:
- rss 会解释报文的 l3 层信息:ip 地址。甚至 l4 层信息:tcp/udp 端口。
- 报文会经过 hash function 计算出一个 uint32_t 的 rss hash。填充到 struct rte_mbuf 的 hash.rss字段中。
- rss hash 的 低7位 会映射到 4位长 的 RSS output index。
- 无法解释的 报文,rss hash 和 RSS output index 设置为 0。

RSS配置的数据结构

其中rss_key 字段:rss_key 数组。如果 为 NULL,留给网卡设置 rss_key。
rss_key_len:rss_key数组的字节数。
rss_hf:需要对报文的分析的元组类型。常用的组合有 l3: ETH_RSS_IP, l3+l4: ETH_RSS_IP | ETH_RSS_UDP | ETH_RSS_TCP。
RSS在port_init的配置
// 端口的配置信息
struct rte_eth_conf port_conf =
{
#

RSS(Receive Side Scaling)是一种由微软提出的负载分流方法,通过计算网络数据报文中的网络层和传输层二/三/四元组HASH值,利用硬件实现将网络流量分载到多个CPU上,以降低操作系统单个CPU的占用率。RSS配置涉及rss_key、rss_key_len和rss_hf等参数,其效果受rss_key对称性影响。

1899

被折叠的 条评论
为什么被折叠?



