如何将属于 TCP 连接的数据包定向到 DPDK 中的特定 lcore?
How to direct packets belonging to a TCP connection to a specific lcore in DPDK?
我们想要一个特定的lcore 来接收属于TCP 连接双方的数据包。 IE。从客户端到服务器 (CtoS) 的数据包和从服务器到客户端 (StoC) 的数据包都被定向到单个 lcore。似乎 RSS 保证属于流(单向数据流)的数据包被定向到相同的 lcore。为了将一个方向的两侧指向同一个 lcore,我们需要一个对称的 RSS。
- 我们如何配置 NIC(例如 Intel 82599)以将属于连接的数据包定向到特定的 lcore?
- 当 CtoS 流量和 StoC 流量位于同一 NIC 上的不同端口时,是否可以将属于连接的数据包定向到特定 lcore?
- 不同网卡上的不同端口如何?
DPDK(截至 16.07)尚不直接支持对称哈希。但是,邮件列表中讨论了一些解决方法 here. You might also find this 很有帮助。
另一种选择是自己进行负载平衡。例如,您有一个拉取 NIC 队列的 lcore,解析数据包,提取 source/destination ips 和端口并计算对称值(一个简单的方法是 (src_port + dst_port + src_ip + dst_ip) % NUM_OF_SOFTWARE_RINGS
对于每个 lcore worker,您需要一个 rte_ring 来连接负载平衡 lcore。请注意,此方法的性能不如直接 RSS。
我们想要一个特定的lcore 来接收属于TCP 连接双方的数据包。 IE。从客户端到服务器 (CtoS) 的数据包和从服务器到客户端 (StoC) 的数据包都被定向到单个 lcore。似乎 RSS 保证属于流(单向数据流)的数据包被定向到相同的 lcore。为了将一个方向的两侧指向同一个 lcore,我们需要一个对称的 RSS。
- 我们如何配置 NIC(例如 Intel 82599)以将属于连接的数据包定向到特定的 lcore?
- 当 CtoS 流量和 StoC 流量位于同一 NIC 上的不同端口时,是否可以将属于连接的数据包定向到特定 lcore?
- 不同网卡上的不同端口如何?
DPDK(截至 16.07)尚不直接支持对称哈希。但是,邮件列表中讨论了一些解决方法 here. You might also find this 很有帮助。
另一种选择是自己进行负载平衡。例如,您有一个拉取 NIC 队列的 lcore,解析数据包,提取 source/destination ips 和端口并计算对称值(一个简单的方法是 (src_port + dst_port + src_ip + dst_ip) % NUM_OF_SOFTWARE_RINGS
对于每个 lcore worker,您需要一个 rte_ring 来连接负载平衡 lcore。请注意,此方法的性能不如直接 RSS。