如何通过高延迟链接提高 OpenVPN 的可靠性?

iWe*_*ner 11 openvpn

我们正在 BGAN 卫星链路上运行 OpenVPN VPN,其中 ping 时间约为 3 秒。我们在tun配置中使用它,并且我们在 Linux (CentOS) 上运行。它主要是通过链接发送的电子邮件,但是一旦邮件包含大附件,VPN 似乎就会停止。

“我可以通过隧道ping通,但任何实际工作导致其锁定。这是一个MTU的问题?” OpenVPN 常见问题解答中的问题似乎准确地描述了我的问题,但使用mssfixfragment似乎仍然无法改善这种情况。

我的主要测试是使用scp通过 VPN 复制 2MB 文件。它将复制大约 192kbytes,然后报告一个- 停止 -状态。如果我等待几秒钟,它会再次开始复制,然后再经过几 KB 后再次停止。

无论我是否在 OpenVPN 配置中设置了fragmentmssfix选项,都会发生这种停顿(尽管设置fragment 1000似乎确实减少了停顿,但并没有消除它)。OpenVPNmtu-test报告 MTU 大小为 1542。

我在互联网上搜索了更多关于如何以及何时使用mssfixand 的建议fragment,但我只找到与 FAQ 相同的页面,并没有详细说明如何以及何时使用哪些参数。

我的问题是:

  • 我什么时候使用mssfixfragment
  • 我使用mssfixfragment组合使用吗?
  • 如果mssfixfragment是解决方案tun-mtulink-mtumtu-disc参数是什么?

此外,我一直在使用工具iperf来测量带宽。如果没有 VPN,它会持续以 210Kbits/sec 的数量级进行测量。

在VPN ( ) 上使用iperf 时$ iperf -c remoteserver -t60 -i5,它会从 10Kbits/sec 开始,然后稳步上升,直到它报告 1.2Mbits/sec,然后它似乎会停顿,在那里它报告多次迭代的 0kbits/sec(我认为 1.2Mbits/sec 可能是因为某些 OpenVPN 缓冲等)

的iperf测量带宽的最佳方式?

对这种情况的任何帮助将不胜感激。

Gre*_*kew 5

1542 作为 MTU?从未听说过 WAN 链接。通常,MTU 是最大有效载荷,ip 数据包大小减去 IP(20 字节)和 ICMP(8 字节)的标头。这意味着传统以太网 LAN 的 MTU=1500。此外,大多数 VPN 为其数据包封装引入了开销。典型的 VPN MTU 为 1400。

在现代网络中,很难随时断定 MTU 是什么,因为入口和出口路径可能不同,并且它们也可能因自动路径重新路由而发生变化。对于这样的网络,将位于 VPN 链路两侧的主机(例如 576)上的 MTU 设置得较低可能更有效。

MSS(最大段大小)是 MTU 减去 IP+TCP 标头(40 字节)。这通常由网络堆栈协商,并且通常没有与 MTU 相同的协商问题,除非 MTU 错误。(MTU 协商通常会受到阻塞的 ICMP 或黑洞路由器的影响)。

我要做的第一件事是在您的发送端进行网络数据包捕获,并按帧大小对显示进行排序(您可能需要在 Wireshark 中添加此列)。您应该确认您没有发送任何超大的帧,您希望它们是什么。如果启用了大发送卸载或巨型帧等选项,现代网卡发送超大帧的情况并不少见。启用这些选项时,我已经看到 30,000 多个字节的帧。

  • @iwerner:您是否尝试过使用 ping 确定 mtu 大小?如果 ICMP 在某处未禁用,您可以在 Windows 上使用以下命令:ping -f -l 1372 <destination ip>。继续减少数量,直到成功。在 linux 上,ping -s 1372 -M do <destination ip>。仅供参考,OpenVPN 常见问题解答建议使用 mssfix 1200,但这并没有解决根本原因。使用 VPN 解决方案进行分段总是有可能影响性能。如果您有一个大型 VPN 设置,您将无法在中央集中器端使用分段,只能在远程办公室端使用。 (2认同)

lor*_*zog 2

只是出于好奇,您是否尝试过降低网络接口的 MTU?也许卫星链路严重破坏了碎片。与直觉相反,您可能想尝试通过 TCP 的 openvpn 进行更改。我知道它会降低性能,但如果您无法控制沿线的碎片,它可能会对您有所帮助。