标签: tcp rss dpdk
我们希望特定的lcore接收属于TCP连接两侧的数据包。即从客户端到服务器(CtoS)的数据包以及从服务器到客户端(StoC)的数据包都被定向到单个lcore。似乎RSS保证属于流的数据包(单向数据流)被定向到相同的lcore。要将方向的两侧指向同一个lcore,我们需要一个对称的RSS。
答案 0 :(得分:2)
DPDK尚未直接支持对称散列(截至16.07)。但是,邮件列表here中讨论了一些变通方法。您可能还会发现this有帮助。
另一个选择是自己进行负载平衡。例如,您有一个lcore可以拉取NIC队列,解析数据包,提取源/目标ips和端口并计算对称值(一种简单的方法是(src_port + dst_port + src_ip + dst_ip) % NUM_OF_SOFTWARE_RINGS
(src_port + dst_port + src_ip + dst_ip) % NUM_OF_SOFTWARE_RINGS
对于每个lcore worker,您需要有一个rte_ring来连接负载均衡lcore。请注意,这种方法的效果不如直接RSS。