提升 VPN 用户体验

本页为网络运营商提供指南,以确保消费者和企业虚拟专用网络 (VPN) 应用在其网络中提供良好的最终用户体验。Android 为开发者提供了 VpnManager 类,用于创建 VPN 解决方案,消费者和企业使用这些解决方案来加密其通信或将其路由到不同的网络。

我们建议网络运营商遵循这些指南

  • 在您的网络上支持 IPv6 封装安全载荷 (ESP) 协议(下一标头 50)数据包,确保此流量具有与用户数据报协议 (UDP) 或传输控制协议 (TCP) 连接相当的性能。应允许 ESP 会话入站到设备,或设置为非常高的超时时间,并以线路速率转发。
  • 将网络地址转换 (NAT) 和状态防火墙超时时间设置为 UDP 连接在端口 4500 上至少 600 秒,以确保 VPN 解决方案可以保持可靠的连接,而不会产生过多的功耗。

支持 IPv6 ESP 协议(下一标头 50)数据包

封装安全载荷 (ESP) 是一种数据包格式,定义为互联网协议安全 (IPSec) 协议集的一部分,用于加密和验证 VPN 解决方案中的数据包。Android 操作系统在其内置 VPN 解决方案中实现了此标准安全协议。

在支持 IPv6 的网络上,ESP 数据包直接在 IPv6 数据包中传输,下一标头字段为 50。如果网络不能正确支持这些类型的数据包,可能会导致 VPN 解决方案缺乏连接,而这些解决方案旨在在不进一步封装数据包的情况下使用此协议。网络可能会由于防火墙配置而丢弃这些数据包。或者,ESP 数据包可能会在网络上遇到慢速路径,导致吞吐量性能与 TCP 或 UDP 连接相比严重下降。

互联网工程任务组 (IETF) 建议允许 IPsec 通过消费者互联网接入服务使用的防火墙。例如,请参阅 RFC 6092 第 3.2.4 节。ESP 数据包可以安全地双向通过防火墙,因为如果设备收到不属于现有安全关联的 ESP 数据包,则设备会丢弃该数据包。因此,设备无需发送保持活动数据包来维持 VPN 连接,从而节省电池寿命。我们建议网络要么始终允许 ESP 数据包到达设备,要么仅在长时间不活动后(例如,30 分钟)才使 ESP 会话超时。

我们建议网络运营商在其网络上支持 ESP 协议数据包(下一标头为 50 的 IPv6 数据包),并以线路速率在硬件中转发这些数据包。这确保了 VPN 解决方案不会遇到连接问题,并提供与 UDP 或 TCP 连接相当的性能。

设置足够的 NAT 和状态防火墙超时时间

为了保持连接可靠性,VPN 解决方案需要保持与 VPN 服务器的长期连接,该服务器提供出站和入站连接(例如,接收传入的推送通知、聊天消息以及音频或视频通话)。大多数 IPsec VPN 应用使用封装在 IPv4 UDP 数据包中的 ESP,目标端口为 4500,如 RFC 3948 中所述。

为了保持此连接,设备需要定期向服务器发送数据包。这些数据包的发送频率必须高于网络运营商设置的 NAT 和防火墙超时时间。频繁的保活机制会增加客户端的功耗,并对电池续航时间产生重大影响。即使设备处于空闲状态,它们也会在网络上产生大量的信令流量。

我们建议运营商将 NAT 和有状态防火墙超时时间设置得足够高,以避免对电池续航时间产生影响。IPsec UDP 封装(端口 4500)的建议超时时间为 600 秒或更长。

在移动网络中,UDP NAT 超时时间通常设置得很低,因为 IPv4 地址的稀缺性导致端口重用率很高。但是,当 VPN 建立后,设备网络不需要支持长期的 TCP 连接,例如用于传递入站通知的连接。因此,与 VPN 未运行时相比,VPN 运行时网络需要支持的长期连接数量相同或更少。