可以使用多个 CPU 内核的 IPSec 软件

use*_*238 7 linux performance scalability ipsec

谁能推荐一个好的 IPSec 软件,它可以使用多个 CPU 内核Linux 双 CPU 四核 E5620 Xeon设置(总 16HT 内核)上实现~2Gbps 的性能?

我试过 OpenSwan 和 StrongSwan。OpenSwan KLIPS 堆栈仅在单个 CPU 内核上运行。KLIPS+OCF 加密卸载似乎也很糟糕,因为它以 70% 的速度消耗了所有 16 个 CPU 内核,而仅提供了约 600Mbps 的传输速度。作为副产品,它还对 TCP 数据包进行重新排序。

到目前为止,使用不同协议的OpenVPN,我们能够在相同的硬件上实现 ~2Gbps 的负载平衡,没有任何问题。16 个内核中只有 4 个被 100% 使用。现在是时候用 Ipsec 做同样的事情了。最好应该是 OpenSource IPsec 解决方案。

更新:

我的最新发现表明 IPsec NETKEY 堆栈可能能够毫无问题地处理两场流量(但仅限于多队列 NIC)。我无法肯定地验证这一点,因为似乎 NAPI 在高负载下将 NIC 驱动程序切换到轮询模式,那时所有性能从 1.7 Gbps 下降到 500 Mbps。此外,ubuntu 10.04 似乎没有考虑某些内核线程的时间,因此我看不到工作负载如何分布在所有 CPU 内核上。