我需要估算一下,手机上维护 VPN 连接本身需要多少传输(传输开销)?这对移动应用程序用户来说将是额外的成本。
用例是运行在移动设备上的 Web 应用程序,它将访问业务数据 - 因此需要安全性。移动工作人员每天将使用应用程序约 8 小时,他们将在地形中修复安装。可能的情况是驾驶过程中信号频繁丢失(山区环境),因此 VPN 每小时可能会重新连接几次。
在这种情况下开销会是多少?我应该每天计算大约 1 MB 吗?或者它不会超过 100 kB?
答案1
这在很大程度上取决于您选择的 VPN 解决方案及其配置方式(例如,如果使用 OpenVPN,您是否将其配置为在空闲时发送测试/保持活动数据包,如果是,频率是多少),因此如果不尝试并在典型条件下测量流量,您不太可能得到准确的答案。您至少应该在问题中添加一些有关您正在考虑使用哪种 VPN 解决方案的信息。
您或许可以设置几个虚拟机,使用基本的流量整形来模拟慢速连接(即您期望用户在移动时看到的吞吐量),使用您选择的 VPN 解决方案并观察它们之间的流量以查看良好条件下的空闲开销,然后通过随机关闭虚拟接口来测试重新连接。
当连接处于空闲状态时,除了保持活动状态或其他会话管理流量(密钥循环、连接断开后重新协商等),您还将看到实际流量之上的开销。同样,这将根据您使用的解决方案和配置以及流量类型而有所不同(大量小数据包可能比批量流量产生更多开销)。
例如,任何通过 UDP/IP 运行的 VPN 都会向每个数据包(包括确认收到的小型 ACK 响应数据包)添加至少 36 个字节(TCP 报头为 20 个,UDP 报头为 16 个),对于较大的数据包,它可能会将其拆分为更小的块,从而使这种开销更加显著。对于低带宽交互式流量(如 SSH 会话),这几乎可以使会话期间传输的数据量翻倍:向服务器发送一个击键将是 42 字节左右的 IP 数据包(IP 报头为 20 个,TCP 报头为 20 个,一个或几个为密钥),VPN 可能会为其添加 40 个字节(36 个字节用于包装它的 UDP 数据包的报头,几个字节用于某种形式的序列号,用于检查传输错误,从而需要重新发送或重新排序数据包),即使不需要重新传输数据包,也将从 42 增加到 82。对于批量传输,标准(ish)1500 字节数据包被分成两部分(因为 VPN 的 MTU 不会大于外部传输),1500 字节变成大约 1580,额外增加约 5.3%,而不是非常小的数据包的高达 95%。