翻译:Alex

技术审校:刘连响

本文来自Compira Labs,作者为Ravid Hadar。

▲扫描图中二维码了解音视频技术大会更多信息▲


影音探索 #012#

当计算机科学家注意到TCP的限制性使它无法继续支持新的、更加先进的互联网服务时,他们对QUIC的兴趣便与日俱增。作为传输协议,QUIC是替代TCP的最重要“候选人”,它将有可能为互联网数据传输打开新的局面。

在昨天的文章中,我们讨论了什么是QUIC、它的目的以及工作原理。现在我们要回答一个稍许不同的问题:它真的值得采用吗?接下来,本文将深入探索使用QUIC的优势和劣势。

QUIC的优势

QUIC的支持者指出它可以使互联网更高效、快速、安全且不断发展。

1∕可扩展性

更改TCP并不容易,因为其中的中间件抗拒更新,而且TCP 40字节的可选位几乎全部填满(更多相关信息,请阅读QUIC和互联网传输的未来)。

TCP没有任何版本协商(version negotiation)扩展位,相比之下,QUIC有32位,所以它有很多空间部署新版本,厂商也可以利用这些空间定义自己的专属版本。

2∕用户空间实现

QUIC能够在应用层实现,与在操作系统内核中实现的TCP相比,它可以更快地进行更新。这进一步提高了QUIC的可扩展性,使得服务可以非常快速地演进,从而新的特性每天都能得到部署。同时它还能在上下文切换时通过调用较少的开销而实现更高的响应能力。

3更快建立连接

Web浏览特别需要快速建立连接,因为用户通常会开启多个、短暂的连接。当使用HTTPS时,TCP在建立连接前,需要“三次握手”以及后续的TLS协议设置。

QUIC(基于UDP)不需要三次握手,加上它会在初次握手时交换安全密钥,从而使它在建立加密连接时速度提升了一倍。

4降低对丢包的敏感度

使用TCP时,如果丢失一个数据包,接下来所有的数据包都会停止传输,直到丢失的那个数据包被发送,这种现象被称为“队头阻塞”,它会导致延迟明显增加。

相比之下,QUIC使用的是类似HTTP/2的多路复用模式,可以同时支持多个数据流。如果一个数据流发送错误,导致丢包,那么其他数据流会继续发送数据包,而不会阻塞传输。

下图的示例中显示了包含三个数据包的拥塞窗口的连接,其中0号数据包被丢弃。在只有单一数据流的TCP连接中,后续的数据包被阻止。QUIC的多路连接拥有三个数据流,每个都能独立操作。因此,2号和3号数据流仍然在正常传输,只有1号数据流中后续的数据包被阻止。

5切换网络时的性能提升

切换网络时,QUIC可以实现平稳过渡。比如,如果你使用家里的wifi观看手机上的视频,然后你走出家门,家里的wifi便切换到LTE,或者当你一直忙于观看视频,在不同的移动基站间移动时。

在以上这些场景中,TCP将切断连接,并通过新的网络创建新的连接,进而影响到你的观看体验。而QUIC则能够实现无缝连接。

6提升的安全性和隐私保护

QUIC在传输层中内置了加密功能,从而验证整个负载(包括header)。TCP在header中不包含加密,使它非常容易受到攻击。QUIC默认支持安全的TLS,意味着端到端完全安全。

QUIC的局限性

TCP发明时,网络都是有线连接,而且相当可靠。但显然,情况已经发生改变。QUIC对非可靠、无法预测的无线连接进行了改进,但并没有改变互联网传输的本质,它的局限性导致它只能改变某些特定使用场景。下面列举了一些额外的QUIC局限性:

1迁移app面临巨大挑战

将app从HTTP/2迁移到HTTP/3(或者从TCP迁移到UDP)要费很大力气。整个过程需要将整个应用层实现和传输层实现转移到UDP,并在服务端和客户端构建全新的解决方案。

这对于流媒体领域中资源相对有限的小厂商而言无疑挑战重重,同时也解释了谷歌和微软这样的科技巨头可以率先采用QUIC协议的原因。

2采用受限

QUIC的最大问题就是它的采用依然受限。几乎每个浏览器都接受使用QUIC进行简单的网页浏览,但是除了chromium,没有浏览器将它设置为默认选项。

除此之外,在流媒体领域,除了谷歌和Facebook(现更名为Meta)之外,少有公司使用QUIC。只有少数CDN提供商支持QUIC,而其中的一些也只是验证了QUIC的实现,并没有为大规模部署准备好。这就带来了问题:如果你推出了使用multi-CDN并基于QUIC的新服务,那么将只有20%的访问使用QUIC,因为你无法向用户证明它对用户体验的显著影响。

3QUIC包含TCP回退

QUIC之所以被构建在UDP之上,部分原因是极少有中间件和网络设备拦截UDP。但确实存在被拦截的风险,所以基于QUIC的app必须设计成能够回退到TCP,以防万一。

这意味着app(基于QUIC)的开发者要同时开发和维护两个不同的版本(由于TCP回退和受到限制的采用率),导致他们的负担很重。

