我知道 TCP 封装在 TCP 上通常是一个糟糕的想法,但我可以处理偶尔降低的性能和 MTU 问题,并且 TCP 中的滚雪球效应 TCP 提供了在两个层上进行错误控制的地方。
Windows 7 x64 上最新的 OpenVPN 客户端存在严重的延迟问题,ping 隧道内的主机会导致 ping 时间超过 500 毫秒,并且总体性能非常糟糕。吞吐量看起来不错,实际上只是延迟。
但是,在同一台计算机上,Linux 64 位(ubuntu 10.04,相同的 OpenVPN 版本,相同的 OpenVPN 配置,没有不同的设置)上的 OpenVPN 客户端可以完美运行。~30ms,一切都非常好用。
在相同的交换机上,相同的 OpenVPN 客户端版本,相同的配置文件,在 Mac OS X 10.5 (PowerPC) 上也可以完美运行。
我根本无法解释这一点。我尝试了各种方法,例如将虚拟适配器的 MTU 值降低到 1400(因为可怕的商业交换机文档提到这不是在 Windows 上动态设置的,并推荐了这样的操作),我尝试过在全局 TCP 设置中禁用 ECN、烟囱和 CTCP,打开和关闭 lzo 压缩,牺牲一只山羊,没有什么比这更好的了。
有任何想法吗?起初我认为 Windows 上的 OpenVPN 中缺少 PMTU 支持是造成此问题的原因,但我尝试使用 Windows XP,它也可以完美运行。我从用户那里得到报告,它在 Windows 7 32 位上也能完美运行。此外,文档似乎还说 MTU 设置对于 TCP 连接毫无价值,并且适用于 UDP。
tl; dr:TCP 上的 OpenVPN 速度很慢,但仅在 Windows 7 x64 中,其他一切正常。是什么赋予了? …