关于quic:全面揭秘抖音集团-QUIC-千万-QPS-应用实践

3次阅读

共计 3830 个字符,预计需要花费 10 分钟才能阅读完成。

近日,ArchSummit 寰球架构师峰会深圳站胜利举办。随着挪动互联网的蓬勃发展,人们对网络速度和实时性的需要日益减少。在面对越来越多的图片、视频和音频等大资源时,页面加载迟缓、视频卡顿等问题频发,传统的传输控制协议(TCP)显得力不从心。近年来,QUIC 协定在网络通信畛域掀起热潮,在直播、视频、点播、下载等场景失去广泛应用,QUIC 显著晋升网络加载速度,带来了前所未有的减速成果和用户体验。会上,火山引擎边缘云高级工程师龙志与多位行业资深专家独特探讨,在大带宽、低延时场景下,打造高质量的网络环境,服务用户这一新难题的解决方案。

火山引擎高级工程师龙志认为:QUIC 作为新型传输协定,能够显著晋升网络性能,在无限的资源条件下承载千万 QPS 成为了可能,这也是大多数行业搭档抉择 QUIC 协定的起因。2018 年,火山引擎正式实现 QUIC 我的项目立项并启动开发;19 年外部 API 业务顺利落地;20 年在文件传输场景落地,QPS 冲破 300 万;2021 年在图片业务落地,QPS 冲破 2000 万;22 年反对抖音春节流动并上线了 IETF QUIC;23 年在视频点播场景落地并反对 MPQUIC 协定,QPS 冲破 3000 万。

QUIC 协定的独特劣势

0-RTT 建设连贯:实践上,TCP 联合 TCP-FastOpen 和 TLS1.3 两个个性能够实现 0 -RTT 能力,但这须要全链路配合,尤其是两头路由器的反对。从业界数据看,在 TCP 上能真正实现 0 -RTT 的比例是极低的。QUIC 是基于 UDP 的协定,具备节俭 TCP 握手的工夫耗费劣势,QUIC 除首次握手外,绝大多数场景都能实现 0 -RTT。目前,火山引擎 QUIC 0-RTT 占比达到 95% 以上;

双边用户态协定栈减速:这两个个性使 QUIC 的设想空间变得更大。比方,一些高级网络个性、多路径、FEC 等性能能够基于 QUIC 实现疾速研发迭代,双端可控,上线部署也十分不便;

连贯迁徙:连贯迁徙是指用户能够在 WiFi 和蜂窝网络之间实现无缝切换。在工程落地过程中,因为边缘节点大多数属于繁多运营商,如果 WiFi 和蜂窝网络属于不同运营商,须要在调度上做一些工作能力实现连贯迁徙;

多路复用:H2 也有相似的性能,但受限于 TCP 的牢靠传输个性,不同申请之间还是会相互影响,存在队头阻塞问题。QUIC 基于 UDP,能够屏蔽这个问题,但 GQUIC 应用 HPACK,Header 都在一条 Stream 上发送,还是会存在肯定水平的阻塞,IETF QUIC 应用 QPACK 的编解码流能够解决这个问题。

火山引擎 QUIC 架构设计

端边云一体:火山引擎 QUIC 充分发挥边缘云端边云一体的劣势,在原有客户端、边缘节点、核心机房接入架构的根底上进行微调,将 QUIC 能力嵌入到端边云全链路中,以最小的代价反对 QUIC 协定能力。同时,端边云共用一套 QUIC 网络库,防止同一个性能须要在双端不同网络库反复实现,大幅晋升开发和运维效率;

高牢靠:在 Nginx 降级时,TCP 能够通过敞开 Listen FD 实现无损降级。火山引擎 QUIC 通过基于 Ebpf 实现的连贯调度模块,在降级时,将新老连贯别离调度到新老 Worker,从而实现无损降级。另外,QUIC 作为一个新型协定,相干的监控、可观测等配套工具不够欠缺。为此,火山引擎在双端实现了协定信息上报能力,实现了实时监控;

高性能:在传输优化方面,火山引擎针对业务网络个性进行针对性优化,分场景定制协定优化算法;在 CPU 优化方面,火山引擎通过丰盛的优化策略,晋升 QUIC CPU 性能,解决 QUIC CPU 高耗费这一痛点;在高级个性方面,针对局部网络性能要求极高的场景,火山引擎提供 MPQUIC、FEC 等高级个性进一步晋升 QUIC 性能,充分发挥客户端多网卡个性,减少弱网反抗能力。

火山引擎 QUIC- 网络性能优化

网络性能 - 全链路剖析系统优化

QUIC 作为新型的双端加密传输协定,短少相应的剖析零碎,但在上线落地过程中难免会遇到性能问题,建设一套全链路剖析零碎显得分外重要。以点播场景为例,火山引擎通过全局的 TraceId 贯通每个申请通过的 Nginx、双端 QUIC 网络库、播放器等要害模块,做到每个申请可追踪,通过数据,造成性能监控大盘。另外,火山引擎对 Qvis 进行定制化开发,实现网络传输可观测和常态化开启状态,为业务排查故障以及优化网络性能带来了十分大的便当。

网络性能 - 分场景优化

以动静 API 申请、视频上传、视频点播点播三个典型场景为例,基于全链路剖析零碎,工程师能够对线上的各种场景进行针对性优化。

