技术条目 01
双协议栈双通道机制
双协议栈指的是客户端同时维护两条独立协议路径,双通道指这两条路径各自保有独立的数据通道。任何一条出现异常时,流量可以在协议层瞬时切换到另一条。
- 协议栈独立:两条路径的握手、密钥协商与心跳完全独立,互不干扰。
- 数据面切换:切换发生在数据面,不需要重新建连,因此没有握手等待。
- 按业务分配:实时交互类业务常驻主通道,后台传输类可按需使用辅通道。
- 可观测:客户端状态页分别显示两条通道的实时质量。

双协议栈指的是客户端同时维护两条独立协议路径,双通道指这两条路径各自保有独立的数据通道。任何一条出现异常时,流量可以在协议层瞬时切换到另一条。

我们聚合多个可用节点并实时监控健康状态。当某个节点或某条线路故障时,调度系统会把流量分配到其余健康线路上,整个过程对上层业务透明。

冗余不是装好就有的,需要主动验证。四步确认四层兜底是否都能触发。
| 层级 | 自检方式 | 合格表现 |
|---|---|---|
| 双通道 | 查看自检报告 | 两条通道均可用 |
| 故障切换 | 制造短时劣化 | 会话保持,数秒内恢复 |
| 节点调度 | 观察出口变化 | 劣化后自动更换出口 |
| 回退直连 | 关闭加速通道 | 连接可用且不中断 |
不能完全替代。自检验证能力存在,实测验证能力有效,两者结合才完整。
回退直连意味着该流量按本地网络直连,对端看到的是你的出口地址;涉及固定出口的业务应避免依赖回退。
建议在每次版本更新后与网络环境变化后各做一次。
下列示意图对应本页讲解的关键结构,建议结合正文一起看,读图要点已写在图注中。

隧道失效是所有加速方案都会遇到的情况。区别在于失效之后多久恢复、用户是否能感知。我们的工程目标是:切换在毫秒级完成,用户无感。
实现分三层兜底,从快到慢依次触发。第一层最快,处理瞬时抖动;第三层最慢但最彻底,处理区域性故障。
| 层级 | 机制 | 触发条件 | 切换耗时 |
|---|---|---|---|
| 第一层 | 双协议栈双通道切换 | 单通道瞬时劣化 | 毫秒级 |
| 第二层 | 智能节点调度 | 当前节点整体质量下滑 | 百毫秒级 |
| 第三层 | 强化学习链路预测 | 区域性故障或长期劣化 | 秒级 |

双协议栈双通道的核心是冗余。客户端同时维护两条独立协议路径,每条路径各自完成握手、密钥协商与心跳,互不干扰。任何一条出现异常时,流量在数据面瞬时切换到另一条,不需要重新建连。
切换发生在数据面而非控制面,这是能做到毫秒级的关键。重新建连意味着一次完整的握手往返,通常需要数百毫秒到数秒;数据面切换只需要重定向现有的数据流。
| 层级 | 机制 | 触发条件 | 切换耗时 |
|---|---|---|---|
| 第一层 | 双协议栈双通道切换 | 单通道瞬时劣化 | 毫秒级 |
| 第二层 | 智能节点调度 | 节点整体质量下滑 | 百毫秒级 |
| 第三层 | 强化学习链路预测 | 区域性故障 | 秒级 |
强化学习模型用于预测路径劣化。模型输入是链路质量指标(延迟、抖动、丢包、带宽),不含任何用户访问内容。当模型预判某条路径即将劣化时,系统会提前建立备用连接,把切换中断进一步压缩。
以上数据的测量方式统一为:同一台设备、同一时段、同一目标服务,开关对应功能各测三轮并取稳定段均值。我们公开测量方法的原因很简单——没有方法的数字无法验证,也无法复现。

| 限制 | 原因 | 影响 | 缓解方式 |
|---|---|---|---|
| 同源劣化 | 两条路径共享上游 | 多路径同时失效 | 切换出口区域 |
| 切换频繁 | 本地网络波动大 | 体验受影响 | 固定到更稳定出口 |
| 预判偏差 | 训练数据未覆盖该场景 | 切换稍晚 | 持续补充样本 |
模型只使用链路质量指标,不涉及用户访问目标。这是我们与「行为分析型优化」的根本区别。
「毫秒级切换」是一个结果指标,实现它需要在时序上做精确安排。下面是一次典型切换的完整时序。
| 时刻 | 动作 | 耗时 | 说明 |
|---|---|---|---|
| T+0ms | 检测到主通道质量下降 | — | 基于滚动窗口的评分 |
| T+8ms | 评分跌破切换阈值 | 8ms | 阈值带迟滞,避免抖动误判 |
| T+12ms | 切换决策下达 | 4ms | 控制面决策 |
| T+30ms | 数据面重定向 | 18ms | 新数据包改走备用通道 |
| T+180ms | 在途包清空 | 150ms | 等待旧通道在途包回程 |
| T+200ms | 切换完成 | 20ms | 两条通道状态收敛 |
关键在于 T+30ms 到 T+180ms 这一段。重定向是瞬时的,但旧通道上还有在途数据包,如果立即丢弃会造成乱序。我们选择等待它们回程,代价是这段等待时间。

