我目前正在两个 VPS 之间配置站点到站点 VPN,它需要传出和传入连接。它将由高带宽应用程序使用,因此我需要通过连接获得的最大速度。
使用 iperf3,我可以通过连接可靠地获得大约 600Mbit/s 的速度,ping 时间约为 30ms。
通过 OpenSSH SCP,我获得大约 260Mbit/s,考虑到额外的加密,我对此感到满意。
我尝试过各种 VPN 配置,主要是 OpenVPN。我尝试过 sndbuf/rcvbuf 更改、不加密、不压缩,但使用 UDP 时通常只能获得 20Mbit,使用 TLS 时在端口 443 上只能获得 40Mbit。
我还设置了 IPSec/L2TP、SoftEther(虽然我只得到了 500Kbit/s 的速度)和 OpenSSH 内置 tun 适配器。这些都无法让我的 iperf 速度超过 40Mbit/s。
我一直在密切关注每个节点的 HDD 和 CPU,它们都没有饱和。一台服务器的性能明显较差,但在测试期间 CPU 使用率仅达到约 30%。
我有点不知所措。我需要能够达到 200Mbit/s 以上速度的东西(我确信这是可能的),并且只需要从一个虚拟接口路由到另一个虚拟接口。从理论上讲,这就是 SoftEther 的用途。我是否应该继续尝试修复 SoftEther 以获得任何实际速度?
有没有关于测试/调试/配置更多方面的建议,以尝试启动并运行可靠的隧道接口?是否有其他软件可以帮助路由传入连接,以便我可以使用普通的代理式隧道?谢谢!
答案1
鉴于评论中发布的链接,我决定再看一下这篇 openvpn 文章: https://community.openvpn.net/openvpn/wiki/Gigabit_Networks_Linux
使用本文中的几个设置,我能够实现平均约 150Mbit/s 的速度。以下是我配置 OpenVPN 以实现此目标的步骤。
以下是我按顺序尝试的步骤:
- 默认设置(带 AES-128):14.7Mbit/s
- 启用 mssfix 0,tun-mtu 6000,fragment 0: 16.3Mbit/s
- 设置“密码无”:17.7Mbit/s
- 返回 AES-128,tun-mtu 9000:22.0Mbit/s
- tun-mtu 18000: 27.2Mbit/s
- tun-mtu 36000: 37.2Mbit/s
- tun-mtu 60000: 44.9Mbit/s
- 设置“密码 BF-CBC”(差别不大):44.0Mbit/s
- 服务器和客户端上的 sndbuf 393216、rcvbuf 393216:67.1Mbit/s
- 增加了 Linux UDP Recv 缓冲区的大小:102兆位/秒
- iperf3 [...] -P 10 启用 10 个并行连接:总计:135兆位/秒-170兆位/秒
以下是最终的 iperf3 输出:
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=37.2 ms
$ iperf3 -c 10.8.0.1 -p 5201
Connecting to host 10.8.0.1, port 5201
[ 4] local 10.8.0.2 port 59230 connected to 10.8.0.1 port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 10.3 MBytes 86.5 Mbits/sec 2 632 KBytes
[ 4] 1.00-2.00 sec 12.0 MBytes 101 Mbits/sec 7 569 KBytes
[ 4] 2.00-3.00 sec 11.4 MBytes 95.8 Mbits/sec 7 443 KBytes
[ 4] 3.00-4.00 sec 10.9 MBytes 91.2 Mbits/sec 5 443 KBytes
[ 4] 4.00-5.00 sec 11.7 MBytes 98.4 Mbits/sec 2 759 KBytes
[ 4] 5.00-6.00 sec 13.0 MBytes 109 Mbits/sec 6 822 KBytes
[ 4] 6.00-7.00 sec 13.5 MBytes 113 Mbits/sec 5 696 KBytes
[ 4] 7.00-8.00 sec 13.9 MBytes 117 Mbits/sec 6 696 KBytes
[ 4] 8.00-9.00 sec 11.8 MBytes 98.9 Mbits/sec 5 696 KBytes
[ 4] 9.00-10.00 sec 12.5 MBytes 105 Mbits/sec 4 696 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 121 MBytes 102 Mbits/sec 49 sender
[ 4] 0.00-10.00 sec 120 MBytes 101 Mbits/sec receiver
与非VPN直连相比:
$ iperf3 -c [...] -p 5201
Connecting to host [...], port 5201
[ 4] local [...] port 52172 connected to [...] port 5201
[ ID] Interval Transfer Bandwidth Retr Cwnd
[ 4] 0.00-1.00 sec 51.9 MBytes 435 Mbits/sec 0 3.03 MBytes
[ 4] 1.00-2.00 sec 73.3 MBytes 615 Mbits/sec 0 3.03 MBytes
[ 4] 2.00-3.00 sec 73.3 MBytes 615 Mbits/sec 0 3.03 MBytes
[ 4] 3.00-4.00 sec 72.7 MBytes 610 Mbits/sec 0 3.03 MBytes
[ 4] 4.00-5.00 sec 72.1 MBytes 605 Mbits/sec 0 3.03 MBytes
[ 4] 5.00-6.00 sec 73.7 MBytes 619 Mbits/sec 0 3.03 MBytes
[ 4] 6.00-7.00 sec 75.0 MBytes 629 Mbits/sec 0 3.03 MBytes
[ 4] 7.00-8.00 sec 72.5 MBytes 608 Mbits/sec 0 3.03 MBytes
[ 4] 8.00-9.00 sec 74.9 MBytes 628 Mbits/sec 0 3.03 MBytes
[ 4] 9.00-10.00 sec 72.6 MBytes 609 Mbits/sec 0 3.03 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval Transfer Bandwidth Retr
[ 4] 0.00-10.00 sec 712 MBytes 597 Mbits/sec 0 sender
[ 4] 0.00-10.00 sec 710 MBytes 596 Mbits/sec receiver
我学到的是
- tun-mtu 的增加使我的网络受益匪浅。
- UDP 拥塞是一个巨大的问题。增加 Linux UDP recvbuf 显著提高了 UDP 性能。iperf 中重新传输的数据包显示拥塞仍然是一个问题。欢迎提出任何改进建议。
- 并行 iperf3 连接有助于进一步提高速度。
- 只要 CPU 核心保持在 100% 以下,密码就不会真正影响性能。
- 在开放的互联网上配置一个能达到千兆速度的 VPN 是很困难的。
- 这仍然只是普通网络性能的六分之一。