字节QUIC千万QPS应用实践
如果无法正常显示,请先停止浏览器的去广告插件。
1. 火山引擎QUIC应用实践
火山引擎边缘云 - ⻰志
Copyright © 2023 Volcano Engine. All rights reserved.
www.volcengine.com
2. ·
CONTENTS
目录
01 QUIC协议简介
02 火山引擎QUIC-架构设计
03 火山引擎QUIC-性能优化
04 火山引擎QUIC-业务收益
05 火山引擎QUIC-未来展望
Copyright © 2023 北京火山引擎科技有限公司 All rights reserved.
3. QUIC协议简介 - 协议发展历程
2015
提交IETF草案
2012
Google内部开发
2016
IETF QUIC group成立
2021
RFC9000发布
IETF QUIC
HTTP1.1 / HTTP2 HTTP over gQUIC HTTP3
TLS Google QUIC IETF QUIC
TCP UDP
TLS 1.3
Crypto
UDP
IP
火山引擎
QUIC
2018
立项: 启动开发
2019
落地 API业务
2020
落地 文件传输
QPS突破300w
2021
落地 图片业务
QPS突破2000w
2022
抖音春节活动
支持IETF QUIC
2023
落地 视频点播
QPS突破3000w
支持MPQUIC
Copyright © 2022 北京火山引擎科技有限公司 All rights reserved.
4. QUIC协议简介 - 协议优势
连接迁移,无缝网络切换
0-RTT 建立连接
双边加速
用户态协议栈,快速迭代
QUIC
协议优势
安全加密
无队头阻塞的多路复用
Copyright © 2022 北京火山引擎科技有限公司 All rights reserved.
5. 火山引擎QUIC - 架构设计
内部客户
ToB客户
传输优化
steam
协议参数调优
前向纠错FEC
TTNET
session
QoE反馈优化
ByteQUIC
MPQUIC
四层LB
CPU优化
包调度模块
七层LB Nginx框架
WiFi
Cell
通用优化手段
数据收发优化
ByteQUIC
ebpf-QUIC连接调度
udp
socket
udp
socket
• 端边云统一QUIC协议栈,提升开发/运维效率
高可靠
• 无损升级:基于ebpf调度,实现nginx无损升级
• 协议信息上报:实时监控异常,提供协议栈可观测能
力
API场景优化
高性能
基础模块
ngx-quic-module
端边云一体
配置云端控制 • 传输优化:分场景定制协议优化算法
协议信息上报 • CPU优化:丰富的优化策略,解决QUIC痛点
日志信息上报 • 高级特性:MPQUIC/FEC等高级特性,提供极致体验
Copyright © 2022 北京火山引擎科技有限公司 All rights reserved.
6. 火山引擎QUIC - 全链路协议加速
端
边
云
端边云-全链路QUIC协议加速
边缘节点
源站
QUIC协议卸载
用户
终端
火山引擎
回源点
TCP回源
动态请求/QUIC
DCDN
接入点
TCP回源
IDC
视频播放/QUIC
视频上传/QUIC
CDN
接入点
跨境QUIC
回源
非火山引擎
⻓连接/QUIC
云厂商
接入点
回源点
QUIC封装
跨境QUIC
回源
IDC
Copyright © 2022 北京火山引擎科技有限公司 All rights reserved.
7. 网络性能 - 全链路分析系统
通过TraceId串联端边云日志系统,可记录每个请求的QoS信息/协议传输等细节信息。
TraceId
QoS信息
记录业务质量信息,如卡顿/未起播等指标
播放器
数据模块
QUIC
客户端
QUIC
服务端
Nginx
下载信息
请求统计信息,如下载数据 大小/耗时等
请求日志
QoS信息
下载信息
请求日志
netlog
Access
Log
QUIC协议统计信息,如RTT/丢包率等
netlog
分析平台
详细的QUIC协议传输细节,可视化展示cwnd/rtt
等指标的实时变化
Copyright © 2022 北京火山引擎科技有限公司 All rights reserved.
8. 网络性能 – 分场景优化
场景
动态API请求
视频上传
问题
• 部分网络环境存在udp block情况,导
致quic请求失败
• 无线网络RTT抖动较大,过多的虚假
重传导致带宽利用率低,影响上传耗
时;
策略
• 在新建连接时增加TCP/QUIC竞速机
制,确保连接可用,达到互补状态
• 增加虚假重传检测机制,在判定虚假
重传之后适当调整丢包检测阈值(时间
阈值&包阈值)
• 保存上次连接的探测稳定带宽,满足
• 新建连接经过多个RTT才能探测到稳
视频点播
定带宽,影响首帧耗时;
• BBR周期性进入probe_rtt导致卡顿上
升
条件的新建连接可以快速恢复带宽;
• 当app_limited/RTT变化不大时避免进
入probe_rtt,即使进入cwnd根据BDP*
系数进行设置;
Copyright © 2022 北京火山引擎科技有限公司 All rights reserved.
9. 网络性能 - QUIC FEC
FEC:前向纠错,通过增加冗余数据对丢失的数据包进行恢复的信道编码算法,相比自动请求重传
ARQ,可以在更短时间内恢复丢包,无需等待重传。
编码算法
• XOR:算法简单,性能消耗低,恢复能力弱
• RS:性能消耗多,恢复能力强
策略
• TLP-FEC:在请求数据的尾部发送冗余数据,利用空闲带宽
发送冗余数据,适合动态请求API场景。
• A-FEC:自适应FEC,通过实时统计一段时间内的丢包率决
定冗余度,达到带宽成本和恢复能力的平衡。
性能收益
• 适用于 ⻓RTT/高丢包 网络环境;
• 在特定场景收益显著,例如TLP-FEC在API弱网场景耗时正
向显著;
Copyright © 2022 北京火山引擎科技有限公司 All rights reserved.
10. 网络性能 - 基于QoE反馈优化
利用QUIC双边加速特点,与业务深度结合,在客户端将业务QoE数据(请求优先级/码率/网络类型)反馈给服
务端进行针对性优化。
码率
根据客户端反馈的码率信息,控
传输控制模块
播放器
础上优化卡顿率。
点播数据
QoE
信
息
制服务端速率,降低重传率的基
模型匹配模块
数据模块
请求画像(HTTP Header)
QUIC协议栈
网络类型
请求解析模块
传输画像(QoE Frame)
在WiFi场景下,由于信道干扰导
致RTT抖动较大,可对WiFi用户
进行针对性优化。
客户端
服务端
Copyright © 2022 北京火山引擎科技有限公司 All rights reserved.
11. 网络性能 - MPQUIC
多路径QUIC:利用移动设备WiFi和Cell双通道同时传输数据,提升速度,增加弱网对抗能力,进一步发挥
QUIC双端用户态协议优势,提升用户体验。
网络耗时
stream
3000
39.6%
session
2250
MPQUIC Connection
包调度模块
1500
WiFi
Cell
收发包管理 拥塞控制 收发包管理 拥塞控制
ACK_MP RTT测量 ACK_MP RTT测量
丢包检测 保活/探测 丢包检测 保活/探测
750
0
udp socket
udp socket
23.8%
23.4%
平均值
P90
单路QUIC
P99
MPQUIC
Copyright © 2022 北京火山引擎科技有限公司 All rights reserved.
12. CPU性能 – QUIC vs HTTPS
QUIC vs HTTPS CPU消耗百分比
典型场景
500
10KB:动态请求API场景,1.3x HTTPS
400
512KB:点播/投稿流媒体场景,3.5x HTTPS
300
对比分析
200
10KB:body小,nginx本身处理逻辑占大头
100
0
512KB:QUIC数据收发消耗远大于nginx消耗
10KB
512KB
Copyright © 2022 北京火山引擎科技有限公司 All rights reserved.
13. CPU性能 - 流媒体场景
CPU消耗占比
其他
21%
UDP发包
25%
upstream处理
6%
QUIC组包
20%
收包recvmmsg
6%
包处理
12%
ACK处理
10%
UDP发包
upstream处理
QUIC组包
其他
包处理
ACK处理
收包recvmmsg
Copyright © 2022 北京火山引擎科技有限公司 All rights reserved.
14. CPU性能 - 优化方法
01 02 03
通用方法 流媒体
场景 动态请求
场景
通用的性能优化方法,各 数据传输场景CPU主要消耗 场景均适用,主要在编译 在UDP收发包,通过GSO 将加解密操作卸载到远
&链接等阶段进行优化, recvmmsg/AF_XDP/ 程KeyServer。
包括 PGO Bolt LTO等优 ZeroCopy降低收发包消耗
化手段
• KeyLess:在握手阶段
• QPACK优化:针对一
直变化的header,不加
入动态表。
Copyright © 2022 北京火山引擎科技有限公司 All rights reserved.
15. 火山引擎QUIC - 业务收益
110000
12000
34.9
%
9000
平均值
P95
TCP
%
27500
13.3
%
9.6
%
0
0
API
QUIC
12
%
1.63
5%
TCP
上传
⻓链
QUIC
建连耗时
毫秒
500
375
250
0.3
1.58
TCP
QUIC
点播
P90
20
%
1.61
1.6
卡顿率
平均值
P99
%
0.34
0.27
8.6
%
55000
3000
0.37
10.7%
82500
6000
0.4
上传时⻓
毫秒
API请求耗时
毫秒
1.56
24
%
30
%
125
未起播
TCP
QUIC
0
平均值
P50
TCP
P90
QUIC
Copyright © 2022 北京火山引擎科技有限公司 All rights reserved.
16. 火山引擎QUIC – 未来展望
现状 未来
网络性能 性能+成本
标准-跟随 标准-参与
人工调优 智能分析
内部业务 内外结合
Copyright © 2022 北京火山引擎科技有限公司 All rights reserved.
17. 欢迎关注火山引擎边缘云
边缘云微信公众号
微信扫一扫
边缘云⻜书交流群
⻜书扫一扫
Copyright © 2022 北京火山引擎科技有限公司 All rights reserved.
18. Thanks
Copyright © 2023 Volcano Engine. All rights reserved.
www.volcengine.com
Copyright © 2022 北京火山引擎科技有限公司
All rights reserved.