OpenVPN 多核 CPU,2Gbps

OpenVPN 多核 CPU,2Gbps

对于具有 AES-256-CBC 加密、LZ4 压缩和将流量转发到互联网的 OpenVPN 服务器,官方要求如下:

根据经验法则,你应该假设在具有 AES-NI 芯片组的现代 CPU 上,每秒每兆比特的数据流量(单向)需要大约 20MHz

这意味着对于 6Gbps(两个方向),服务器的硬件要求总共为:

6Gbps x 2 = 12Gbps

12 x 1000 / 20 = 600GHz(假设 1Gb = 1000Mb)。

OpenVPN 的示例为(250 个活跃用户,每个用户 10Mbps):

2500Mbps 乘以 20MHz 大约等于 50000MHz 或 50GHz。例如,双八核配置的 3.5GHz 处理器可以满足这些要求。

这意味着 OpenVPN 将使用 16 个 3.5GHz 的 CPU 核心来获得总共 50GHz 的频率。

它违反了“互联网论坛规则”,例如“OpenVPN 仅使用单个核心”。

OpenVPN 官方硬件要求中明确指出多个 CPU 核心,解决扩展问题,这该如何解释?

他们称 2.5 Gbps 为“相当要求的设置”,但并未提及必须将负载分割到不同端口上的多个 VPN 实例。

怎么可能?

OpenVPN 硬件要求

答案1

OpenVPN 官方硬件要求中如何解释这种每 1Mbps 严格 20MHz 分割到多个核心的情况?OpenVPN Access 是否有不同的实现?

这不是一个严格的事,而是一个经验法则、一个估计。

单个 OpenVPN 实例无法实现这种吞吐量。您需要运行多个实例,每个实例监听不同的端口,并让防火墙从主入站端口随机将新连接重定向到这些实例。如果您想要单个客户端连接,这可能没什么用,但对于多个客户端来说应该很好用。

您可能想要了解一下 WireGuard,它内置于最新的 Linux 内核中,并且可作为内核模块用于许多内核 >= 3.10 的发行版。WireGuard 的 CPU 效率非常高,可以轻松饱和 1Gbps 的链接(甚至更多)。

答案2

我向 OpenVPN Access Server 支持人员咨询了这个问题:OpenVPN Access Server 的魔力是什么,让它能够利用多个 CPU 核心。

根据答案:

  1. 在这方面,Access Server 和社区版没有区别,引擎是相同的。

  2. OpenVPN Access Server 只需打开多个 OpenVPN 实例,并在它们之间进行负载平衡。社区版采用相同的标准扩展方法。

另外,还有一些相关且未记录的信息涉及 Access Server 扩展过程的自动化程度。这有点离题,但我相信阅读这篇文章的人会对此感兴趣:

  • 负载平衡是通过 iptables 完成的。
  • 用户需要配置使用多少个OpenVPN进程。
  • 每个 OpenVPN 实例都有自己的监听端口、TUN/TAP 接口和虚拟子网。
  • OpenVPN Access Server 维护不同实例之间的路由(每个实例的客户端之间)
  • 在第 2 层中,所有 TAP 接口将在单个接口下桥接,以允许不同实例中的客户端相互了解。

答案3

此链接(OpenVPN 硬件要求)似乎适用于非社区产品。

在这篇旧文档中,我可以参考异步/多线程的 V3。 https://community.openvpn.net/openvpn/wiki/RoadMap

带有标签 v3 的 Linux 新客户端 https://github.com/OpenVPN/openvpn3-linux

答案4

我不是工程师,但对此很感兴趣。为什么 OpenVPN 2.6 在当今的核心 CPU 上的表现不如 Wireguard?大多数企业 VPN 路由器都可以使用 OpenVPN 实现 200Mb/s。如果 Wireguard 可以作为升级选项,那么在同样的硬件上,2Gbps 的性能是否会受到限制?

相关内容