linux – 用于连接数据中心主机的高吞吐量网状VPN

前端之家收集整理的这篇文章主要介绍了linux – 用于连接数据中心主机的高吞吐量网状VPN前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们在公共数据中心租用了许多主机.数据中心不提供私有VLAN;所有主机都接收一个(或多个)公共IPv4 / IPv6地址.主机配备了非常现代的cpu(Haswell四核,3.4GHz)并具有Gbit上行链路.数据中心的不同区域(房间?楼层?建筑物?)与 – 我可以说 – Gbit或500Mbit链接相互连接.我们的主人正在运行debian wheezy.目前我们正在运行10个以上的主机,预计在不久的将来会有增长.

我正在寻找一种方法让所有主机安全,保密地相互通信.第3层很好,第2层确定(但不是必需的).由于我无法访问VLAN,因此它必须是某种VPN.

对我来说重要的是:

>高吞吐量,理想情况下接近线速
>分散式网状体系结构 – 这是为了确保吞吐量不会因中央元素(例如VPN集中器)而减慢
> cpu占用空间不大(给定AESNI和GCM-cipher套件,我希望这不是一个荒谬的要求)
>操作简便;设置不太复杂;网络可以在不失去既定连接的情况下发展

我们目前正在使用tinc.它打[2]和[4],但我只达到了大约600Mbit / s(单工)的960Mbit / s线速,我完全松开了一个核心.此外,tinc 1.1 – 目前正在开发中 – 还没有多线程,所以我坚持单一性能.

传统的IPSec是不可能的,因为它需要一个中心元素,或者需要配置sh * tload的隧道(实现[2]).具有机会加密的IPsec将是一种解决方案,但我不确定它是否已成为稳定的生产代码.

我今天偶然发现了tcpcrypt.除了缺少身份验证,它看起来像我想要的.用户空间实现的速度很慢,但所有其他VPN也是如此.他们谈到了内核实现.我还没有尝试过,我对它的表现感兴趣[1]和[3].

还有哪些其他选择?人们在做什么,谁不在AWS上?

附加信息

我对GCM感兴趣,希望它能减少cpu占用空间.参见@L_502_2@.在与其中一位开发人员交谈时,他解释说即使使用AESNI进行加密,HMAC(例如SHA-1)在Gbit速度下仍然非常昂贵.

最后更新

传输模式下的IPsec工作完美,完全符合我的要求.经过多次评估后,我选择了Openswan而不是ipsec-tools,因为它支持AES-GCM.在Haswell cpu上,我测量了大约910-920Mbit / sec的单工吞吐量,一个kworkerd的cpu负载大约为8-9%.

解决方法

你不想要的是一个VPN.你想要的确实是IPsec,但不是隧道模式.相反,您希望IPsec处于传输模式.

在此配置中,每个主机直接与其对等方通信,并且仅对数据包有效负载进行加密,从而保留IP报头.这样,你就不需要做任何路由体操来让事情顺利进行.

是的,您需要为每个主机提供IPsec连接节(除非您的主机分组在子网中,在这种情况下您可以通过CIDR块执行此操作),但这些可以通过配置管理系统以编程方式轻松生成.

你没有问过配置细节,但是如果你需要一些指针(传输模式上没有那么多可靠的信息),你可以参考我最近写的this blog post.

猜你在找的Linux相关文章