动静 API 申请场景:在飞书 QUIC 试验过程中,用户处于企业网环境,局部企业网存在 Udp Block 状况,导致 QUIC 申请失败。面对这种场景,火山引擎充分发挥 TCP 的通用性以及 QUIC 的性能劣势,在新建连贯时减少 TCP、QUIC 竞速机制,通过远端云控竞速策略,使 TCP、QUIC 达到互补状态,晋升稳定性和网络性能;

视频上传场景:视频上传场景中,存在无线网络 RTT 抖动较大,丢包检测算法会触发大量的虚伪重传、升高带宽的无效利用率、减少上传耗时等问题。为此,火山引擎减少了虚伪重传检测机制,如果判断呈现了虚伪重传,零碎会依据状况调整丢包检测阈值(包含工夫阈值和包乱序阈值),晋升传输效率;

视频点播场景:视频点播场景中,新建连贯须要通过若干个 RTT 能力探测到稳固的带宽,这会影响视频起播率。通过施展 QUIC 的双端协定劣势,将用户历史连贯探测到的稳固带宽保留在客户端,下次新建连贯将利用历史数据疾速复原带宽,无效晋升视频起播率。

网络性能 -QUIC FEC 优化

QUIC FEC 在发送数据时依照特定的编码算法发送一些冗余数据。呈现丢包时,接收端能够通过编码数据复原失落的数据包,相比 ARQ(主动申请重传),能够在更短时间内复原丢包,节俭丢包检测 / 重传过程的耗时。

TLP-FEC:FEC 须要在原始数据根底上减少一些冗余数据,存在原始数据和冗余数据互相抢占带宽的状况,极其场景下甚至会呈现开启 FEC 导致性能劣化的结果。为了应答这种状况,火山引擎提出了 TLP-FEC,即在申请数据的尾部,判断后续数据发送状态,利用闲暇带宽来发送冗余数据,解决带宽抢占的问题。TLP-FEC 适宜动静申请 API 场景;A-FEC:XOR 和 RS 算法,都须要设定精准的冗余度,设置难度高。火山引擎提出 A -FEC(Adaptive FEC 自适应 FEC)策略,以实时统计数据为根底,精准设置冗余度,实现带宽老本和恢复能力的均衡。

网络性能 -QOE 反馈优化

传统协定优化通常基于网络传输的视角进行,对用户的体验感知较少。火山引擎充分利用 QUIC 双边减速特点,与业务深度联合,将业务客户端 QoE 数据 (申请优先级 / 码率 / 网络类型) 反馈给服务端进行针对性优化,无效升高用户卡顿率和重传率,实现降本增效。

网络性能 -MPQUIC 优化

MPQUIC 想在工程上落地,须要对两头链路,包含四层 LB 以及 QUIC 连贯调度模块进行革新。火山引擎对 QUIC CID 进行了从新定义,用不同字段别离示意 QUIC 连贯、后端 RS、门路等信息。利用挪动设施 Wifi 和 Cell 双通道同时传输数据,晋升速度,减少弱网反抗能力,进一步施展 QUIC 双端用户态协定劣势,晋升用户体验。在成果上,线上 Feed 举荐流场景 AB 比照试验结果显示,MPQUIC 对单门路 QUIC 网络性能晋升显著,网络耗时 P99 升高约 40%,平均值和 P90 升高超过 20%。

火山引擎 QUIC-CPU 性能优化

QUIC CPU 高耗费始终是业界痛点,在大流量业务场景中,问题更加突出。

针对不同场景,火山引擎提供通用场景、流媒体场景、动静申请场景等性能优化计划:

通用场景:编译 & 链接优化,如 PGO/LTO/Bolt 等办法;

流媒体场景:发方向,通过 GSO 将 QUIC 包进行聚合,升高零碎调用次数,大大晋升发包性能,数据显示,线上收益 15% 左右;收方向,通过 ACK 算法优化,在不影响网络性能的根底上,升高 ACK 频率,大大降低收包方向 CPU 耗费;

动静申请 API 场景:将 QUIC 握手阶段的非对称加解密卸载到硬件加速卡或者其余机器的闲暇 CPU 上,反对在近程卸载失败的状况下 fallback 到本地卸载模式,晋升握手性能;IETF QUIC 应用 QPACK 的编解码流解决了 GQUIC 中申请 Header 存在的队头阻塞问题。线上会存在局部 Header 始终变动的状况,此时编解码流会继续发送对应 Header 的编码数据,耗费大量 CPU 资源,火山引擎采取不退出动静表的策略来节俭资源耗费。

火山引擎 QUIC- 业务收益

目前,火山引擎 QUIC 已在各场景大规模上线,笼罩了抖音、飞书、头条、西瓜等 APP,波及实时通信、音视频、云游戏等多个畛域,业务场景包含 API、上传、点播、长连贯等,日高峰 QPS 超过 3000 万,且还在一直增长。

ArchSummit 寰球架构师峰会为 QUIC 协定在网络通信畛域的翻新利用提供了一个重要的交流平台。通过这次峰会,行业专家们汇聚智慧,独特探讨 QUIC 在各个业务场景的利用和优化。

火山引擎边缘云愿与社会各界搭档共同努力,致力于摸索网络通信畛域的翻新技术,并与行业共享最新的成绩。通过技术分享与单干,满足用户日益增长的网络需要,助力产业蓬勃发展。对于火山引擎边缘云:火山引擎边缘云,以云原生技术为根底底座,交融异构算力和边缘网络,构建在大规模边缘基础设施之上的云计算服务,造成以边缘地位的计算、网络、存储、平安、智能为外围能力的新一代分布式云计算解决方案。

正文完
 0