为什么在使用蜂窝网络和使用以太网时 VPN 吞吐量降低不同?

网络工程 虚拟专用网 联网 移动的
2022-02-11 20:04:10

我使用 openvpn 作为协议构建了一个 VPN 服务器,并测量了服务器和客户端之间的吞吐量。

蜂窝网络的吞吐量显着降低。与没有 VPN 连接的情况相比,吞吐量下降了 60% 以上。

By using WiFi without VPN, average throughput: 119Mbps
By using WiFi with VPN, average throughput: 108Mbps
By using 5G without VPN, average throughput: 100Mbps
By using 5G with VPN, average throughput: 35Mbps

我知道由于 VPN 的加密过程,吞吐量会降低。但是,当使用蜂窝网络连接 VPN 服务器时,与以太网相比,吞吐量大幅下降有什么原因吗?

连接是 TCP,我使用 iperf3 来测量吞吐量。

谢谢你的回答。祝你今天过得愉快!

1个回答

您可能会遇到一些隐藏或分层的数据包大小问题,这在 5G+VPN 的情况下可能最为突出。

如果属实,观察到的性能影响可能来自路径沿线某处发生的碎片,并且系统资源浪费在碎片和重组的工作上。

确保在所有 4 种情况下为上行和下行两个方向的相关参与者(终端系统和中间网络设备)确定端到端 PathMTU 。路径 MTU 是一个单向的东西,每个方向可能不同。

如果这是一个站点到站点的 VPN,可能值得首先单独检查/测量/验证外部连接的 PathMTU(即通过“公共”网络从 VPN 端点到 VPN 端点)。

然后,请务必了解您选择的各种 VPN 会产生多少数据包开销。每个数据包最多 100 个字节并不少见,具体取决于加密标准和隧道/封装模式。

一旦知道了外部 PathMTU,就可以从中派生给定的 PathMTU 用于“内部”连接。

然后,对于基于 TCP 的应用程序,继续检查/所有涉及的网络设备是否正确地进行TCP MSS 钳制(如果使用 VPN,则必须进行预加密),以便终端系统被欺骗生成足够小的 TCP 有效负载块以适应带有 VPN 标头的单个数据包。

对于非 TCP 应用程序,考虑应用程序层配置以发送足够小的数据报,并检查/验证网络设备、终端系统的 IP 堆栈及其安全设置是否正确支持 PathMTUdiscovery(丢弃传入的 IMP“数据包太大”消息杀死 PathMTUdiscovery)。

插件编辑:也值得考虑/审查:在 VPN 场景中避免 TCP-over-TCP。通常,当使用无连接协议(带有 ESP 的 IPSec、udp/4500 上的 IPSec NAT-T、udp/443 上的 DTLS 或 UDP 上完全自定义的东西)运行“外部”连接/隧道时,您将获得更强大的解决方案。

当同时使用 TCP 作为外部传输和内部端到端协议时,您最终会得到两个很大程度上独立的 TCP 流控制和拥塞避免层,这很难做到正确。