我正在寻找一种方法让所有主机安全,保密地相互通信.第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占用空间.参见Intel’s paper on the topic.在与其中一位开发人员交谈时,他解释说即使使用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 – 用于连接数据中心主机的高吞吐量网状VPN全部内容,希望文章能够帮你解决linux – 用于连接数据中心主机的高吞吐量网状VPN所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)