Openvpn-TCP 或 UDP

Openvpn-TCP 或 UDP

场景如下:

A) 泰国桌面 openvpn 客户端 B) 新加坡的 OpenVPN 服务器 C) 伦敦的 HTTP 服务器

从 A 到 B 的 RTT 延迟为 50ms,从 B 到 C 的 RTT 延迟为 220ms。

A 和 B 之间 5mbit 上的数据包丢失(通过 iperf)为 2% B 和 C 之间 5mbit 上的数据包丢失(甚至 20mbit 上)为 0%。

由于我控制 openvpn 服务器和客户端,因此我可以选择通过 UDP 或 TCP 建立从 A 到 B 的 openvpn 隧道连接。

OpenVPN 手册告诉我数据通道是哑的,它没有实现自己的 retran/ack 协议。

因此,如果我从 A 到 C 进行 TCP/HTTP 通信,我的想法是最好将 A 到 B 设置为 OpenVPN TCP 隧道,让较小的 rtt 延迟链路解决数据包丢失问题,而不是使用 openvpn UDP,然后让更长/更高级别的 http a-to-c 解决数据包丢失问题?

仅供参考,我在 freenode 上的 #openvpn IRC 中提问,但提出了诸如“TCP-over-TCP 从来都不是一个好主意”之类的笼统的不合格声明,因此希望得到一些更为明智的答复,我很高兴接受我在某些实质上是错误的。

答案1

查看TCP 崩溃问题部分,特别是它所引用的内容。

总之,除了在仅允许 TCP 的防火墙上打洞外,最好将 VPN 视为点对点“专线”。例如,您的家庭到 ISP 不使用 TCP,请以同样的方式对待您的 OpenVPN 连接。

相关内容