QUIC到底有多快!

1,170 阅读5分钟

之前在《一堆废话》里说过关于安全和速度的问题,互联网行业很少有人或者有公司说自己能预料到十年后或者5年后的发展情况。互联网太快了,版本的一层层迭代,技术的一次次更新。 最近在公司的技术交流会上我了解到QUIC这个技术,顿时觉得就是这个!这个技术在互联网行业将会像5G一样引起惊天骇浪
收藏几篇博客:
blog.csdn.net/dog250/arti…
blog.csdn.net/u014023993/…

一:QUIC是什么?

QUIC 全称Quick UDP Internet Connection, 是Google制定的一种基于UDP 协议的低时延互联网应用层协议QUIC融合了包括TCP,TLS,HTTP/2等协议的特性,但基于UDP传输

TCP/IP协议族是互联网的基础。其中传输层协议包括TCP和UDP协议。与TCP协议相比,UDP更为轻量,但是错误校验也要少得多。这意味着UDP往往效率更高(不经常跟服务器端通信查看数据包是否送达或者按序),但是可靠性比不上TCP。通常游戏、流媒体以及VoIP等应用均采用UDP,而网页、邮件、远程登录等大部分的应用均采用TCP。

Google想到能否把这两种协议的优势结合起来,同时实现低时延和高可靠并将其应用到更高安全的协议上,于是就有了QUIC。
也就是说QUIC与TCP和UDP相比:既有了高效率(UDP)也有了可靠性(TCP).

二:QUIC的核心特点

1:连接建立的低延时(0RTT)

https的rtt,传统为3RTT,优化版本的也至少需要2RT
对于quic,可以实现0RTT 超低延时建连
RTT(Round-Trip Time):往返时延。是指数据从网络一端传到另一端所需的时间。通常,时延由发送时延、传播时延、排队时延、处理时延四个部分组成。

我懂了,简直要死。
rtt是时延,类似于一个单位长度,没有定量,根据机器不同的一个东西,指代时间

0RTT的实现 0RTT是有前提的,第一次连接实际上是1RTT第一次请求完,客户端会缓存住服务端给的一组加密元祖(缓存在内存或者磁盘),然后开始加密数据并发送给服务端

2: 连接迁移(4g切wifi)

主要场景:不同网络之间的切换,wifi1切wifi2,4G切wifi等问题: 传统tcp连接为4元祖(ip:port -- ip:port)
呵,四元组又是个啥

假设有如下连接:
Client_IP1:Client_Port1 <---> Server_IP:Server_Port fd1 Client_IP2:Client_Port2 <---> Server_IP:Server_Port fd2 Client_IP3:Client_Port3 <---> Server_IP:Server_Port fd3

TCP无法仅仅通过查看目的端口来确定数据报应发送给那个套接字(socket)。它必须查看套接字对的所有4个元素才能确定由哪个端点接受到达的数据包。

对于来自于Client_IP1:Client_Port1,目的地址是Server_IP:Server_Port的数据报由fd1接收 对于来自于Client_IP2:Client_Port2,目的地址是Server_IP:Server_Port的数据报由fd1接收

PS:监听端口和用来发送数据的端口是同一个端口 其中客户端的ip和端口发生变化,就会导致连接中断quic解决:quic选择一个64位随机数作为id,唯一的标识该连接,因此ip端口等变化,对于quic是不会感知到的,它的连接依然存在

quic解决:quic选择一个64位随机数作为id,唯一的标识该连接,因此ip端口等变化,对于quic是不会感知到的,它的连接依然存在

3:避免队头阻塞

队头阻塞

4:改进的拥塞控制

  1. Cubic:基于丢包的拥塞控制:将丢包视为出现拥塞,采取缓慢探测的方式,逐渐增大拥塞窗口,当出现丢包时,将拥塞窗口减小
  2. bbr:基于链路容量的拥塞控制:实时测量网络带宽和时延,认为网络上报文总量大于带宽时延乘积时出现了拥塞
  3. BDP:带宽时延积,表示的是网络中的正在传输的流量
    拥塞控制的目的:将滑动窗 口缓冲设置成BDP
    此时最佳BDP = 最大BW * 最小RTT

1):丢包率高,BBR拥塞控制原理

tcp的cubic算法:依赖接收到的ack包判断是否丢包,来决定是否改变发送速率
当ack包本身延时和丢包的情况下,决策失误,发送速率不变,导致更拥塞
bbr算法:动态实时的探测带宽,出现延时和丢包,探测出的带宽必然减小,从而发送速率减小,动态控制拥塞,实现了真正的拥塞控制
bw = delivered/interval_us (应答的数据/应答数据使用的时间)

2):带宽自适应

当网络带宽变化较大时,bbr可以马上进行感知与处理

带宽增大,bbr感知,并增大发送

宽减小,bbr感知,并减少发送

3):算法切换

tcp:要切换拥塞算法,需要修改内核,重启机器,周期长,操作风险大

quic:客户无感知秒切

4):缺点

在正常网络下,抢占资源抢不过tcp,只能在丢包率高的场景下抢占能力强过tcp

解决方法:bbr v2

控制发送量,取决因子增多,不再单纯依赖探测带宽,加入丢包率

5:前向冗余纠错(FEC)

quic使用前向纠错的纠错码,每个数据包除了它本身的内容之外,还包括了部分其他数据包的数据,因此少量的丢包可以通过其他包的冗余数据直接组装而无需重传

三:核心优势

tcp受到的限制:

  1. 很多网络中间层,比如防火墙、网关等,都强依赖于tcp指定的各类规则,所以tcp的修改很容易由于这些中间环节的存在而受到干扰。2
  2. tcp是由操作系统在内核层面实现的,导致tcp的迭代受限于操作系统的升级quic

quic:在应用层进行编程,直接进行拥塞算法的切换,在不同场景下,针对性的使用最佳的拥塞控制,实现更快的迭代,更符合当前发展趋势