新一代互联网传输协议QUIC浅析

QUIC(Quick UDP Internet Connection)是谷歌制定的一种互联网传输层协议,它基于UDP传输层协议,同时兼具TCP、TLS、HTTP/2等协议的可靠性与安全性,能够有效减小链接与传输延迟,更好地应对当前传输层与应用层的挑战。算法

QUIC的由来:为何是UDP而非TCP?
UDP和TCP都属于传输层协议。TCP是面向链接的,更强调的是传输的可靠性,经过TCP链接传送的数据,无差错,不丢失,不重复,按序到达,可是由于TCP在传递数据以前会有三次握手来创建链接,因此效率低、占用系统的CPU、内存等硬件资源较高;而UDP的无链接的(即发送数据以前不须要创建链接),只须要知道对方地址便可发送数据,具备较好的实时性,工做效率比TCP高,占用系统资源比TCP少,可是在数据传递时,若是网络质量很差,就会很容易丢包。浏览器

咱们知道,大部分Web平台的数据传输都基于TCP协议。实际上,TCP在设计之初,网络环境复杂、丢包率高、网速差,因此TCP能够完美解决可靠性的问题。而现在的网络环境和网速都已经取得了巨大的改善,网络传输可靠性已经再也不是棘手的问题。另外,TCP还有一个很大的问题是更新很是困难。这是由于:TCP网络协议栈的实现依赖于系统内核更新,一旦系统内核更新,终端设备、中间设备的系统更新都会很是缓慢,迭代须要花费几年甚至十几年的时间,这显然跟不上当今互联网的发展速度。因此如今解法就是,抛弃TCP而使用UDP,来实现低延迟的传输需求。安全

图片描述

(QUIC is very similar to TCP+TLS+HTTP/2 implemented on UDP)网络

为告终合二者优势,谷歌公司推出了QUIC,它的升级不依赖于系统内核,只须要Client和Server端更新到指定版本。如此一来,基于UDP的QUIC就能月更甚至周更,很好的解决了TCP部署和更新的困难,更灵活地实现部署和更新。架构

为何要用QUIC?
第一,建连延迟低
网民传统TCP三次握手+TLS1~2RTT握手+http数据,基于TCP的HTTPS一次建连至少须要2~3个RTT,而QUIC基于UDP,完整握手只须要1RTT乃至0RTT,能够显著下降延迟。并发

图片描述
(握手比对)性能

第二,安全又可靠
QUIC具有TCP、TLS、HTTPS/2等协议的安全、可靠性的特色,经过提供安全功能(如身份验证和加密)来实现加密传输,这些功能由传输协议自己的更高层协议(如TLS)来实现。优化

第三,改造灵活
QUIC在应用程序层面就能实现不一样的拥塞控制算法,不须要操做系统和内核支持,这相比于传统的TCP协议改造灵活性更好。ui

第四,改进的拥塞控制
QUIC主要实现了TCP的慢启动、拥塞避免、快重传、快恢复。在这些拥塞控制算法的基础上改进,例如单调递增的 Packet Number,解决了重传的二义性,确保RTT准确性,减小重传次数。阿里云

第五,无队头阻塞的多路复用
HTTP2实现了多路复用,能够在一条TCP流上并发多个HTTP请求,但基于TCP的HTTP2在传输层却有个问题,TCP没法识别不一样的HTTP2流,实际收数据还是一个队列,当后发的流先收到时,会因前面的流未到达而被阻塞。QUIC一个connection能够复用传输多个stream,每一个stream之间都是独立的,一个stream的丢包不会影响到其余stream的接收和处理。

图片描述

综上所述,QUIC具备众多优势,它融合了UDP协议的速度、性能与TCP的安全与可靠,大大优化了互联网传输体验。

做为提高终端用户访问效率的CDN服务,其节点之间存在大量数据互通,节点之间的网络链接、传输架构等因素都会对CDN服务质量产生影响。而将QUIC应用在CDN系统中,CDN用户开启QUIC功能后,系统将遵循QUIC协议进行用户IP请求处理,既能知足安全传输的需求,也能提高传输效率。目前,阿里云CDN除了在资源部署、智能调度等方面进行提高以外,也在网络传输协议优化上不断钻研演进,以此确保为用户提供更低延迟、更高性能的内容分发加速服务。

早在2018年杭州云栖大会上,阿里云率先提出AliQUIC的概念,它是基于QUIC协议而推出的一种CDN last mile和middle mile的网络传输解决方案。在这个网络方案里,AliQUIC不只仅针对Web类应用,它在游戏,实时音视频通讯,互动直播和IM弹幕等各类场景中,延伸出针对性地算法和技术,以达到最佳的加速效果。点击阅读详情。

图片描述

阿里云CDN全面支持QUIC协议
阿里云CDN全面支持QUIC协议,适用的产品包含静态内容分发(图片小文件、大文件下载、视音频点播)和 动态内容分发(全站加速)。QUIC基于UDP协议,能够为用户提供更高的弱网性能、更低的握手延迟、更好的多路复用和更灵活的拥塞算法。

用户只需在CDN、全站加速控制台对域名开启【QUIC协议开关】功能,支持QUIC协议的客户端便可经过QUIC协议与阿里云CDN节点通讯。

图片描述
(在阿里云CDN中使用QUIC的工做原理)

QUIC对客户端的要求
若是您使用Chrome浏览器,则只支持QUIC协议Q43版本。当前阿里云CDN的QUIC协议是Q39版本,不支持直接对阿里云CDN发起QUIC请求。
若是您使用自研App,则App必须集成支持QUIC协议的网络库,例如:lsquic-client或cronet网络库。
QUIC应用场景
1、图片小文件:明显下降文件下载总耗时,提高效率
2、视频点播:提高首屏秒开率,下降卡顿率,提高用户观看体验
3、动态请求:适用于动态请求,提高访问速度,如网页登陆、交易等交互体验提高
4、弱网环境:在丢包和网络延迟严重的状况下仍可提供可用的服务,并优化卡顿率、请求失败率、秒开率、提升链接成功率等传输指标
5、大并发链接:链接可靠性强,支持页面资源数较多、并发链接数较多状况下的访问速率提高
6、加密链接:具有安全、可靠的传输性能

如何开通使用QUIC目前QUIC对外开放处于公测阶段,请您扫下方二维码进入钉钉群,进群后按群公告提供域名信息,由后台工程师帮您开启QUIC协议。当您在阿里云CDN开启QUIC协议功能时,阿里云CDN将会处理经过QUIC协议发起的用户请求。