腾讯开源高性能轻量级QUIC协议库-TQUIC
2023-11-09 10:25:58 阿炯

腾讯在2023年11月开源了一个基于 Rust 语言开发的 QUIC 协议库 - TQUIC,旨在打造一个稳定、快速、高性能并具有广泛技术影响力的传输协议库。采用ApacheV2.0协议授权。


由于 QUIC 所具备的广泛性、长期性、创新性特点,我们开源了自研的 TQUIC 协议库,也希望借 TQUIC 开源的机会,吸引更多的同学共建,一起促进传输协议的发展,提升互联网快速和安全的传输体验。


该协议库具有如下的优势:
快传输:TQUIC 是业界支持拥塞控制算法最丰富的协议库,在全部场景下表现符合 RFC 预期,在弱网和部分场景下传输效果领先 2%-30%。
高性能:TQUIC 在大部分测试场景下的单机处理性能优于同类开源产品 5%,部分场景下单机处理性能领先 20%。
高质量: QUIC 协议栈涵盖 10 + 篇核心的 RFC 标准或草案,同时涉及到传输层、安全层、应用层,复杂度远大于 TCP。TQUIC 单元测试覆盖率 95% 以上,与业界四个主流 QUIC 实现的互操性测试用例通过率为 100%, 同时采用基于形式化规范 (SIGCOMM2019 论文成果)的测试方法,严格保障了协议一致性。
易用性:TQUIC 易于使用,支持灵活的配置和丰富的可观察性;TQUIC 提供了 Rust/C/C++ 多语言接口,未来计划进一步提供 Kotlin/Swift 等语言接口。
基于 RUST:TQUIC 基于内存安全语言编写,不受缓冲区溢出漏洞和其他与内存相关缺陷影响。
丰富特性:TQUIC 支持所有 QUIC 和 HTTP/3 规范的重要特性。

架构图:


TQUIC 将跨平台兼容及多并发模型支持作为关键的设计目标。TQUIC 核心采用了网络 IO 及事件循环抽象化设计,并不依赖于套接字,而是通过用户提供的回调来实现。同时TQUIC 核心没有强加特定的事件循环要求,它提供了帮助用户调度事件的函数。其灵活性使得易于在各种系统中的定制和集成。

TQUIC 接口层提供了面向主流平台编程语言的高层级封装接口,支持同步、异步语义接口,兼容不同的并发模型,并简化用户的使用。

后续规划:
对接开源技术生态,扩大 TQUIC 使用场景,进一步提升 TQUIC 使用体验。
发表相关论文,并逐步开源更多 TQUIC 高级特性和算法。
追踪 QUIC 协议的演进和创新,并持续提升 TQUIC 核心能力。


最新版本:


官方主页:https://tquic.net

https://github.com/tencent/tquic