OpenVPN下的TCP非常慢(附tsg)

Pen*_*100 7 vpn performance openvpn tcp

我对 OpenVPN 有一个非常奇怪的问题。

大多数 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)
Run Code Online (Sandbox Code Playgroud)

两端cpu使用率低。好的,也许某些 ISP 对 UDP 数据包进行了整形或过滤。

iperf -c external.ip -b 500M result: no packet loss
Run Code Online (Sandbox Code Playgroud)

嗯...如果我通过 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%
Run Code Online (Sandbox Code Playgroud)

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

好的测试是这样进行的(没有 VPN,使用外部 IP): 外部连接的TSG

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

这个图表是我从 VPN 得到的: vpn'ed 连接的 TSG

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

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

编辑:使用 TCP 而不是 UDP 运行 VPN 会导致 10mbps 的吞吐量。

小智 1

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

使用片段和 MSS 配置 MTU

优化千兆位网络的性能