用 VPN 降低游戏 Ping 值:改变的是路径,不是信号速度

安东·别洛夫

阅读时间 12 分钟技术

开 VPN 时的游戏 Ping 值

屏幕角落显示的 Ping 值是到游戏服务器的往返时间,单位为毫秒。用 VPN 降低游戏 Ping 值,改变的是路径,而不是信号的速度。开着 VPN 时,Ping 值通常比不开时略高。只有网络运营商让游戏流量走了较差的路径,开 VPN 后 Ping 值才会更低。到游戏服务器的距离决定了最低 Ping 值。花一个晚上测试,就能看出开 VPN 和不开 VPN 时 Ping 值各比最低值高出多少。

距离每增加 1000 公里,最低 Ping 值就增加 10 毫秒

信号在光纤中单程传输,每公里约需 5 微秒。这是 ITU-T G.114 建议书《单向传输时间》给出的规划值。因此,直线距离每 1000 公里,往返时间就增加 10 毫秒。实际 Ping 值总是更高,因为光缆比直线距离长。

高出最低值的部分来自路径、排队和家庭网络。第一跳是 Wi-Fi 或蜂窝网络。之后,数据包要经过几家网络运营商的网络。每经过一条过载的链路,就要加上数据包在其缓冲区中等待的时间。VPN 只有在其路径避开拥塞链路时,才能减少高出最低值的部分。任何路径的 Ping 值都不会低于最低值。

除了平均 Ping 值,还有 2 个指标会影响游戏。抖动是相邻数据包之间延迟的变化量(数据包时延变化,RFC 3393)。丢包率是始终没有到达的数据包所占的比例。比较开和不开 VPN 的结果时,这 3 个指标都要看。

开 VPN 时的 Ping 值取决于绕路距离

开着 VPN 时,路径分为 2 段。第一段从所在地到所选位置,第二段从该位置到游戏服务器。隧道的工作原理见通俗讲解 VPN 是什么的文章。绕路距离等于两段长度之和减去直线距离。加密和隧道开销会增加少许延迟,但两段的长度影响要大得多。

位置远离所在地与游戏服务器之间的直线时,Ping 值就会升高,同一国家内也不例外。举例来说,人在波士顿,游戏服务器在纽约地区。两地相距约 300 公里(190 英里),最低 Ping 值约为 3 毫秒。Ben's VPN 的美国位置在俄勒冈州。经由俄勒冈州时,数据包要先向西传输约 4000 公里(2500 英里),再折返差不多同样的距离。这条路径的最低 Ping 值为 75 至 80 毫秒。这么远的绕路,任何协议或应用设置都无法消除。

位置在所在地与游戏服务器之间的直线上时,绕路距离几乎为零。所在地附近的位置和游戏服务器附近的位置都靠近这条直线。最先要测试的就是这 2 个位置。

如果拥塞的链路拖慢了直连路径,VPN 就可能降低 Ping 值。例如人在马德里,游戏服务器在法兰克福,最低 Ping 值约为 15 毫秒。假设游戏早上显示 30 毫秒,晚上 8 点以后变成 90 至 140 毫秒,并且出现丢包。原因是网络运营商通往游戏服务器所在网络的链路每晚都会拥塞。Ben's VPN 的德国位置在法兰克福,正是游戏服务器所在的城市。流量可能经另一条路径到达这个位置。这样,到游戏服务器的最后一段就只在同一座城市内。如果新路径没有拥塞,晚上的 Ping 值会回到接近早上的水平。

第三种情况是网络运营商限制发往特定地址的流量。开着 VPN 时,这家网络运营商只能看到一条通往服务器的连接。针对游戏服务器地址的规则也就不再生效。在家中、Wi-Fi 上或路由器里产生的延迟,VPN 无法消除。VPN 路径的第一段同样要经过这个家庭网络。

6 种症状及其可能原因

测量之前,先把游戏中看到的情况与下表对照。其中有些问题,VPN 解决不了。

