作者:腾讯 sTGW-TQUIC
腾讯sTGW如何助力核心业务用户登录耗时降低30%,下载场景500ms内请求成功率从HTTPS的60%提升到90%,移动端APP在弱网、跨网场景下同样取得媲美正常网络的用户体验。
腾讯核心业务用户登录耗时降低 30%,下载场景 500ms 内请求成功率从 HTTPS 的 60%提升到 90%,腾讯的移动端 APP 在弱网、跨网场景下取得媲美正常网络的用户体验。这是腾讯网关 sTGW 团队打造的 TQUIC 网络协议栈在实时通信、音视频、在线游戏、在线广告等多个腾讯业务落地取得的成果。TQUIC 基于下一代互联网传输协议 HTTP3/QUIC 深度优化,日均请求量级突破千亿次,在腾讯云 CLB、CDN 开放云客户使用。
本文重点分享了 sTGW 团队在协议栈基础能力、私有协议、明文传输等功能,并且针对弱网场景,分享腾讯如何基于 0-RTT 握手、连接迁移、实时传输等能力帮助业务用户体验提升。
一、 QUIC/HTTP3 协议介绍
QUIC 全称 quick udp internet connection,“快速 UDP 互联网连接”,(和英文 quick 谐音,简称“快”)是由 Google 提出的基于 UDP 进行可靠传输的协议。QUIC 在应用层实现了丢包恢复、拥塞控制、滑窗机制等保证数据传输的可靠性,同时对传输的数据具备前向安全的加密能力。HTTP3 则是 IETF(互联网工程任务组)基于 QUIC 协议基础进行设计的新一代 HTTP 协议。
QUIC/HTTP3 分层模型及与 HTTP2 对比:
二、 QUIC 核心优势是什么?
1. 0-RTT 建立连接
QUIC 基于的 UDP 协议本身无需握手,并且它早于 TLS 1.3 协议,就实现了自己的 0-RTT 加密握手。下图分别代表了 1-RTT 握手(首次建连),成功的 0-RTT 握手,以及失败回退的握手。
2.无队头阻塞的多路复用
相比于 HTTP/2 的多路复用,QUIC 不会受到队头阻塞的影响,各个流更独立,多路复用的效果也更好。
3.连接迁移
跟 TCP 用四元组标识一个唯一连接不同,QUIC 使用一个 64 位的 ConnectionID 来标识连接,基于这个特点,QUIC 的使用连接迁移机制,在四元组发生变化时(比如客户端从 WIFI 切换到蜂窝网络),尝试“保留”先前的连接,从而维持数据传输不中断。
4.全应用态协议栈
QUIC 核心逻辑都在用户态,能灵活的修改连接参数、替换拥塞算法、更改传输行为。而 TCP 核心实现在内核态,改造需要修改内核并且进行系统重启,成本极高。
三、 QUIC 网络协议栈的选型
虽然 QUIC 各个特性看上去很美好,但需要客户端/服务端的网络协议栈都支持 QUIC 协议。截止目前,除 iOS 15 在指定接口 NSURLSession 及限制条件前提下,支持了 HTTP3,其他系统及主流网络库均不支持 QUIC。
如何让业务快速将 QUIC 协议用起来