网络技术协议-协议邮件官方号群发技术 bbs csdn
摘要:演讲者介绍了什么是QUIC,QUIC协议的优势、价值主张和重要特性,并对QUIC赋能的未来进行了畅想。
资料来源:IETF 115 技术深入探讨:QUIC 第 1 部分
演讲者:Jana Iyengar(Fastly 基础设施和 Web 服务副总裁)
内容安排:王炯浩 什么是QUIC协议,一种新的传输协议
首先网络技术协议,它是一种服务于当今因特网和现代网络的多流传输协议。 演讲者使用了一张他认为“不完全准确”的结构图来说明 QUIC 与其他解决方案的关系。
如上图所示,左边是传统栈中的TCP、TLS、HTTP等协议,右边是QUIC所在的位置。 TLS 有点包含在 QUIC 中,也有点不包含。 这取决于观点。 QUIC 的目标是加速和部署可用于下一代网络的事物。 那么,真正使 QUIC 在网络上可行和有用的是什么? 多流是一个非常强大的功能。 这里的想法是,您只需在一个端到端连接中就可以获得多个有序的字节流。 这对网络非常有效,因为每个站点都有很多对象,而且它们都是多个、有效并行、独立的对象。
Streams 被设计成轻量级的,它们被设计成可以快速高效地构建和调整。 如果您的实现是正确的,您甚至可以将其用作消息传递抽象。 因此,您可以将其视为一种协议,以流的形式为您提供消息的抽象。 您还可以在这个东西之上构建部分排序,或者您可以在这个东西内部构建完整排序。 这是多流自由度。
基于UDP
QUIC是基于UDP的,因为UDP可以连接绝大部分网络。 这并不一定意味着该协议必须存在于用户空间中。 然而,如果你想在 IP 之上构建一些东西,你就必须停留在内核中。 在构建、部署和运输方面,这对技术人员来说也是一个大问题。 因此,在 UDP 之上构建为我们提供了两个显着的好处:
它能够原样访问互联网,包括防火墙等。它允许部署在用户空间。
然而,它需要作者在它之上重新创建一堆 TCP 函数。 这要求他们在此基础上重做所有 TCP 功能,但 QUIC 不是简单地重做它们,而是做得更好,因为它从过去吸取了教训。 QUIC 想要整合 TCP 的所有知识,它做到了。
内置加密
QUIC 实现内置加密,这意味着数据、QUIC 协议和标头携带的所有内容都受到保护。 其中一个非常重要的先决条件是他使用 TLS 1.3 进行密钥协商。
中间件 (MiddleBoxes) 使暴露的协议变得僵化。 我们不希望 QUIC 变得死板。 TCP今天已经僵化了。 许多其他以纯文本形式在野外部署的协议已经完全僵化了。 你不能在线上更改它们,而不会看到与中间框的意外、奇怪的交互,使它们变得僵硬。 或者有某些预期的行为。 期待他们的某些行为。 因此,通过加密,只有端点才能真正理解和更改元数据、协议中的标头和主体。 这是一件重要的事情,因为现在中间框不能更改标题或弄乱标题,甚至不能读取标题。 所以它们不能有任何预期的行为,这意味着端点可以自由地更改它们认为合适的协议。 这意味着 QUIC 变得可进化,这是我们的目标。
QUIC 价值主张
QUIC带来了很多突破性的价值,演讲者分为四点:
0-RTT传输和加密握手
零往返时间恢复(简称0-RTT)基本上很难用TCP和分裂的TCP/TLS模型来实现。 TCP 之上的层是 TLS,它们最终具有不同的范围。 当我说不同的范围时网络技术协议,我指的是特征范围,即网络中连接终止的范围,这使得 0-RTT 这样的事情从根本上变得困难。
0-RTT 和加密的握手提供了低延迟链接的初始设置。 TCP也可以用fast open和TLS 1.3来实现,但是因为这是两个独立的模型,所以最终还是存在作用域不同的问题。 TCP 不理解域、搜索等,只理解 IP 地址; TLS 在另一个空间运行。 这是两个独立的层,一个可以调和它们,但这需要很多繁文缛节。
连接迁移
这是 TCP 从根本上难以实现的另一种技术。 永远记住,最终目标仍然是协议的广泛部署; 如果我们使用TCP,我们需要适配传输路由中的所有网络设备和中间项,这将大大延迟部署进度。
故障排除和调试
你做过应用程序调试吗? 您是否尝试过关联跟踪? 那将是一个非常痛苦的过程。 当你有特定的应用程序行为时,你保存应用程序踪迹,但此时如果你需要获取 TCP 踪迹,你需要进入内核,沿着网络路径一路走下去,找出一切。 您正在尝试采用完全不同的管道,由完全不同的人构建,用于完全不同的用例,并尝试将它们关联起来。 成功构建这些东西的公司已经非常有效地使用它们,但这不是一个小项目。 在 QUIC 的用户空间中,这基本上可以让您记录传输网络级别的跟踪以及应用程序级别的跟踪。 这非常有意义,因为您不必单独执行此操作。 您可以与应用程序跟踪一起记录。 您会将条件窗口值记录为多少? 什么是连接状态? 什么时候再次创建流? 我们在用户空间中获得了更多更丰富的功能来做到这一点。
更改服务器架构
直接服务器返回 (DSR) 是服务器将请求移交给另一台服务器并让该服务器直接为用户服务的能力。 这就像客户端向服务器请求资源,而服务器没有资源,但知道拥有它的另一台服务器能够终止连接或请求,并直接从那里提供响应。 这称为直接服务器返回。 “我没有内容,别人有”问题的常见解决方案是让客户端连接到服务器,连接到其他服务器,接收内容,然后返回。 所以有一个完整的返回路径。 相反,直接服务器返回绕过返回路径上的这个中间服务器。
QUIC赋能
总结:QUIC 的真正价值
演讲者总结了三点QUIC的真正价值: