点击上方“LiveVideoStack”关注我们
作者 | 王盛
策划 | 包研、Alex
编辑 | Alex
QUIC
年终盘点
#001#
QUIC(Quick UDP Internet Connections,快速UDP互联网连接)是一种新的“更快”的通用网络传输协议。相比于TCP和TLS,QUIC提供了许多改进来提升网络传输的性能。随着QUIC协议的标准化,QUIC之上的HTTP/3协议已经被众多浏览器所支持,其中包括Chrome、Microsoft Edge(Chrome内核版本)、Firefox和Safari,除了浏览器,也有不少客户端App也开始支持和使用HTTP/3。本篇文章就和大家一起聊聊QUIC协议的发展历程,和我认为的QUIC未来发展趋势。
QUIC协议的发展
事实上,我们现在谈论的QUIC协议有两个协议同名:“Google QUIC”(简称gQUIC)和“IETF QUIC”(简称iQUIC)。gQUIC是由Google工程师们在2012年设计的原始协议,2013年Google公开了QUIC协议,同年也将此协议提交给IETF。这与SPDY和HTTP/2协议的发展历程如出一辙,先由Google公司设计和试验,在性能有提高的情况下提交给IETF工作组进行标准化。
2015年6月,一份QUIC的Internet Draft提交到IETF组织进行标准化,同年IETF的QUIC工作组也因此成立[1]。
2018年10月,IETF的HTTP工作组和QUIC工作组联合声明了HTTP/3,也就是QUIC之上运行的HTTP协议,但此时HTTP/3的具体标准尚未定稿。
2021年5月,IETF宣布了QUIC的标准RFC9000[2],同时RFC9000由RFC8999[3](Version-Independent Properties of QUIC),RFC9001[4](Using TLS to Secure QUIC)和RFC9002[5](QUIC Loss Detection and Congestion Control)所支持。
至此,QUIC协议的完整标准已经形成,iQUIC与当初的gQUIC已有相当大的不同,可以完全将其视为一个单独的协议。从数据包的格式、握手方式和HTTP映射,iQUIC改进了当初gQUIC的设计,这也得益于许多组织和个人的开放协作,他们的共同努力让互联网变得更快、更安全。
作者注:本文后续如未加特殊说明,都是在描述iQUIC。
QUIC协议的现状
QUIC协议的诞生与今天的互联网应用场景和传输性能密切相关。在互联网和HTTP发展的过程中,HTTP底层协议大体上来说基本没变。但是,随着海量移动设备推高互联网流量,越来越多的应用场景需要低延迟、高吞吐、应用QoS感知的网络传输等,原来的HTTP协议在提供流畅、高效的Web访问方面越来越难以满足应用需求。
QUIC的一切特性始于“构建在UDP之上”
“构建在UDP之上”意味着可以不关心内核或者不用深入了解内核的开发,也可以灵活地调整可靠传输机制和拥塞控制算法等,这极大地方便了各种对传输QoS敏感的应用,比如实时音视频传输、在线游戏等。QUIC的主要特性如下所示:
选择UDP也能让QUIC协议不依赖网络中间设备Middle-Boxes做调整。
TCP协议的开发、调试、观测的困难问题也会迎刃而解,无需通过复杂的BPF(Berkeley Packet Filter)来采集和调试协议栈程序,只需在用户态部署简单的数据收集程序。
应用程序的崩溃问题也不至于影响系统内核,而且可以留足崩溃现场做后续分析。
用户态有更多的程序库帮我们实现更复杂、更全面的策略,比如自适应CC(Congestion Control)算法。<