如何将属于TCP连接的数据包定向到DPDK中的特定lcore?

时间:2016-07-02 05:35:54

标签: tcp rss dpdk

我们希望特定的lcore接收属于TCP连接两侧的数据包。即从客户端到服务器(CtoS)的数据包以及从服务器到客户端(StoC)的数据包都被定向到单个lcore。似乎RSS保证属于流的数据包(单向数据流)被定向到相同的lcore。要将方向的两侧指向同一个lcore,我们需要一个对称的RSS。

  • 我们如何配置NIC(例如Intel 82599)将属于连接的数据包定向到特定的lcore?
  • 当CtoS流量和StoC流量在同一个NIC上的不同端口上时,有没有办法将属于连接的数据包定向到特定的lcore?
  • 不同网卡上的不同端口如何?

1 个答案:

答案 0 :(得分:2)

DPDK尚未直接支持对称散列(截至16.07)。但是,邮件列表here中讨论了一些变通方法。您可能还会发现this有帮助。

另一个选择是自己进行负载平衡。例如,您有一个lcore可以拉取NIC队列,解析数据包,提取源/目标ips和端口并计算对称值(一种简单的方法是(src_port + dst_port + src_ip + dst_ip) % NUM_OF_SOFTWARE_RINGS

对于每个lcore worker,您需要有一个rte_ring来连接负载均衡lcore。请注意,这种方法的效果不如直接RSS。