OpenVPN 下的 TCP 非常慢(附加 tsg)

OpenVPN 下的 TCP 非常慢(附加 tsg)

我在使用 OpenVPN 时遇到了一个非常奇怪的问题。

除了这个 VPN 之外,大多数 VPN 都运行良好。这里 TCP 连接的性能很差,但 CPU 负载很低(所以不是 CPU 问题)。

OpenVPN 配置有 UDP、AES-256-CBC 密码、SHA256 身份验证且无压缩。

以下是我使用 iperf 进行的一些测量:

无需 VPN 的网络连接:

iperf -c external.ip result:300 - 500mbps (good)
iperf -c vpn.int.ip result: 20-30mbps (not good)

两端的 CPU 使用率都很低。好的,也许某些 ISP 会调整或过滤 UDP 数据包。

iperf -c external.ip -b 500M result: no packet loss

嗯...如果我强制通过 VPN 进行 UDP 流会怎么样

iperf -c vpn.int.ip -b 100M result: no packet loss
iperf -c vpn.int.ip -b 180M result: packet loss ~0.1%

因此,根据 UDP 的结果,我的 VPN 连接应该可以达到 180mbps,但事实并非如此。我还得到了非常奇怪的 tcptrace 图表。

良好的测试如下(不使用 VPN,使用外部 IP): 外部连接TSG

如您所见,发送的数据包停留在黄线附近,这意味着接收窗口几乎保持满状态。图表的这一部分靠近连接的开始,之后,发送的数据包实际上位于黄线的顶部。

以下是我从 VPN 获得的图表: vpn 连接的 TSG

现在由于某种原因,发送方表现得好像窗口非常小,即使它很大(我将窗口设置为什么并不重要,尝试保持默认设置和 4MB)并且仅以小突发发送数据包。

这是我第一次看到这样的图表?可能是什么原因造成的?ISP 的一些 UDP 过滤、OpenVPN 本身,还是其他原因?

编辑:使用 TCP 而不是 UDP 运行 VPN 可实现 10mbps 的吞吐量。

答案1

我已经解决了。或者说,我知道如何让它更快,但不知道它为什么会慢。似乎 AES 密码会以某种方式干扰此特定服务器上的 TCP,并导致性能低下。如果我将密码更改为 3des(“openssl speed”报告的速度较慢),我得到 150mbps。经过几次尝试,我现在使用这个:

cipher camellia-128-cbc
auth sha1
tun-mtu 9000

现在,单个流的速度为 300mbps,多个流的速度为 450mbps。

答案2

也许您在连接时遇到了 MTU 问题。请查看以下两个链接,它们可能包含一些有用的信息。

使用 Fragment 和 MSS 配置 MTU

优化千兆网络的性能

相关内容