随着互联网的快速发展,基础网络环境也在发生变化,WEB网络协议也经历了HTTP1.0、HTTP1.1、HTTP2.0以及即将迎来HTTP3.0; HTTP3.0将以QUIC协议替代TCP作为传输层,具备stream多路复用、握手0RTT、连接迁移以及用户态拥塞算法诸多优势。CDN产品关注QUIC协议演进并实践落地,从gQUIC协议到标准IETF QUIC协议已经部署在CDN边缘节点,并在短视频和图片业务场景实践有不错的收益。
在1月12日的「阿里云CDN产品发布会-新一代传输协议QUIC让CDN更快一步」之上,阿里云技术专家淮叶分享了QUIC技术及其应用落地实践。本文根据分享内容梳理,包括以下三个部分:
- QUIC协议介绍,包括协议诞生历史、基础特性、相比TCP有哪些优势,以及QUIC协议可以应用在哪些业务场景
- CDN QUIC技术落地实践,包括协议库选择,QUIC协议软件实现以及QUIC落地技术架构,以及QUIC性能优化,QUIC产品如何接入使用
- CDN QUIC技术落地场景,主要介绍阿里巴巴集团业务使用QUIC加速后的收益,以及背后的一些优化措施
QUIC协议介绍
当我们访问视频网站和APP应用时,经常会遇到各种各样的性能问题,网页加载慢、视频卡顿、网络出错,其中关键影响因素就是网络协议。
HTTP 协议作为互联网web协议,经历了几次重要的升级:
HTTP1.0 -> HTTP1.1:支持长连接,请求pipeline特性,通过减少了TCP三次握手,降低连接建立的开销
HTTP -> HTTPS:增加TLS层握手,传输内容加解密,因增加安全特性,故增加建连延迟
HTTP1.1 -> HTTP2:H2特性是请求数据流的多路复用与头部压缩,提高了单连接的并发能力
从HTTP1.0升级到HTTP2,其中传输层协议没有变化都是基于TCP协议。TCP协议是可靠传输协议,需要三次握手状态,还有队头阻塞问题,为了解决这些问题,基于UDP设计实现的一种可靠传输协议——QUIC协议应运而生。因此,HTTP协议再次升级。
HTTP2->HTTP3:HTTP3基于QUIC协议,因此具备QUIC协议的传输特性,解决TCP队头阻塞问题,具备TLS1.30-RTT、H2多路复用能力,还具备连接迁移能力。QUIC协议已于2021年5月正式标准化,编号为RFC9000。
QUIC 协议解决了哪些问题
1. 低连接延时
QUIC 基于 UDP,无需 TCP 连接,最好情况下,QUIC 可以做到 0RTT 开启数据传输。而基于 TCP 的 HTTPS,即使在TLS1.3的early data下仍然需要 1RTT 开启数据传输。然而对于常见的 TLS1.2 完全握手的情况,则需要 3RTT 开启数据传输。
2. 无队头阻塞
虽然 HTTP2 实现了多路复用,但是传输层依然使用的是TCP,一旦出现某个报文丢包,将会影响多路复用下的所有请求流。然而QUIC 基于 UDP,在设计上就解决