龙蜥白皮书精选:面向 HTTP 3.0 时代的高性能网络协议栈 原创
文/高性能网络 SIG
01 背景概述
随着互联网特别是移动互联网的快速发展,对互联网通信协议提出了新的诉求。经过多年的发展,QUIC 协议在 2021 年正式被 IEFT 标准化,成为 HTTP 3 的标准传输层协议。QUIC 是基于 UDP 实现的面向连接可靠有序的传输协议。相比于 TCP 在内核态实现,QUIC 基于 UDP 在用户态实现大大降低了部署成本,并且可将拥塞控制算法/参数调控到连接的粒度,灵活适应不同业务场景的网络需求。此外,QUIC 还具备多路复用 /0-RTT 握手/连接迁移等多种优点。
02 轻量、高性能、标准化的 HTTP 3.0 解决方案:XQUIC + ExpressUDP
XQUIC 是一个轻量、高性能、标准化的跨平台 IETF QUIC 协议库,内部包含了 QUIC-Transport(传输层)、QUIC-TLS(加密层、与 TLS/1.3对接)和HTTP/3.0(应用层)的实现,为应用提供可靠、安全、高效的数据传输功能,在 IETF 开发者社区进行了比较充分的互通性验证,支持 Linux/Android/iOS/Mac/Windows 等平台,在 Android/iOS 双端的编译产物均小于 400KB,适用于需要高性 能但同时又对包大小敏感的移动端 APP 场景,可以方便地部署到移动设备和各种嵌入式设备中。在服务端方面,基于阿里内部广泛 使用的Tengine,开发了 ngx_xquic_module 和 ngx_xudp_module 模块用于适配 Tengine 服务端。
XQUIC 还添加了对多路径传输的能力支持,可以同时利用 cellular 和 wifi 双通道进行数据传输。多路径 QUIC 草案已经被 IETF 工作组正式接收纳入标准,我们与达摩院 XG 实验室共同研发的 XLINK 多路传输技术,相关论文「XLINK:QoE-driven multi-path QUIC transport in large-scale video services」已经发表在网络顶会 SIGCOMM 2021 上。
ExpressUDP 是一个基于 Linux XDP Socket 和 XDP 实现的高性能用户态 UDP 通信库。利用 XDP 和 XDP Socket 封装了一套高性能 UDP 通信接口,为应用提供了一种高性能 UDP 通信编程框架。可以为高 PPS UDP 通信场景带来显著的网络性能提升。ExpressUDP 具有与 软件结合简单,不影响软件本身框架的特点,具备高吞吐,低延时,开发方便,部署简单等优点。利用龙蜥 OS 在业界首次实现了 virtio_net 的发送方向的零拷贝,UDP PPS 相比非零拷贝提升 4 倍,相比普通内核 UDP 提升 7 倍以上,接收方向相比内核 UDP 提升 3 倍以上。
03 应用场景
XQUIC 已经在手淘 Android/iOS 双端正式版本,XQUIC + ExpressUDP 已经在阿里巴巴集团统一接入网关大规模应用。在 RPC 请求场 景降低网络耗时 15%,在短视频场景下降低 20% 卡顿率,在上传场景提升 25% 上传速率(相对于TCP)。在服务器端性能上,经过 ExpressUDP 适配改造,E2E QUIC 性能提升了 30%~50%。
更多龙蜥白皮书精选内容:
【4】龙蜥全面支持 Intel 第四代可扩展处理器 SPR 平台
【11】面向芯片研发和验证的操作系统 SiliconFastOS
相关链接:
高性能网络 SIG 主页:https://openanolis.cn/sig/high-perf-network
更多龙蜥技术特性解析可移步《龙蜥特性百科》:https://anolis.gitee.io/anolis_features/
2022 龙蜥社区全景白皮书(或公众号【OpenAnolis龙蜥】回复关键字“白皮书”获取)https://openanolis.cn/openanoliswhitepaper
—— 完 ——