我们通过 BGAN 卫星链路运行 OpenVPN VPN,ping 时间约为 3 秒。我们在屯配置,我们在 Linux(CentOS)上运行。主要通过链接发送的是电子邮件,但只要邮件包含大型附件,VPN 似乎就会停滞。
这“我可以 ping 通隧道,但任何实际工作都会导致它锁定。这是 MTU 问题吗?”OpenVPN FAQ 中的问题似乎准确地描述了我的问题,但使用mssfix
似乎fragment
仍然没有对改善情况起到太大作用。
我的主要测试是通过 VPN 复制一个 2MB 的文件SCP它将复制大约 192kbytes,然后报告- 停滞 -状态。如果我等待几秒钟,它将再次开始复制,然后在复制几千字节后再次停止。
无论我是否在 OpenVPN 配置中设置了fragment
或选项,都会发生这种停顿(尽管设置似乎确实减少了停顿,但并没有消除它)。OpenVPN报告的 MTU 大小为 1542。mssfix
fragment 1000
mtu-test
我已在互联网上搜索有关如何以及何时使用mssfix
和的更多建议fragment
,但我只找到与常见问题解答相同的页面,而没有提供有关如何以及何时使用哪些参数的详细信息。
我的问题是:
- 什么时候使用
mssfix
andfragment
? - 我是否应该结合使用
mssfix
和?fragment
- 如果
mssfix
和fragment
是解,那么tun-mtu
、link-mtu
和mtu-disc
参数是什么?
此外,我一直在使用该工具防火墙测量带宽。如果没有 VPN,测量结果始终保持在 210Kbits/sec 左右。
使用时防火墙通过 VPN($ iperf -c remoteserver -t60 -i5
),它会以 10Kbits/sec 开始,然后稳步上升,直到报告 1.2Mbits/sec,然后它似乎会停滞,并在多次迭代中报告 0kbits/sec(我认为 1.2Mbits/sec 可能是由于一些 OpenVPN 缓冲等原因)
是防火墙测量带宽的最佳方法是什么?
任何对此情况的帮助都将不胜感激。
答案1
1542 是 MTU?从未听说过 WAN 链路有这个。通常,MTU 是最大有效负载,即 IP 数据包大小减去 IP(20 字节)和 ICMP(8 字节)的标头。这意味着传统以太网 LAN 的 MTU=1500。此外,大多数 VPN 都会为其数据包封装引入开销。典型的 VPN MTU 为 1400。
在现代网络中,很难确定 MTU 在任何时候应该是多少,因为入口和出口路径可能不同,并且它们也可能由于自动路径重新路由而发生变化。对于这样的网络,将 VPN 链路两侧的主机上的 MTU 设置为较低值(例如 576)可能更有效。
MSS(最大段大小)等于 MTU 减去 IP+TCP 报头(40 字节)。这通常由网络堆栈协商,并且通常不会出现与 MTU 相同的协商问题,除非 MTU 错误。(MTU 协商通常会因 ICMP 阻塞或黑洞路由器而受到影响)。
我要做的第一件事是在您的发送端进行网络数据包捕获,并按帧大小对显示进行排序(您可能需要在 Wireshark 中添加此列)。您应该验证您没有发送任何超大的帧,它们的大小与您预期的一样。如果启用了诸如 Large Send Offload 或 Jumbo Frames 之类的选项,现代网卡发送超大帧并不罕见。当启用这些选项时,我见过 30,000 字节以上的帧。
答案2
出于好奇,您是否尝试过降低网络接口的 MTU?也许卫星链路严重破坏了碎片。作为反直觉的提示,您可能想尝试通过 TCP 进行 openvpn 更改。我知道这应该会降低性能,但如果您无法控制碎片,它可能会帮助您。
答案3
答案4
我认为你可能问错了方向。每当我遇到错误的 MTU 问题时,流量在 192KB 之前就停止了。我认为这与“飞行中数据包”窗口(TCP 窗口或卫星上行链路本身的一些缓冲区)更相关。
一定要进行一些长数据包捕获(VPN 内部和外部),看看是否能获取ACK
所有