quic初探

近年来,随着固网宽带以及移动互联网的快速发展,以及5g时代的加速,视频直播行业迎来新的巨大商机,各种视频直播平台如雨后春笋般的涌现。然而当大量用户同时在线访问时,极致高清无卡顿的视频直播体验成为大家的一致诉求。

quik能够帮助互联网内容服务商实现更快的连接建立、弱网环境抗丢包、切换网络无需重新连接等等特性,可以帮助直播平台轻松解决卡顿首屏时间太长等问题。

那就让我们对它有个初步的了解8⃣️

quic是什么❓

”QUIC(快速UDP网络连接)是一种实验性的网络传输协议,由Google开发,该协议旨在使网页传输更快

“QUIC提高了目前使用TCP的面向连接的网络应用程序的性能。它通过使用用UDP在两个端点之间创建若干个多路连接来实现这一目标,其目的是为了在网络层淘汰TCP,以满足许多应用的需求”

-- 维基百科

quic的目标

QUIC与HTTP/2的多路复用连接协同工作,允许多个数据流独立到达所有端点,因此不受涉及其他数据流的丢包影响。

  • 相反,HTTP/2创建在传输控制协议上,如果任何一个TCP数据包延迟或丢失,所有多路数据流都会遭受队头阻塞延迟。 (head-of-line-blocking)

低连接和传输时延,以及每个方向的带宽]估计以避免拥塞

  • 拥塞控制移动到了两个端点的用户空间,而不是内核空间,使得算法得到更苦熬的改进
  • 前向纠错,进一步提高预期错误的性能

-- 维基百科

quic快在哪里

连接快 faster handshakes

延迟小 earlier data

网络切换性能好 connection-

迭代快,应用层改进快

  • 前向纠错
  • 改进的拥塞控制

quic为啥快

tcp的

  • 三次握手
  • 防止拥塞慢启动
  • 丢包导致的对头阻塞

为啥快❗️

  • 减少往返次数RTT,缩短连接建立时间⌚️: 缓存对方的信息
  • 连接多路复用,且采用独立数据流避免丢包阻塞
  • 使用前行纠错恢复丢失的包,减少超时重传
  • 连接保存连接标志符,网络迁移连接快
image-20210225230502879
image-20210225230722029
image-20210225230745838

quic为什么不是发明新的协议,而是基于UDP❓

1)新的协议需要的代价高

2)选择udp的出发点

  • 避免 ossification(僵化):QUIC 协议加密负载,也是避免协议僵化一种方式,比如当中间层处理 UDP 数据时,只需要按照数据包的方式去处理即可,不需要去关注内部层的具体信息。
  • 放弃改进 TCP 本身
  • 创新方向:QUIC 是由谷歌提出的,所以 UDP 是以浏览器为出发点,从协议、从浏览器方向来进行创新
image-20210225223736914
image-20210225224556530

quik的挑战

针对tcp改进,所以大多挑战也是udp面临的

安全问题,反射攻击,伪造了原地址

  • QUIC 握手过程是不对称的,特别是第一次请求时,客户端只需要发送几个字节的信息到服务器,而服务器则需要把证书等很多东西返还给客户端,这个不对称的机会造成了放大。

开源quik

  • quiche:这个是用·Rust 做的库,通过 Nginx 调用。
  • google 自己的库也叫 quicheC++写的。
  • ATS:Apache Traffic Server
  • golang:Caddy
  • python+C: aioquic
  • 微软: msquic

总结

  • 利用缓存,显著减少连接建立时间
  • 改善拥塞控制,拥塞控制从内核空间到用户空间
  • 没有 head of line阻塞的多路复用
  • 前向纠错,减少重传
  • 连接平滑迁移,网络状态的变更不会影响连接断线

参考文献

唱吧前端:了解 QUIC

QUIC

HTTP/3 - HTTP over QUIC is the next generation by Daniel Stenberg

又拍云 |QUIC/HTTP3 协议简析

https://halfrost.com/ |本站开始支持 QUIC

https://www.slideshare.net/apnic/a-new-internet-introduction-to-http2-quic-and-doh

HTTP/3 Deep Dive

http://science.china.com.cn/2019-11/07/content_40951189.htm

你可能感兴趣的:(quic初探)