好消息是,随着最新的DEVOPS结构与HTTP的Alt-Svc标签的使用,支持两种协议要比以前简单得多。

4无法检查数据包

网络防火墙无法解密QUIC流量来检查数据包,所以潜在的恶意流量非常有可能没有被标准安全功能检测出来而进入网络。因此,思科和Palo Alto Networks等安全厂商通常会在端口80(Web服务器)和443(TSL)拦截QUIC数据包(认为它们包含恶意软件),迫使客户端回退使用HTTP/2和TCP协议。

但上述操作并不会显著影响内容用户体验,因为正确实现的流媒体服务会默认回退到TCP+TLS,但这种操作可能会阻止率先部署QUIC的想法。只有解决这一挑战,QUIC才能被各大企业广泛接受。

5不具备某些TCP特性

人们理所当然地使用TCP中所默认包含的一些特性(比如Throttling)。但使用QUIC,你可能需要自己构建这些特性。

除此之外,HTTP/3缺乏一些采用某些特定协议时所需的特性。比如,HTTP/3仍然不支持成块传输(chunked transfer,即将视频切片分割为小块的能力),但HTTP1.1却支持该特性。这就限制了用于基于QUIC的视频传输的协议数量。

因此,尽管QUIC支持大部分常见传输协议(如HLS、MPEG-DASH),但目前它无法支持更多新的协议,这些协议主要用于降低glass-to-glass延迟,比如依赖于成块传输的LL CMAF(Low Latency Common Media Format)。

glass-to-glass延迟: 指显示器屏幕和相机镜片之间的延迟,也可以叫做“端到端延迟”,意思是开始( 捕获)并结束(显示)之间整个传输管道上的延迟[1]。

6更容易被fingerprinting

恶意行为者很可能嗅探到互联网用户与所访问网站之间的网络流量,并通过被发现的数据包创建与特定网站相对应的不同模式,这种操作被称为web fingerprinting。在早期流量连接阶段,TCP+HTTPS似乎更能抵御fingerprinting。

7QUIC可能需要更高的CPU使用率

一些观点认为QUIC所需的HTTP/3在客户端和服务端都占用了更多的CPU资源。然而,谷歌却持相反观点,认为QUIC有助于延长电池寿命。

无论如何,一旦QUIC进入主流技术栈,这一问题预计不会有太大影响。

8需要实现的协议众多

由于IETF历经5年多才发布第一版QUIC,所以目前市面上有60种QUIC版本实现,都开发于QUIC标准之前。因此,大部分QUIC版本或不支持完整的QUIC标准,或只支持自己版本的实现。只有当不同版本的QUIC与官方标准保持一致时,它才能被广泛采用。

9互联网依然针对TCP进行优化

TCP传输已经存在几十年,多年以来,TCP应用通过在软件(如操作系统内核)和硬件(如网络接口和智能NIC)中构建卸载性能而彻底得到了优化。而QUIC却不具备这一能力。它基于UDP,位于用户空间内,所以它的端点,以及一些中间件功能在现阶段存在明显的劣势。不过,一旦QUIC被广泛采用,就会得到这种优化,所以这对于QUIC而言只是暂时性问题。

QUIC vs TCP:对于质量体验的影响

QUIC支持某些独特的特性并在新的特性实现方面提供了更多灵活性。因此,对比TCP,基于QUIC的应用有望在QoE方面带来更多优势。

下面是两个QUIC带来QoE优势的常见用例:

  • Web浏览: QUIC支持内置TLS,并能够迅速建立连接。在大部分连接时长较短的情况下(如安全网站的快速下载时长),它可以提供明显的性能优势。谷歌声称运行在QUIC上的应用页面下载时长缩短了10%。

  • 视频流: QUIC支持的某些特性有望提升视频流的QoE。目前为止,因为QUIC的实现逻辑与TCP相似,所以可预测的影响已受到限制。但在一些情况中,还是可以体验到QUIC所带来的好处,比如,QUIC减少队头阻塞的能力为具有中高丢包率的网络所带来的QoE优势。

QUIC也许是“改进者”,不是“颠覆者”

QUIC确实为互联网用户带来了渐进式的增益,但对于它是否是真正的“颠覆者”这一观点还存在争议。目前存在充分的理由采用QUIC,但QUIC所带来的问题以及早期采用者所遇到的挑战都在“鼓励”一种观望态度。

注释:

[1]https://cloud.tencent.com/developer/article/1346159

致谢:

本文已获得作者Ravid Hadar授权翻译和发布,特此感谢。

原文链接:

https://www.compiralabs.com/post/quic-is-it-the-game-changer-for-internet-delivery

延伸阅读:

聊聊QUIC协议的发展

IETF访谈:HTTP/3全球份额持续增长,QUIC前景一片光明

IETF:QUIC Version 1 (RFC 9000) 作为标准化版本现已发布


