如何解释VPN内部的数据包丢失?

如何解释VPN内部的数据包丢失?

我在 Debian Jessie 上运行 OpenVPN 服务器 (2.3.4),使用 TAP 的 UDP (端口 1194)。互联网连接速度为 100Mbit/s (对称)。

客户端在 MacBookPro 2015 上运行 TunnelBlick(3.7.0 和 OpenVPN 2.3.14),使用家用电缆调制解调器,下载速度为 100Mbit/s,上传速度为 5Mbit/s。

我使用 Smokeping 持续监控服务器和客户端之间 VPN 内部和外部的数据包丢失情况。以下是两个图表:

VPN 之外:0.05% 数据包丢失(吸烟图

VPN 内部:数据包丢失率为 5.26%(吸烟图

Smokeping 在 VPN 服务器上运行,并配置为探测公共 IP(VPN 图之外)和 VPN 的内部 IP(VPN 图之内)。

如何解释这种差异?

更多细节:

  • 客户端 CPU 始终低于 50%,远低于服务器 CPU
  • 服务器带宽使用率一般在10%到30%之间
  • 服务器同时连接着 10-20 个客户端,大部分是 Linux 机器,我只在两个运行 macOS Sierra 的客户端上观察到了这个问题
  • 有时,当客户端上的 TunnelBlick 重新启动时,VPN 内部的数据包丢失与我在 VPN 外部看到的一致(~0%),但有时它在 TunnelBlick 重新启动后仍然存在

您是否会在此设置上测试一些显而易见的东西?

答案1

我怀疑这不是 OpenVPN 服务器或客户端特有的问题,而是 MacOS Sierra 的问题。谷歌搜索“mac os sierra packet loss”会给出一个日期为 2016 年 10 月 13 日的链接,名为macOS Sierra 中的连接断开. 对于使用 OpenVPN 的情况离开不仅数据包丢失,而且有些数据包的往返时间也更长。我不太确定,但我猜当你使用 OpenVPN 时,如果后创建的数据包比先创建的数据包更早到达,OpenVPN 会直接判定先创建的数据包已丢失,而无需进一步等待。这就是为什么 OpenVPN丢失率会更高。或者可能是当 ping 在 OpenVPN 封装内进行时,数据包的大小会更大,并且对不良连接更加敏感。尝试使用

proto tcp-server

在服务器端

proto tcp-client

在客户端查看丢失率OpenVPN 的丢失率变得相当没有打开VPN。

相关内容