火山引擎边缘云-龙志
QUIC协议简介
QUIC协议是一种基于UDP的传输层协议,旨在提升网络传输效率和用户体验。
火山引擎QUIC - 架构设计
火山引擎QUIC协议栈采用端边云一体化设计,具有以下特点:
- 端边云统一:提升开发/运维效率。
- 高可靠:基于eBPF调度实现nginx无损升级,实时监控异常,提供协议栈可观测能力。
- 高性能:分场景定制协议优化算法,丰富的CPU优化策略解决QUIC痛点,支持MPQUIC/FEC等高级特性。
火山引擎QUIC - 全链路协议加速
网络性能-全链路分析系统
通过TraceId串联端边云日志系统,记录每个请求的QoS信息、协议传输等细节信息,包括:
- QoS信息:卡顿/未起播等指标。
- 下载信息:下载数据大小/耗时等。
- 请求日志:QUIC协议统计信息,如RTT/丢包率等。
- netlog:详细的QUIC协议传输细节,可视化展示cwnd/rtt等指标的实时变化。
网络性能- QUIC FEC
FEC(前向纠错)通过增加冗余数据恢复丢失的数据包,相比ARQ在更短时间内恢复丢包。
- 编码算法:
- XOR:算法简单,性能消耗低,恢复能力弱。
- RS:性能消耗多,恢复能力强。
- TLP-FEC:发送冗余数据,适合动态请求API场景。
- A-FEC:自适应FEC,通过实时统计丢包率决定冗余度。
- 性能收益:
- 适用于长RTT/高丢包网络环境。
- 特定场景收益显著,如TLP-FEC在API弱网场景耗时正向显著。
网络性能-基于QoE反馈优化
利用QUIC双边加速特点,与业务深度结合,在客户端将业务QoE数据(请求优先级/码率/网络类型)反馈给服务端进行针对性优化:
- 码率:根据客户端反馈的码率信息控制服务端速率,降低重传率,优化卡顿率。
- 网络类型:在WiFi场景下对WiFi用户进行针对性优化。
网络性能- MPQUIC
多路径QUIC利用移动设备WiFi和Cell双通道同时传输数据,提升速度,增加弱网对抗能力,进一步发挥QUIC双端用户态协议优势,提升用户体验。
CPU性能– QUIC vs HTTPS
- 典型场景:
- 10KB:动态请求API场景,QUIC性能为HTTPS的1.3倍。
- 512KB:点播/投稿流媒体场景,QUIC性能为HTTPS的3.5倍。
- 对比分析:
- 10KB:body小,nginx本身处理逻辑占大头。
- 512KB:QUIC数据收发消耗远大于nginx消耗。
CPU性能-流媒体场景
流媒体场景下,QUIC性能显著优于HTTPS。
CPU性能-优化方法
- 通用方法:在编译&链接等阶段进行优化,包括PGO Bolt LTO等手段。
- 数据传输场景:通过GSOrecvmmsg/AF_XDP/ZeroCopy降低收发包消耗。
- KeyLess:在握手阶段将加解密操作卸载到远程KeyServer。
- QPACK优化:针对一直变化的header,不加入动态表。