来源
:IETF 115 Technology Deep Dive: QUIC Part 1

讲者
:Jana Iyengar(Fastly 基础设施和网络服务副总裁)

内容整理
:王炅昊

摘要
:讲者介绍了 QUIC,其优势和重要特征,并畅想了 QUIC 可以赋能的未来。
目录
  • 什么是 QUIC
    • 一个新的传输协议
    • 基于 UDP
    • 内置加密
  • 价值主张
    • 0-RTT 传输和加密握手
    • 连接迁移
    • 故障排除和调试
    • 转变服务器架构
  • QUIC 赋能
  • 总结:QUIC 的真正价值

什么是 QUIC

一个新的传输协议

首先,它是一个多流的传输协议,为今天的互联网和现代网络服务。讲者使用了一张他自称“并不完全准确”的结构图来阐述 QUIC 与其他方案之间的关联。
如上图所示,左侧的传统栈中有 TCP、TLS 和 HTTP 等协议,右侧则是展示了 QUIC 所在的位置。TLS 有点像是包含在 QUIC 内部,又有点像是没包含在其内部。这取决于思考角度。QUIC 的目标是加速和部署可以用于下一代网络的东西。那么,是 QUIC 的什么特性真正使它在网络上可行和有用?多流是一个非常强大的功能。这里的想法是你在仅仅一个端到端的连接中,你得到多个有序的字节流。这对网络非常有效,因为每个网站都有很多对象,而且它们都是多个、有效并行的独立对象。
流被设计成轻量级的,它们旨在快速、高效地构建和调整。如果您的实现正确,您甚至可以将其用作消息抽象。因此,您可以将其视为一种协议,以流的形式为您提供消息抽象。您也可以在此东西之上构建部分排序,或者您也可以在这个东西内部构建完整排序。这便是多流的自由度。

基于 UDP

QUIC 是基于 UDP 的,因为 UDP 能够连通大多数的网络。这并不一定意味着协议必须存在于用户空间中。不过,如果您想在 IP 之上构建某些东西,您就必须被困在内核中。在构建、部署和运输方面,这对技术人员来说也是一个大问题。因此,在 UDP 之上构建给了我们两个显著的好处:
  1. 它能够照原样访问互联网,包含防火墙等。
  2. 它允许在用户空间中部署。
然而,它需要作者们在它之上重新创建一堆 TCP 函数。这要求他们必须在此基础上重做所有 TCP 功能,但 QUIC 并没有简单地重做它们,而是做得更好,因为它从过去吸取了教训。QUIC 想整合 TCP 的所有知识,并做到了。

内置加密

QUIC 实现了内置加密,这意味着数据、QUIC 协议和头承载的所有内容都受到保护。这其中一个非常重要的前提就是,他使用了 TLS 1.3 进行密钥协商。
中间件(MiddleBoxes) 使暴露的协议僵化。我们不想 QUIC 变得僵化。TCP 今天已经僵化了。许多其他以纯文本形式在野外部署的协议已经完全僵化。你不能在线上更改它们,而不会看到与使它们僵化的中间框发生意想不到的、奇怪的交互。或者有某些预期的行为。期待他们的某些行为。因此,通过加密,只有端点才能真正理解和更改元数据、协议中的标头以及主体。这是一件重要的事情,因为现在中间框无法更改标题或弄乱标题甚至读取标题。所以他们不能有任何预期的行为,这意味着端点可以随意更改他们认为合适的协议。这意味着 QUIC 变得可进化,而这正是我们的目标。

价值主张

QUIC 带来了许多突破性的价值,讲者分为四点介绍:

0-RTT 传输和加密握手

零往返时间恢复(zero round trip time resumption, 简称 0-RTT)基本上很难用 TCP 和分离的 TCP/TLS 模型来实现。TCP 上层是TLS,他们最终有不同的范围。当我说不同的范围时,我指的是特性范围,即网络中连接终止位置的范围,而这使得像 0-RTT 这样的事情从根本上变得困难。
0-RTT 和加密握手提供了低延迟链接的初始设置。TCP 也可以通过 fast open 以及 TLS 1.3 实现,但因为这是两个分离模型,最终仍会存在范围不同的问题。TCP 无法理解域,搜索等等,而只能理解IP地址;TLS 则在另一个空间中操作。这是两个分离的层次,人们可以调和这些,但这需要许多繁复的工作。

连接迁移

这又是一项 TCP 从基础架构上说难以实现的技术。始终要记住的是,最终目标仍然是将协议广泛部署;如果使用 TCP,我们需要对传输路线上所有的网络设备、中间项进行适应,而这将极大拖延部署进度。

故障排除和调试

您是否做过应用调试?您是否尝试关联痕迹(traces)?那将是非常痛苦的过程。当您有特定的应用程序行为时,您存下了应用程序痕迹,但此时如果你需要获取 TCP 痕迹,则需要进入内核并沿着网络路径一直走下去以找出所有内容。您正在尝试使用由完全不同的人、为完全不同的用例、构建的完全不同的管道,并尝试将它们关联起来。成功构建这些东西的公司已经非常有效地使用了它们,但这不是一个小体量的工程。在 QUIC 的用户空间中,基本上可以让您能够记录传输网络级别的跟踪以及应用程序级别的跟踪。这是非常有意义的,因为您不必单独执行此操作。您可以与应用程序跟踪一起记录。您将记录条件窗口值是多少?连接状态是什么?什么时候再次创建流?我们在用户空间中获得了更多、更丰富的功能来执行此操作。

转变服务器架构

直接服务器返回(Direct Server Return, DSR)是服务器能够将请求移交给另一台服务器并让该服务器直接为用户服务的能力。这就像如果客户端从服务器请求资源,服务器没有资源,但知道另一台拥有该资源的服务器能够终止连接或请求,并直接从那里提供响应。这称为直接服务器返回。解决“我没有内容,其他人有”这个问题的常见方法是客户端连接到服务器,连接到其他服务器,接收内容,然后返回。所以有一条完整的返回路径。相反,直接服务器返回绕过返回路径上的这个中间服务器。

QUIC 赋能

  • QUIC 让更多新的技术和应用更易于部署。
  • MASQUE 是一个允许在 HTTP/3 连接中同时运行多个网络应用程序的框架。他部署 HTTP/3 和 QUIC 以创建隐藏隧道。QUIC 使得这一技术的效率极大提升了,这对于依赖 MASQUE 的 Apple Private Relay 等业务来说意义重大。
  • Media Over QUIC(MOQ)是一个让媒体内容直接通过 QUIC 进行传播的提议,这也将进一步提升当前多媒体内容传输的效率。

总结:QUIC 的真正价值

讲者分三点总结了 QUIC 的真正价值:
  • QUIC 使网络更快、更有弹性、响应更快
  • QUIC 使上层的新技术成为可能
  • QUIC 是一种真正可以在互联网上演进的传输技术
附上演讲视频:
继续阅读
阅读原文