字节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.

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.129.0. UTC+08:00, 2024-06-29 19:07
浙ICP备14020137号-1 $Map of visitor$