看到的现象可能的原因从哪里入手
Ping 值稳定但偏高,接近最低值游戏服务器离得远在游戏中选择更近的区域;这种 Ping 值靠 VPN 降不下来
白天正常,晚上偏高且不稳定网络运营商网内或网间链路拥塞中午和晚上各做一次路由追踪,再测试游戏服务器附近的位置
角色瞬移,命中不生效丢包改用有线连接;仍有丢包时,做一次路由追踪
家里有人下载大文件时,Ping 值突然升高家用路由器中的队列暂停下载;这种情况 VPN 帮不上忙
Ping 值稳定,但画面卡顿帧率问题,不是网络问题检查显卡和 CPU 的负载
VPN 一连接,Ping 值就升高位置远离直线换一个位置,或让游戏不走 VPN

6 步测试,一个晚上完成

测试约需 1 小时,还需要一款在屏幕上显示 Ping 值的游戏。把每一步的数值记在纸上或文本文件里。第 4 步和第 5 步需要有效订阅,因为没有订阅时应用不会连接。所有测量都要在一天中的同一时段、在同一个网络上完成。

  1. 查出游戏服务器所在城市,算出最低 Ping 值

    有些游戏会在区域列表或网络统计中显示城市。如果游戏只给出区域,就以该区域内最近的大城市为准。游戏服务器可能比这座城市更远,因此实际的最低 Ping 值可能更高。

  2. 断开 VPN 玩游戏

    在平时玩游戏的时段,断开 VPN 打 2 至 3 局。记录平均 Ping 值、最低值和最高值;如果游戏显示丢包,也记录下来。

  3. 给家庭网络加上负载

    打一局练习赛时,在另一台设备上开始下载大文件或更新。如果 Ping 值在下载期间升高、下载结束后恢复正常,原因就是路由器队列。路由器队列塞满造成的这种现象叫作缓冲区膨胀。VPN 解决不了这个问题,因为 VPN 流量也在同一个队列里等待。

  4. 连接所在地附近的位置

    打开“位置”,轻点“最快的”按钮。“改变国家”窗口里的这个按钮会选择附近的位置。打同样多的局,记录同样几项数值。

  5. 连接游戏服务器附近的位置

    在“改变国家”窗口的“查找位置”搜索框中,输入游戏服务器所在的国家或地区,然后选中。“更改位置时自动连接”默认已勾选,所以应用会立即重新连接。

  6. 比较结果,选定方案

    选用平均 Ping 值最低、最高值与最低值相差最小的方案。这个方案应当没有丢包。如果不开 VPN 时 Ping 值更低,就不开 VPN 玩游戏,其他应用照常使用 VPN。下文介绍的分割隧道可以让游戏不走 VPN。

路由追踪与 4 种常见测量错误

路由追踪能显示延迟是在路径的哪一跳增加的。在 Windows 上运行 pathping -n 203.0.113.10,在 macOS 和 Linux 上运行 mtr -n 203.0.113.10。在 macOS 上要先安装 mtr(例如用 Homebrew),再用 sudo 运行。把示例地址换成游戏服务器的地址。路由追踪运行期间,保持 VPN 断开。找出延迟突然升高、此后直到列表末尾都不再回落的那一跳。做 2 次路由追踪,中午一次,晚上一次。如果延迟突增只在晚上出现,而且每次都在同一跳,说明那里有拥塞。VPN 走另一条路径,也许能避开这处拥塞。

  • 后面几跳正常时,中间某一跳的丢包不算故障。这一跳的延迟偏高也一样。路由器会限制回应这类探测的频率(RFC 1812 第 4.3.2.8 节)。路由器优先转发流量,其次才回应这些探测。
  • 游戏服务器可能根本不回应路由追踪的探测。ping、pathping 和 mtr 命令使用 ICMP(RFC 792)。最后一跳没有回应时,参考前面几跳和游戏内显示的 Ping 值。
  • 开着 VPN 时,这些命令显示的不是游戏流量的路径。这些命令发出的数据包会进入隧道,结果取决于应用如何处理 ICMP。这时只看游戏内显示的 Ping 值。
  • 测速测的是以兆比特计的带宽,不是以毫秒计的 Ping 值。下载速度高,不等于 Ping 值低。

Ben's VPN 中影响 Ping 值的设置

订阅包含全部位置

一个晚上可以测试任意多个位置。“之前的”按钮会连回上一个用过的位置。用这个按钮在 2 个测试位置之间切换。要找游戏服务器附近的国家或地区,打开完整的位置列表。

