👉导读
近日,腾讯应用框架团队正式开源了高性能、轻量级、跨平台 QUIC 库——TQUIC 。TQUIC 基于 Rust 开发,已在腾讯内部多个业务核心场景得到广泛应用,期待社区用户参与共建,一起打造下一代互联网传输协议。
👉目录
1 特性优势
2 场景价值
3 项目背景
4 项目架构
TQUIC 的目标是打造一个稳定、快速、高性能并具有广泛技术影响力的传输协议库。具体来说,TQUIC 具有快传输、高性能、高质量等特性优势,并支持多种类拥塞控制算法,包括 BBRv3、BBRv1、COPA、CUBIC 等,传输速度和公平性均表现优异,适用于不同网络环境。此外,TQUIC 还支持多路径,在弱网和跨网场景下保障业务体验平滑过渡。值得一提的是,TQUIC 是基于 RUST 语言开发的 QUIC 协议库,保证在提升内存安全性的同时,单机转发性能也非常良好。
TQUIC 地址:https://github.com/Tencent/tquic
目前,TQUIC 已应用于腾讯多个业务的核心场景,包括腾讯视频、腾讯会议、腾讯广告、微信、QQ、游戏等业务。结合腾讯云下一代 CDN——边缘安全加速平台 EdgeOne 的能力,显著提升了各个业务的核心体验指标。
01
特性优势
快传输:TQUIC 是业界支持拥塞控制算法最丰富的协议库之一,在全部场景下表现符合 RFC 预期,在弱网和部分场景下传输效果领先2%-30%。
高性能:在大部分测试场景下的单机处理性能优于同类开源产品,部分场景下单机处理性能领先20%。
高质量 :QUIC 协议栈涵盖10+篇核心的 RFC 标准或草案,同时涉及到传输层、安全层、应用层,复杂度远大于 TCP。TQUIC 单元测试覆盖率95%以上,与业界四个主流 QUIC 实现的互操性测试用例通过率为100%, 同时采用基于形式化规范的测试方法,严格保障了协议一致性。
易用性:易于使用,支持灵活的配置和丰富的可观察性;提供了 Rust/C/C++ 多语言接口,未来计划进一步提供 Kotlin/Swift 等语言接口。
基于 RUST:基于内存安全语言编写,不受缓冲区溢出漏洞和其他与内存相关缺陷影响。
丰富特性 :支持所有 QUIC 和 HTTP/3 规范的重要特性。
更多 TQUIC 详情可查看项目网站 https://tquic.net/zh/docs/intro。
02
场景价值
广告竞价场景:接入 TQUIC 后的程序化广告,实时竞价比例提升30个百分点,最优单比例从50%提升到70%,带来的营收增长超过4%。
直播和点播视频场景:通过 TQUIC 更好的拥塞控制技术,视频首播耗时、卡顿率,均有20%以上的优化,在人均正片播放时长、有效时长等北极星指标,相比原生组均有明显提升。
会议和即时通信场景:TQUIC 助力客户提升弱网抗抖动性,当在会议中发生网络切换,如移动场景或进出电梯等环境,平滑过渡无感知。
电商网站类场景:TQUIC 可以提升图片加载速度20%以上。
游戏类场景:TQUIC 明显提升游戏响应速度和游戏时长。
03
项目背景
QUIC 是一个安全、可靠、快速的通用传输协议。相比 TCP 具有很多结构性优势,包括 0-RTT 握手,连接迁移,多路复用,优良的丢包检测和拥塞控制。QUIC 完全在应用层实现,不依赖操作系统内核和中间网络设备的支持,具有很强的灵活性和扩展性,特别是拥塞控制算法可以实现更加快速灵活的迭代和优化。
随着 QUIC 被选为 HTTP/3 的底层传输协议,QUIC 协议的地位和价值变得更加重要,已经应用在几乎所有的业务场景,流量份额上也一直稳步上升,技术优势和业务收益都很明显,我们有理由相信,QUIC 协议将主导互联网传输领域至少30年以上。
由于 QUIC 所具备的广泛性、长期性、创新性特点,我们开源了自研的 TQUIC 协议库,也希望借 TQUIC 开源的机会,吸引更多开发者们共建,一起促进传输协议的发展,提升互联网快速和安全的传输体验。
04
项目架构
TQUIC 项目架构
TQUIC 将跨平台兼容及多并发模型支持作为关键的设计目标。核心采用了网络 IO 及事件循环抽象化设计,并不依赖于套接字,而是通过用户提供的回调来实现。同时,TQUIC 核心没有强加特定的事件循环要求,它提供了帮助用户调度事件的函数。TQUIC 的灵活性使得易于在各种系统中的定制和集成。
TQUIC 接口层提供了面向主流平台编程语言的高层级封装接口,支持同步、异步语义接口,兼容不同的并发模型,并简化用户的使用。
TQUIC 的开源只是开始。期待得到大家的指正和参与,共同建设网络传输领域的技术生态。欢迎与我们联系。
TQUIC 开源项目网站:https://tquic.net
TQUIC 开源项目地址:https://github.com/tencent/tquic