Cloudflaretokio-quiche让QUIC和HTTP3成Rust后端核心组件

必读文章
邓嘉豪https://www.aistar.news
专注于人工智能和网络安全领域,爱好侦探小说,善于将枯燥的技术内容包装成引人入胜的故事。

Cloudflare近日宣布将tokio-quiche开源,这是一个基于Rust语言开发的异步QUIC和HTTP/3库,结合了广受信赖的quiche实现与Tokio运行时。经过多年在生产环境下的优化,该库已经在包括Apple iCloud Private Relay、基于Oxy的下一代代理服务以及WARP的MASQUE客户端等系统中稳定运行,支持每秒处理数百万次HTTP/3请求,同时实现低延迟和高吞吐性能。

tokio-quiche 的目标用户是那些希望采用 QUIC 和 HTTP/3 协议的 Rust 团队,旨在避免开发者自行编写 UDP 和事件循环集成代码的繁琐工作。其核心组件 quiche 是 Cloudflare 的开源 QUIC 和 HTTP/3 实现,用 Rust 编写,设计为无 I/O 依赖的底层库,专注于 QUIC 传输状态机的实现,包括连接建立、流控和流多路复用。开发者直接使用 quiche 时,需要自行打开 UDP 套接字、处理数据包、管理计时器以及按顺序将数据包输入 quiche 状态机,这一操作灵活性虽然高,但容易出错且耗时。而 tokio-quiche 将这些集成工作包装成一个可复用的库,并且暴露了一个已经管理 UDP 套接字、数据包路由和调用 quiche 状态机的 API,从而简化开发过程。

tokio-quiche在内部采用了基于Tokio的Actor模型设计。这一架构将任务拆分为拥有本地状态的小型任务(Actors),通过在通道中传递消息进行通信,与基于无I/O协议的实现方式高度契合。在库中,关键的Actor包括I/O循环Actor,它负责在quiche状态机与UDP套接字之间来回处理数据包。其中,重要的消息类型是描述接收到的UDP数据包的Incoming结构。异步集成遵循固定模式:I/O循环Actor等待新消息,将其转化为quiche的输入,推进QUIC状态机,并将输出转化为写回套接字的外发数据包。

对于每个UDP套接字,tokio-quiche会生成两个重要任务——InboundPacketRouterIoWorkerInboundPacketRouter负责接收数据包,并基于连接ID将数据包路由到特定连接的通道;而IoWorker则驱动一个quiche连接,结合quiche调用与应用层逻辑,在每个任务中隔离传输状态并实现可组合性。

QUIC 是一种传输协议,能够承载多个应用层协议,例如 HTTP/3、基于 QUIC 的 DNS 服务以及媒体流等。为避免将 tokio-quiche 限制于单一协议,Cloudflare 团队设计了 ApplicationOverQuic 接口,该接口通过抽象 quiche 的底层逻辑,为应用层协议实现提供事件和钩子。例如,HTTP/3 调试与测试客户端 h3i 便使用了一个非 HTTP/3 版本的 ApplicationOverQuic 实现。

在此基础上,tokio-quiche还提供了一个专注于HTTP/3的实现——H3Driver,该模块将quiche的HTTP/3方法与I/O循环Actor桥接,并将原始HTTP/3事件转化为方便应用代码使用的高层事件与异步数据流。H3Driver是通用的实现,它包含ServerH3DriverClientH3Driver两个变体,分别添加了服务器端和客户端行为,为用户开发符合Tokio服务模式的HTTP/3服务器与客户端提供了构建模块。这一设计与Cloudflare的内部基础架构实现模式共享,为用户开发提供了成熟的参考。

在公开发布之前,tokio-quiche已经在Cloudflare内部使用了多年。它被用于支持Apple iCloud Private Relay中的Proxy B、基于Oxy的HTTP/3服务器以及WARP MASQUE客户端,还驱动了h3i的异步版本。在WARP客户端中,基于QUIC的MASQUE隧道已经替代了早期基于WireGuard的隧道,展示出了可以在Cloudflare的边缘服务规模下稳定处理数百万次HTTP/3请求的能力。

Cloudflare将tokio-quiche定位为基础库,而非完整的HTTP/3框架。该库通过暴露低层协议能力和示例客户端与服务器事件循环,为构建更高层的项目(如HTTP服务器、基于QUIC的DNS客户端、MASQUE VPN及其他应用)提供灵活的开发支持。通过开源tokio-quiche,Cloudflare旨在降低Rust团队采用QUIC、HTTP/3和MASQUE的技术门槛,同时推动外部集成与其边缘服务的传输协议栈保持一致。

tokio-quiche将quiche的无I/O QUIC和HTTP/3实现与Tokio异步运行时整合,帮助开发者省去手写UDP套接字和事件循环代码的难题。这一开源库的发布,是Cloudflare践行技术社区共享与协作的又一重要举措。


您的浏览器不支持视频标签。https://www.aistar.news/wp-content/uploads/2025/12/3809_300.mp4

[AI之星网出品] [QUIC协议开源技术] [HTTP/3与异步编程] [Rust语言异步库] [Cloudflare技术分享] [刘智勇频道] [RoboPony(真机智能)] [AiPitch.Top] [PixStock.online 设计智能体图库] [ZhenMeta.com] [机器姬永生人] [机器洞察网] [AI之星网] [风投高科网] [猛虎财经网] [硅基科学网] [人形纪元网] [超维智策] [语料雨林] [高能判官] [片场狂徒] [暴徒外放] [Cognition OS] [Embodied OS] [黄金广告位]


📚 【精品资源】添加关注『AI之星网微信公众号』,即可免费获取完整版《刘智勇频道第五卷》


LEAVE A REPLY

Please enter your comment!
Please enter your name here

- Advertisement -
最新新闻

特斯拉2025年向马斯克xAI出售4.3亿美元Megapack电池

“能源与智能的交汇,是进步的发动机;但若罔顾社区福祉,再远大的愿景也只是一场孤行的豪赌。”
- Advertisement -

更多相关文章