iPhone 上的“改变国家”窗口,有“最快的”和“之前的”按钮、搜索框和带速度标签的国家和地区列表
国家或地区旁边的速度标签表示该位置的速度等级,不表示到游戏服务器的 Ping 值。

多跳会给路径增加第三段,协议由应用选择

在“账户” → “设置” → “多跳”中,应用推荐“自动”模式。在这一模式下,当连接不用多跳就会不稳定时,应用会启用多跳。这时路径会经过位于第三国的中转服务器。对游戏而言,路径上就多了第三段。如果 Ping 值突然升高,而应用显示正通过多跳连接,就换一个位置试试。“查找可用服务器”会尝试恢复到当前位置的连接。作为最后手段,这项功能会启用多跳,所以之后要重新测量 Ping 值。

应用里没有手动切换协议的开关。协议由应用在 VLESS + REALITY、XHTTP、Hysteria2 和 Shadowsocks 之间自动选择。各协议之间的区别见各类 VPN 协议概览和专门介绍 VLESS 的文章。

分割隧道让游戏不走 VPN

如果游戏不开 VPN 时 Ping 值更低,而其他应用需要 VPN,就使用分割隧道。打开“隧道”,把“分割隧道”设为“手动”。添加游戏要连接的地址,每行填一个 IP 地址、CIDR 网段或域名。重新连接后,访问这些地址的流量不走 VPN。在 Android 12 及更早版本上,列表可能只有一部分生效。这时应用会显示已生效的条目数。

在 Android 上,还可以在“绕过 VPN 的应用” → “选择应用”中排除整个游戏。然后查看 Android 系统选项“屏蔽未使用 VPN 的连接”。这个选项开启时,已排除的游戏无法联网。

游戏主机通过路由器连接

Ben's VPN 没有游戏主机版应用,因此 VPN 要在路由器上运行。路由器应用可以安装在 Keenetic(及 Netcraze)、OpenWrt 和 MikroTik 路由器上。在 Keenetic 上,可以只让选定的设备(例如游戏主机)走 VPN。在路由器应用中更换位置,再看游戏里的 Ping 值。未选定的设备照常工作。

游戏 VPN 页面上有更多面向玩家的信息。

问题与解答

只有一款游戏 Ping 值高,VPN 能帮上忙吗?

一个晚上的测试正是为这种情况设计的。如果其他游戏的 Ping 值正常,问题就不在家庭网络。原因在于通往这款游戏所在网络的路径。先测试游戏服务器所在国家或地区的位置,再把结果和不开 VPN 时的数值作比较。

用移动数据时,VPN 有帮助吗?

手机与基站之间的无线链路会给任何路径增加延迟和抖动。VPN 无法减少这段无线链路的延迟。只有移动运营商到游戏服务器的路径较差时,VPN 才有帮助。用同样的一晚测试就能看出是不是这种情况。如果开着 VPN 时 Ping 值更高,就让游戏不走 VPN。

带“10 GBIT”标签的位置更适合玩游戏吗?

不一定。“10 GBIT”速度标签表示位置的速度等级,不是 Ping 值。玩游戏时,数据包的传输时间比速度更重要。靠近游戏服务器、速度标签较低的位置,Ping 值可能更低。远离直线的“10 GBIT”位置,Ping 值可能更高。

同一个区域里,为什么每局的 Ping 值都不同?

游戏的一个区域可能包括多个城市的数据中心。每一局都在其中某个数据中心运行。如果游戏会显示游戏服务器所在城市,就一次只比较一个城市的结果。否则,无法把城市的影响和 VPN 的影响区分开。

我什么都没改,Ping 值却升高了。这是为什么?

常见原因是晚间拥塞、家里有人在下载,或者连接用了多跳。晚上,网络运营商的网络要承载更多流量。家里下载大文件会在路由器里形成队列。用多跳时,中转服务器会给路径增加一段。不开 VPN 和换一个位置各做一次简短测试,就能看出原因。

先试用 3 天,再做决定

试用费用为 $0.50,包含全部 187 个国家和地区,所有应用都能使用。试用结束后按每月 $5 续订。续订可以随时在账户页面取消。

Mac App Store App Store Google Play