启航加速器为什么把 QUIC 放在主通道:一次握手省下 240 毫秒的账
在 120 毫秒的跨境链路上,TCP+TLS 1.2 建立连接需要 470 毫秒,QUIC 0-RTT 只需 96 毫秒。这 374 毫秒的差距,是启航加速器把 QUIC 设为主通道的直接原因。
加速器的宣传里常见“专线”“高速通道”这类词,但真正决定第一秒体感的,往往是连接建立阶段的往返次数。跨境链路的单次往返就要一百多毫秒,多一个 RTT,用户就多等一次。
握手次数:从三次往返到零次
TCP + TLS 1.2 的组合需要三次往返:TCP 三次握手一次、TLS 协商两次。换到 TLS 1.3 可以压到两次。QUIC 把传输层握手与 TLS 1.3 合并进同一个握手流程,首次连接只需一次往返;如果客户端持有有效的会话票据,可以在第一个包里直接带上加密的应用数据,这就是 0-RTT。
我们在一台上海家宽机器上,对同一个香港出口做了四组对照,链路 RTT 120 毫秒,每组 500 次取中位数。结果如下:TCP+TLS1.2 为 470 毫秒,TCP+TLS1.3 为 358 毫秒,QUIC 1-RTT 为 232 毫秒,QUIC 0-RTT 为 96 毫秒。差距主要落在往返次数上,而不是加密算法的开销。
| 方式 | 往返次数 | 握手耗时 | 相对节省 |
|---|---|---|---|
| TCP + TLS 1.2 | 3 | 470ms | 基准 |
| TCP + TLS 1.3 | 2 | 358ms | 112ms |
| QUIC 1-RTT | 1 | 232ms | 238ms |
| QUIC 0-RTT | 0(复用票据) | 96ms | 374ms |
队头阻塞:一条流卡住,别的不该陪等
TCP 把所有数据放在一条有序字节流里,中间丢一个包,后面的数据即使到了也要等重传补齐,这就是队头阻塞。QUIC 在 UDP 之上实现了独立的流,流与流之间互不阻塞。启航加速器 3.1 版把并发流上限提到 48,就是为了让会议音频、页面请求、文件下载各走各的流。
效果可以量化。模拟 1% 随机丢包的条件下,单条 TCP 连接加载 20 个资源的总耗时是 3.8 秒,QUIC 多路复用是 2.1 秒。丢包率升到 3% 时,差距拉大到 7.4 秒对 2.9 秒——丢包越严重,队头阻塞的代价越高。
| 丢包率 | 单条 TCP 连接 | 6 条并行 TCP | QUIC 多路复用 |
|---|---|---|---|
| 0% | 1.6 | 1.4 | 1.3 |
| 1% | 3.8 | 2.9 | 2.1 |
| 3% | 7.4 | 5.1 | 2.9 |
| 5% | 12.6 | 8.3 | 3.6 |
连接迁移:换个网络不用重建会话
TCP 用四元组(源 IP、源端口、目的 IP、目的端口)标识连接,手机从 WiFi 切到 4G,源 IP 变了,连接就废了,只能重建。QUIC 用连接 ID 标识会话,地址变了只要客户端发一个迁移帧,服务端校验路径后继续用原来的会话。启航加速器在地铁场景做的 200 次切换测试里,3.0 版平均重连 6.4 秒,3.1 版 1.1 秒,差别主要来自这里。
“QUIC 不是银弹,它对 UDP 的依赖在某些企业网络里就是硬伤。”传输协议组在技术评审会上说,“所以我们保留 TCP 备用通道,判断逻辑是连续两轮探测无回包才切,切换本身对用户透明。”
代价:CPU、UDP 限制与实现复杂度
QUIC 在用户态实现,缺少内核旁路卸载,高吞吐时 CPU 占用高于 TCP。实测 1Gbps 单流下,QUIC 的 CPU 占用约 22%,TCP 约 9%。启航加速器在客户端做了分片与批量发送,把开销摊到多个核心,实测降到 14%。另一个问题仍是 UDP 可达性:部分校园网与企业在防火墙层面直接丢弃 UDP 443,这时只能退回 TCP 备用通道,首包延迟从 86 毫秒抬到 140 毫秒。
还有一个容易被忽略的点:0-RTT 的早期数据存在重放风险。我们的处理是把会话分两类,浏览类流量允许 0-RTT,涉及登录态与支付的连接强制 1-RTT,并在服务端加时间窗口去重。这类细节不会出现在界面里,但决定了能不能放心用。
结论
回到开头那 374 毫秒。它不是靠更贵的线路换来的,而是靠少走几次往返。对跨境访问这种 RTT 天然偏高的场景,协议层的优化收益比堆带宽更直接。想自己看效果,客户端日志里会打印握手方式与耗时,装一份就能对照。
用户评论(6)
0-RTT 强制 1-RTT 处理支付这点很关键,很多教程都不提重放风险。
丢包 3% 那组数据差距太大了,队头阻塞确实是 TCP 的老毛病。
CPU 22% 对 9% 这个开销能接受,毕竟家用场景跑不满千兆。
校园网确实封 UDP,一直是 TCP 备用,速度也够用。
看完了,第一次知道 CID 可以迁移会话,涨知识。
希望出一期讲 BBR v3 在不同运营商下的表现。