一辆车从地面驶入隧道,网络从 5G 掉到 4G,再掉到无信号,出隧道又切回 5G。整个过程 40 秒。
在车端日志里,这 40 秒是这样的:TCP 连接在信号衰减时卡在重传与内核超时退避里;等系统终于宣布连接死亡,车端 SDK 才开始重连——TCP 三次握手加 TLS 握手,在刚恢复的弱信号下又是若干次往返。加起来,这辆车有 8 秒 左右处于「物理上有网、业务上失联」的状态。
更麻烦的在服务端:早高峰时段,几千辆车先后穿过同一段隧道,然后几乎同时向 Broker 发起重连。每次重连都要完整握手、鉴权、恢复订阅关系、清理旧连接状态。
腾讯云消息队列 MQTT 版正式商业化支持 MQTT over QUIC。终端侧的失联窗口和服务端侧的重连风暴,都可以被显著压缩。
QUIC 是什么
QUIC(RFC 9000)是由 Google 发起、经 IETF 标准化的传输层协议,运行在 UDP 之上,同时也是 HTTP/3 的底层传输协议。它把 TCP 在内核中做的事——丢包恢复、拥塞控制、流量控制——搬到了用户态,并将 TLS 1.3 直接融入握手流程:QUIC 连接默认全加密,不存在明文通道。今天,全球主流浏览器、CDN 与大型网站已大规模部署 QUIC,它是过去十年间公网验证最充分的新传输协议。
不是 TCP 不行,是 TCP 的前提不成立了
TCP 诞生在有线网络时代,它的核心假设是—— 丢包意味着网络拥塞 。所以 TCP 检测到丢包时的正确反应是降速、退避、等待。这个假设在数据中心里成立了三十年。
但在移动网络里,丢包的主因不是拥塞,而是无线信道的物理特性:信号衰减、多径干扰、基站切换。这时候降速退避是完全错误的动作——网络其实还有带宽,只是刚好丢了几个包。
这个错配,在 MQTT 场景下具体表现为三个结构性问题。
一、重连代价高:每次断连都要从头来
TCP 连接的身份是四元组——源 IP、源端口、目的 IP、目的端口。车从 5G 切到 Wi-Fi,IP 变了, 这条连接在协议层面已经死了 ,无论上层业务是否愿意。必须重新建连、重新握手、重新 CONNECT、重新恢复订阅关系。
在 TCP + TLS 下,一次重连至少需要 2 到 3 个往返才能完成握手,叠上弱信号下的高 RTT,就是用户感知到的那几秒失联。
二、队头阻塞:一个包丢了,后面全等着
TCP 提供的是 单一有序字节流 。如果第 100 个包丢了,即使第 101 到 150 个包已经完整躺在接收端缓冲区里,应用层也拿不到——必须等第 100 个包重传成功。
MQTT 是多主题并发的协议。一辆车可能同时在上报高频车身状态、低频故障码、以及大块日志。在 TCP 眼里这是同一条字节流, 任何一处丢包,全部业务一起等 。
业务侧的常见解法是开多条 TCP 连接按优先级分流。代价是连接数翻几倍,Broker 侧连接管理成本和车端电量消耗同步上升。
三、故障发现慢:内核说了不算,但只能听内核的
TCP 连接状态由操作系统内核维护,应用层无法干预它的超时判断。弱网下内核可能坚持重传十几秒才放弃,这段时间应用层完全不知道自己已经事实断连。
MQTT 的 Keep Alive 可以缓解,但心跳周期通常设在 30 到 600 秒——设短了流量和功耗上升,设长了发现不及时。
QUIC 的核心特性
一、连接与 IP 解绑:连接迁移
QUIC 连接的身份不是五元组,而是通过一个独立的 Connection ID 维护会话。IP 从 5G 地址变成 Wi-Fi 地址、或者被 NAT 悄悄换掉,Connection ID 不变,连接不需要重建——加密上下文、拥塞控制状态、MQTT 会话全部保留,应用层甚至可以完全无感知,在 MQTT 场景下基于连接迁移恢复会话,避免业务层有状态协议会话如 MQTT Session 会话重建。这是本次升级中最关键的一条能力。
二、握手更快:首次 1-RTT,重连 0-RTT
TCP 加 TLS 建连需要 2 到 3 个往返(TCP 握手 1 次,TLS 握手 1 到 2 次);QUIC 把传输握手与 TLS 1.3 握手合并,首次建连只需 1-RTT 。如果客户端持有服务端此前下发的会话票据,重连可以做到 0-RTT ,节省握手开销。
链路 RTT 越大,少一次往返的收益越明显:设备在同城内网接入时收益有限,跨公网、跨地域、移动网络接入,收益才真正显现。
三、多路复用,缓解传输层队头阻塞
QUIC 的丢包恢复和流量控制在 Stream 粒度独立进行,一个 Stream 的错误不会阻塞同一连接上的其他 Stream。当前主流实现是将一条 MQTT 连接映射到 一条双向 Stream 上,QUIC 极大地消除了因物理丢包导致的传输层单点阻塞,而真正的"多 Stream 业务级无阻塞"(将控制流、高低频业务数据流隔离到不同 Stream)彻底消除队头阻塞将是我们接下来的演进重点。
四、默认全加密,拥塞控制可按场景调整
TLS 1.3 内置于握手流程,提供端到端加密,无需额外设置与开销。同时,拥塞控制运行在用户态,可以按业务场景调整,不必等待设备操作系统内核升级,也不受设备 TCP 栈版本的制约。更优秀的丢包处理算法和拥塞算法,让 QUIC 在弱网环境下比 TCP 有更稳定的表现。
我们这次商业化提供了什么
如何接入
第一步:零门槛,开箱即用
MQTT over QUIC 能力现已为您 默认全面开放 !只需登录 TDMQ MQTT 版控制台:https://console.cloud.tencent.com/mqtt 开通服务,即可一键解锁新一代物联网传输体验。
第二步:主流 SDK 生态,无缝平滑升级
为了让您的底层架构平滑过渡,我们已适配主流开发语言。根据您的业务架构,将客户端替换为以下 SDK 即可完成 QUIC 改造:
开通路径 :MQTT over QUIC 现已默认开放,如需体验可前往,开通服务后开箱即用。
客户端 SDK :当前提供 C、C++、Java 及 Android 的 MQTT over QUIC SDK,可根据业务场景选择使用。
推荐使用 MQTT over QUIC 的场景
车联网
汽车在行驶中面临高频切网(如进出地库的 5G/Wi-Fi 切换)、上下行并发等复杂工况。QUIC 的重连更快、弱网更稳,连接迁移能确保切换不断连,同时其高效的重连机制能大幅削平海量车辆同时掉线带来的"重连风暴",直接降低车企服务端扩容成本。
低空经济与移动机器人(无人机/AGV/穿戴设备等)
这类设备通常在园区跨 AP 漫游或处于边缘弱信号区,信号不稳定是常态。QUIC 优秀的弱网抗丢包算法和无队头阻塞特性,能有效缩短失联窗口,保证控制指令的实时性和业务连续性。
跨公网/跨地域远控物联网设备接入
涉及跨国出海设备接入、偏远地区长链路传输。在长链路下 RTT 天然较大,传统 TCP+TLS 握手需 3-4 个 RTT,而 QUIC 可降至 1-RTT 甚至 0-RTT,极大提升了远程指令下发和数据上报的响应速度。
低功耗泛智能终端
针对周期性休眠但需要保持长业务会话的设备(如智能抄表、智能门锁等),QUIC 的 0-RTT 特性让设备唤醒后的握手开销和等待时间大幅下降,进而减少射频模块工作时间,实现显著的设备端节能。RTT 越大,少一次往返的收益越明显。
如果您正在做的 车联网、移动机器人,或任何一个「设备一直在动」的场景,QUIC 接入值得放进评估清单 — 弱网不是异常状态,是物联网的常态。
欢迎在评论区或加入下方交流群,沟通更多详细使用场景。
往期推荐
车联网实战:TDMQ MQTT + 云函数打造车辆状态智能响应链路
8 月产品月报|MQTT 支持 QUIC 协议,弱网、跨网连接更稳定,消息查询与轨迹、客户端能力全面增强
7 月产品月报 | RocketMQ 5.x 上新 Lite Topic:为多 Agent 协作而生
重磅发布!为 AI 原生应用而生 - TDMQ RocketMQ 轻量主题 Lite Topic!
TDMQ RabbitMQ 托管版全新推出 4.2:原生支持 AMQP 1.0,吞吐性能翻倍!
扫描下方二维码关注本公众号,
了解更多微服务、消息队列的相关信息!
👇 阅读原文,了解 MQTT 支持 QUIC 协议更多信息!