您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[ArchSummit深圳2023|全球架构师峰会]:QUIC协议在分布式系统架构中的实践_李龙彦 - 发现报告
当前位置:首页/行业研究/报告详情/

QUIC协议在分布式系统架构中的实践_李龙彦

AI智能总结
查看更多
QUIC协议在分布式系统架构中的实践_李龙彦

QUIC协议在分布式系统架构中的实践 OPPO/李龙彦 OPPO网络优化领域技术专家,多年网络协议栈开发经验。目前主要负责OPPO的移动端网络库、接入层安全的架构设计和研发工作。从0-1建设了OPPO特色的QUIC(HTTP/3)协议,并成功在OPPO各个业务的进行上线,对网络传输效率以及安全有较大的提升。 01. 02. 03. 04. Quic协议介绍 OPPO分布式系统架构 Quic协议在分布式架构中的优化Quic协议实现中的问题案例分享 clientserver DNS解析 LocalDNS DNSHTTPDNS HTTPDNS Server LISTEN (socket,bind,listen) TCP三次握手 TLS四次握手 1RTT SYN_SENT (socket,connect) (connect返回)ESTABLISHED SYNSYN,ACK ACK ClientHello ServerHello,Cert,ServerKeyEx (accept阻塞)SYN_RCVD (accept返回)ESTABLISHED 用户数据传输 2RTT TLS1.2握手 ClientKeyEx,ChangeChipherSpecChangeChipherSpec 一个请求的过程 1RTT 用户请求响应 UserrequestResponsedata DNS+4RTT userspace kernelspace HTTP/2 TLS HTTPoverQUIC QUIC MultistreamingTLS1.3keynegotiation flowcontrol congestioncontrol userspace BoringSSL isaforkofOpenSSL IP TCP UDP kernelspace TCP+TLS1.2 TCP+TLS1.3 QUIC QUIC协议解决了TCP的队头阻塞问题 •HTTP/2提出了“流”的概念,实现了在一条连接上的并发请求。 •但是TCP协议是内核态协议,无法识别“流”,QUIC连接实现在用户态,可以识别“流”。 单调递增的包序号,解决了TCP重传包的二义性。 OPPO统一接入层业务规模 数千级业务集群 数十万级容器实例 千万级QPS 数亿级用户 1 TLS 卸载 现在业界的TLS卸载都是基于硬件的,QUIC上由于boringSSL的引入,TLS的硬件卸载如何无缝兼容,也是能让QUIC大规模运行的关键 2 0RTT 优化 3 连接迁移 QUIC设置的0-RTT的开启条件比较苛刻,在实际运行中0-RTT率并不高,安全的提高0-RTT率是QUIC优化的重要手段 要正确实现连接迁移并不容易,需要充分考虑的QUIC包的传输路径,即使在同一台机器下,正确处理多核下UDP数据包传递也不容易 将非对称加密过程卸载到QAT加速卡中 针对Nginx进行适配 异步处理方式 支持强大的压缩加速能力 实现了对BoringSSL库的支持,支持Quic协议 OPPO的安全网关基于Nginx进行自研定制化, 继承了Nginx的异步设计特性。 OPPO与英特尔联合开发基于Quic协议的SSL卸载方案,包括加解密库的QAT加速适配、Quic协议栈和QAT引擎的异步化等措施。 通过这些优化,在一台web服务器中能够并发进行TLS1.2/TLS1.3/Quic的加速,在QAT引擎库中实现了对OpenSSL和BoringSSL的同时支持。 TCP+TLS1.3性能提升达4.05倍QUIC性能提升达3倍 通过设备ID信息作为补充IP地址的补充验证,提高0-RTT率 实际过程中会产生的问题: 1.四层架构的影响:LVS、DPVS等四层负载均衡工具基于四元组进行转发,会转发到不同的后端服务 上,导致无法连接迁移; 2.多核的影响:由于多核的原因,连接迁移中源地址的改变可能会让接下来的数据包去到不同的进程, 影响socket数据的接收 业内统计数据全球有7%地区的运营商对UDP有限速或者禁闭,除了运营商还有很多企业、公共场合也会限制UDP流量甚至禁用UDP。这对使用UDP来承载QUIC协议的场景会带来致命的伤害。 对此,OPPO安全网关采用多路竞速的方式使用TCP和QUIC同时建连。除了在建连进行竞速以外,还可以对网络QUIC和TCP的传输延时进行实时监控和对比,如果有链路对UDP进行了限速,可以动态从QUIC切换到TCP。 作用 1.用于测试网络连接的可达性和延迟情况 2.解决连接迁移失败问题 3.触发网络拥塞控制 如何实现 1.1-RTT时的时候,需要在连接建立完成后开始发送PING帧。 2.0-RTT的时候,无法确定连接是否建立完成,PING帧该何时发送? PING帧的实现有哪些问题? 交互过程 1.服务端不需要回PONG帧,ACK即可。 2.PING帧中包含Token 接入层架构中如何设计间隔时间 1.发送时间间隔如何与四层负载均衡的超时时间进行权衡?又该如何与七层网关进行权衡? 保持和探测连接活性、及时关闭“坏死”连接,提升连接复用率解决连接迁移偶然失败的问题 TOA/UOA:通过将源IP/端口信息放置到IP头的options中,服务端通过ip头中的option获取源IP 信息,支持的信息有限,V6存在局限性; ProxyProtocol:基于TCP的协议都是使用这种方式,通过将源IP/端口信息放置到每个UDP的 payload的起始位置,服务器端在获取报文后,将前面payload的源IP信息取出来,支持V4/V6; 通过弱网实验测试,QUIC在开启0-RTT时,其延迟要比HTTP降低20%,比HTTPS要降低50%以上。现在主要在海外商店、小布助手等多个业务上线使用QUIC。 在海外软件商店、小布助手上线后,性能有显著提升:接口成功率提升3%~13%,秒开率提升 2%~19%,平均延时提升27%~50%。 握手包乱序导致建连时间特别长 Retry报文引起建连需要2-RTT 为了防止放大攻击,握手需要多个RTT 更多网络相关知识,请关注我的微信公众号:网络小菜鸟

你可能感兴趣

hot

字节QUIC千万QPS应用实践_龙志

信息技术
ArchSummit深圳2023|全球架构师峰会2023-08-02
hot

李汉波-字节跳动基于 KubeAdmiral 的多云分布式云原生实践之路

信息技术
2024 第23届 GOPS 全球运维大会暨 XOps 技术创新峰会 · 北京站2024-07-17
hot

虎牙-郑健彦-智能弹性在虎牙降本增效上的探索与实践

信息技术
2023第十二届全球TOP100软件案例研究峰会2024-08-21
hot

计算密集型应用以ServiceMesh为支点解决分布式问题的探索与实践_王志龙

信息技术
ArchSummit深圳2023|全球架构师峰会2023-08-02