Table of Contents
多跳中继在游戏加速、跨数据中心访问、远程接入私有网络等场景下都有应用。本文从拓扑和原理角度整理设计思路,不涉及具体工具配置。
多跳链路的核心思路
多跳转发的基本模型:每一跳只负责转发,末端节点负责最终的连接和加密,中间节点不感知上层协议内容。
客户端 → 入口节点 → 中继节点 A → 中继节点 B → 出口节点 → 目标服务这个设计的好处是各段可以独立替换——换一条线路或一个中继节点,其余部分不受影响。
示例:游戏加速的四跳链路
国内 BGP 入口 ↔ IEPL 专线段 ↔ 东京中继 ↔ 西雅图出口用户连接国内入口,账号信息和出站协议由西雅图出口定义,中间两跳只做端口转发。任何一段出问题,只需替换那一跳,其他不动。
各段的选型依据
| 链路段 | 关注点 |
|---|---|
| 国内入口 → 第一跳 | 延迟、稳定性,避免绕路 |
| 跨国中继段 | 骨干网线路质量(CN2、9929、RETN 等),丢包率 |
| 最后一跳 → 出口 | 与目标服务器的物理距离,互联情况 |
中转方式
- IPv6 直接转发:两端均有 IPv6 且链路干净时,直接端口转发延迟最低
- TCP 隧道封装:跨国段有 UDP QoS 时,将流量封装进 TLS 可以规避限速
- 多层封装:中间节点不在自己控制下时(如租用线路),可以在本地叠加一层封装
国内前置方案
国内入口的质量直接影响整条链路的延迟基准,常见方案:
- 大厂云服务前置:阿里云 / 腾讯云等国内轻量云,走运营商优化骨干(4837 / CN2)到香港,稳定但固定走大厂线路
- IEPL 专线:延迟极低,通常需要搭配云服务做前置出口
- CNIX 专线:云服务前置 → 前海 CNIX 专线,电信 / 联通友好,延迟可控
实测中,商业加速器的北京入口往往比自建方案的 9929 骨干入口低 5ms 左右,这是自建方案在欧美区域难以弥补的劣势。
流量分流原理
分流的本质是:根据规则集,将流量路由到不同的出站路径。规则可以基于:
- 域名 / IP:访问特定网站走特定出口
- 地理位置:目标 IP 属于某个国家 / ASN,走对应出口
- 协议 / 端口:游戏流量(特定端口 UDP)走低延迟专线,HTTP 流量走普通出口
- 进程 / 应用:部分客户端支持按应用名称分流
分流规则可以工作在客户端(用户设备上的代理软件)或服务端(中继节点上),两者可以叠加使用。
客户端分流
客户端分流的出站节点多,规则需要覆盖日常所有流量场景。典型的分组策略:
- 游戏出站:绑定低延迟的专线或高端线路节点,确保稳定性优先
- 常规出站:按延迟或带宽自动选择
- 直连:国内流量、局域网流量不经过中继
规则集通常从远端订阅获取(包含域名列表、IP 段等),按优先级依次匹配,未命中规则的流量走默认出站。
分流的执行顺序很重要:私有 IP 直连 → DNS 劫持 → 域名规则 → IP 规则 → 最终默认出站。顺序错误会导致 DNS 泄露或规则失效。
服务端分流
服务端分流常见于落地节点需要进一步选择出站的场景,规则相对简单:
基于 DNS 的分流:对特定域名指定不同的 DNS 服务器,让解析结果指向对应地区的服务器。优点是不改变流量路径,只影响 DNS 解析。
基于出站节点的分流:开启流量嗅探,识别目标域名后将流量转发到指定的下一跳节点。适合落地节点需要做地区解锁的场景(例如落地在香港,将特定流量转发到新加坡节点解锁)。
透明代理
系统代理只能覆盖支持 HTTP/SOCKS 的应用,游戏客户端、命令行工具等通常不走系统代理。透明代理通过在更底层接管流量来解决这个问题。
TUN 虚拟网卡
在操作系统中创建一张虚拟网卡,将系统路由表的默认路由指向它,从而接管所有 TCP 和 UDP 流量,再由代理程序按规则分发。
两种 DNS 模式:
- FakeIP:对所有域名返回虚假的内网 IP,实际 DNS 查询在代理端完成。延迟低,但可能在某些应用(如 WebRTC)中出现问题
- RealIP:真实解析 DNS,代理程序通过嗅探流量中的域名来做路由判断。兼容性更好,适合游戏等对行为一致性敏感的场景
软路由旁路
另一种思路是在路由器层面做分流:在局域网中增加一台旁路由,内网设备只需修改默认网关,所有流量在旁路由上统一处理,客户端完全无感知。
优点:一次配置覆盖局域网所有设备。 缺点:旁路由会引入额外一跳的延迟,对 FPS 游戏有轻微影响。
链式中继设计要点
分层职责
入口层(接收用户流量)→ 中继层(转发,不解密)→ 出口层(连接目标,定义出站协议)中间节点不解密的好处:降低单节点的计算压力,且出站加密方式可以统一由出口节点控制。
跳数控制
每一跳都会增加:
- 物理延迟:节点到节点的传输时间
- 处理延迟:封包解包、路由查表
- 故障点:任意一跳出问题都会影响整条链路
实践中,3 跳以内体验较好。超过 4 跳后,边际延迟收益通常无法弥补额外的复杂度和故障概率。
UDP 透传
整条链路的每一跳都必须支持 UDP 透传,否则游戏流量会在中间断掉。
- 如果中间某跳不支持原生 UDP,需要用 TCP 封装(UoT)绕过
- 混用原生 UDP 和 TCP 封装时,要注意各段拼接的兼容性
- 链路越长、封装层数越多,队头阻塞的风险越高
核心原则:稳定性 > 延迟 > 封装复杂度。线路本身的质量是游戏体验的决定因素,封装方式的差异通常只有 1ms 量级的影响。