QUIC会成为互联网传输的颠覆者吗?相关推荐

  1. QUIC - 低时延互联网传输层协议

    QUIC - 低时延互联网传输层协议 QUIC(Quick UDP Internet Connection)是谷歌制定的一种基于UDP的低时延的互联网传输层协议.在2016年11月国际互联网工程任务组 ...

  2. 互联网协议 — QUIC 快速 UDP 互联网连接

    目录 文章目录 目录 QUIC QUIC 的特性 基于 UDP 可靠性 数据流 有序交付 快速握手 安全性 连接迁移 解决队头阻塞 HTTP/3 支撑 QUIC 的工作原理 连接 数据流 用户态实现 ...

  3. QUIC 之类的可靠传输协议

    互联网是一个分组(或者称为数据包)交换网络,其中传输的数据的基本单位是数据包.互联网中时时刻刻在发生的是距离有限的两个路由节点之间通过物理链路的数据包交换.那互联网中远距离复杂环境下的数据传输究竟如何 ...

  4. 未来十年,互联网将如何颠覆17个传统行业

    未来十年,互联网将如何颠覆这17个传统行业 互联网最有价值之处不在自己生产很多新东西,而是对已有行业的潜力再次挖掘,用互联网的思维去重新提升传统行业.我从这个角度去观察,互联网影响传统行业的特点有三点 ...

  5. 周鸿祎的互联网方法论:颠覆式创新

    66 <周鸿祎自述:我的互联网方法论>颠覆式创新来自侧翼,完成的人往往是"屌丝",要做到颠覆必须聚焦! 1颠覆式创新是人性的表达 一创新的三种形式 (1)发明:发明一种 ...

  6. day30Node.js web模块:服务端与客户端、互联网传输协议、

    文章目录 一 1.服务端与客户端 1.1什么是上网 1.2享受服务的流程 1.3服务器 1.4客户端 1.5url地址 协议: 服务器名称: 端口号: 路径: 参数: 1.6 域名与ip的关系 2.互 ...

  7. 互联网将如何颠覆这17个传统行业

    互联网最有价值的不是自己在产生很多新东西,而是对已有行业的潜力再次挖掘,用互联网的思维去重新提升传统行业.那么从这个角度去观察,互联网影响传统行业的特点有三点: 第一,打破信息的不对称性格局,竭尽所能 ...

  8. 基于HTTP在互联网传输敏感数据的消息摘要、签名与加密方案

    一.关键词 HTTP,HTTPS,AES,SHA-1,MD5,消息摘要,数字签名,数字加密,Java,Servlet,Bouncy Castle 二.名词解释 数字摘要:是将任意长度的消息变成固定长度 ...

  9. 未来十年,互联网将如何颠覆这17个传统行业,你知道吗?

    互联网最有价值之处不在自己生产很多新东西,而是对已有行业的潜力再次挖掘,用互联网的思维去重新提升传统行业.从这个角度去观察,互联网影响传统行业的特点有三点: 1.打破信息的不对称性格局,竭尽所能透明一 ...

  10. 看互联网将如何颠覆这17个传统行业

    原文地址:http://www.zuojing.com/201407/6789.shtml 互联网最有价值的不是自己在产生很多新东西,而是对已有行业的潜力再次挖掘,用互联网的思维去重新提升传统行业. ...

最新文章

  1. iBatis简单入门教程
  2. 全景视频的跟踪与合成方法
  3. 求立方根_初一数学立方根考点详解,立足基础,把握题型,学会方法
  4. linux 4t磁盘格式化,centos格式化大于2T的硬盘
  5. NEC公司日前正式回绝了AMD的传唤请求
  6. 工程量清单软件测试,输变电工程量清单投标标准化应用软件BQB2017基本操作方法...
  7. Linux兄弟连学习
  8. 公有云、私有云、私有化_私有云与公共云的评估
  9. dylib动态库注入及重签名打包
  10. 发现IGame中又一个大坑
  11. 刚刚!霍金向北京喊话:人类需要大胆前行,涉足无前人所及之处
  12. 大家好,欢迎您加入这个集体!
  13. 公链洗牌进行时 |链捕手
  14. 大数据入门--带你快速了解大数据
  15. 数据库建模三步骤:概念模型-逻辑模型-物理模型
  16. vue截取用户名字做头像
  17. ugui 转轮_(搬运工)unity3D的FingerGestures插件
  18. 航班编程代码c语言,航班查询系统C语言源程序
  19. Jmeter使用教程 压力测试(1)--线程组、HTTP请求、察看结果树
  20. 亲民地理-第45期-西雅图城市大学

热门文章

  1. 小技巧 大智慧 实例集
  2. 【笔试面试】携程笔试面试注意事项
  3. 过渡属性transition详解
  4. 初识RAID磁盘阵列(内含理论加实验操作)
  5. Ps橡皮擦的使用说明
  6. 指定服务器不存在或访问被拒绝访问,SQL Server不存在或访问被拒绝怎么办
  7. 基于cesium和mars3d海洋三维管线信息系统开发完工总结
  8. A-Z,所有汽车品牌完整json格式
  9. VS2008下载地址和版本破解
  10. Android移动开发