目录
什么是QUIC?
QUIC(快速UDP互联网连接)是一种现代传输协议,旨在提高互联网连接速度、可靠性和安全性。QUIC基于UDP构建,最大程度地减少了连接建立延迟,并消除了队头阻塞这一传输控制协议(TCP)的主要限制。它是HTTP/3的底层传输协议,能够在各种网络条件下实现更快的数据传输和更稳定的性能。
QUIC最初由Google开发,后来由IETF标准化,如今为越来越多的网络通信提供动力。根据W3Techs的数据,QUIC已被8.9%的网站使用,HTTP/3的采用率已达到38.7%。
以下章节将解释QUIC的工作原理、重要性及其应用场景。
QUIC是如何工作的?
理解QUIC协议的一种方式是将其视为 HTTP/2 + TLS + UDP,它在网络协议栈的传输层上运行于UDP之上。
QUIC的核心是使用UDP协议作为其传输层,相比TCP协议提供更低的延迟和更高的吞吐量,同时能够绕过通常会干扰TCP连接的网络中间设备。
QUIC集成了传输层安全(TLS 1.3),与TLS 1.2等先前版本相比,提高了性能和安全性,用于在端点之间建立加密的TLS连接,使得第三方极难拦截或操纵流量。
通过结合UDP的效率、TLS的安全性以及更高层HTTP/2的多路复用能力,QUIC为当今的互联网通信提供了高性能传输。
是什么让QUIC比TCP更好?
传统的基于TCP的协议在现代网络环境中面临诸多限制,特别是在延迟、灵活性和可靠性方面。
QUIC通过以下几个关键改进来应对这些挑战:
1. 快速握手与连接建立
TCP和TLS握手需要多次往返,导致连接建立出现明显的延迟。
QUIC通过在传输层使用UDP协议并将TLS 1.3直接集成到握手过程中,减少了这一开销。
它支持1-RTT连接建立,并为使用缓存会话密钥的返回客户端启用0-RTT恢复。因此,客户端在发起请求后可以更早地发送数据,从而提升了现代Web应用的性能。
2. 经过身份验证和加密的数据包
TCP协议头部未加密或未经验证,容易受到中间人篡改、注入和窃听。
相比之下,QUIC数据包在安全性方面经过了强化。 除了在初始握手期间使用的少数未受保护的数据包(如Initial和Retry数据包)外,所有消息体都已加密。因此,对QUIC数据包的任何修改都能被接收端迅速检测到,有效降低了安全风险。
如下图所示,紫色部分是流帧数据包的经过身份验证的头部,而黄色部分是加密数据:
3. 改进多路复用以避免队头阻塞
在TCP连接中,当单个数据包丢失时,队头阻塞可能会延迟所有数据流。
在HTTP/2中,多个数据流共享一个TCP连接,并且必须按顺序交付。如果一个数据包丢失,在重传丢失的数据包之前,即使其他流的数据已经到达,也无法进行处理。
QUIC在传输层引入了多路复用,允许每个流通过UDP独立运行,这有助于Web服务器高效处理多个并发连接,解决了影响整个连接的队头阻塞问题。
例如,如果下图中的流1遇到数据包丢失,只有该流会受到影响,而其他流(流2和流3)会继续数据传输,不会中断。
此外,QPACK(HPACK头部压缩的一种变体)减少了冗余数据传输,并在不稳定的网络条件下进一步提高了性能。
4. 可插拔的拥塞控制
在传统的网络协议栈中,拥塞控制与操作系统中的TCP实现紧密耦合,使得更新或定制变得困难。
QUIC支持可插拔的拥塞控制算法,如Cubic、BBR和Reno,以及针对特定场景的自定义算法。 这些算法可以在应用层实现,无需操作系统或内核支持,因为QUIC通常在用户空间中部署。
同一应用程序中的不同连接可以使用不同的拥塞控制策略,同时可以在不升级系统或中断服务的情况下应用更新。
5. 连接迁移
TCP连接基于四元组:源IP地址、源端口、目标IP地址和目标端口。当这些值中的任何一个发生变化时,连接就会中断。
然而,QUIC连接基于可变长度的连接ID。 只要连接ID保持不变,连接就会持续存在,无需断开和重新连接。
例如,如果客户端使用IP1发送数据包1和2,然后切换网络,更改为IP2并发送数据包3和4,服务器可以根据数据包头部的连接ID字段识别出所有四个数据包都来自同一客户端。
QUIC能够实现连接迁移,是因为其底层的用户数据报协议(UDP)是无连接的。
6. 前向纠错
数据包丢失会严重影响性能,尤其是在不稳定的网络环境中。
QUIC支持前向纠错,它允许接收方使用冗余数据包恢复丢失的数据,减少了重传的需要,并提高了在恶劣网络条件下的可靠性。
7. 支持持续演进的版本控制
像TCP这样的传输协议很难演进,因为更新通常依赖于操作系统的更改。
QUIC引入了内置的版本控制,允许多个协议版本共存,并能够在不中断现有连接的情况下逐步升级。
8. 通过自定义帧实现可扩展性
QUIC还支持扩展帧,允许在不修改核心协议的情况下引入新功能。 扩展可以是标准化的,也可以针对特定场景私有使用,从而在保持互操作性的同时实现协议层面的创新。
QUIC和HTTP/3如今的应用场景有哪些?
随着HTTP/3和QUIC获得更广泛的采用,它们在延迟、可靠性和连接稳定性方面的优势正在支持跨不同网络环境的越来越多的用例。
实时通信与流媒体
HTTP/3和QUIC非常适合实时通信和流媒体,如视频会议、在线游戏和直播,在这些场景中,低延迟和稳定的连接至关重要。
QUIC的连接迁移和在恶劣网络条件下改进的性能有助于减少启动延迟、缓冲和请求失败。
物联网
在物联网环境中,设备通常在不稳定和资源受限的条件下运行,例如高速移动、海上作业和山区。基于TCP的协议(如消息队列遥测传输协议)可能会遭受频繁的重连和较高的开销。
QUIC通过更快的连接建立在不可靠的网络中提高了效率,减少了中断和传输成本。
云计算
随着越来越多的服务迁移到云端,高效可靠的客户端-服务器通信变得日益重要。QUIC通过支持多路复用流和更快的连接建立来增强云性能,提高了分布式应用的响应能力。
电子商务与数字支付
对于电子商务和支付系统,性能和可靠性直接影响用户体验和交易成功率。QUIC有助于确保更快的页面加载、高峰流量期间更稳定的连接以及关键操作的安全数据传输。
CDNetworks提供全面的QUIC协议支持
CDNetworks很早就认识到QUIC协议的潜力,并率先投入其开发。
CDNetworks在其整个平台上支持HTTP/3和QUIC,全面升级以支持所有版本的gQUIC和标准化的iQUIC。
在内部,CDNetworks提高了其平台的帧处理能力,并优化了平台性能以降低资源消耗。
内部基准测试表明,在1 Mbps的QUIC流拉取场景下,相同并发条件下带宽性能提升了41%,而平均CPU使用率下降了28%。
特别针对流媒体分发,CDNetworks进行了广泛的优化,以提高QUIC的重传效率和速率采样精度。它还优化了UDP数据包传输和GSO策略,有效解决了跨区域恶劣网络条件下视频质量不稳定的问题。
基于内部测试,比较直播拉流场景中通过QUIC和TCP进行视频播放的效果,得出以下关键发现:
1. 网络丢包下的码率稳定性
在稳定网络中,QUIC和TCP表现相似。在20%丢包率下,QUIC保持稳定的码率,而TCP性能显著下降。
2. 不同网络条件下的播放流畅度
在没有丢包的环境中,由于应用层额外的加密开销,QUIC的流畅度略低。然而,在丢包条件下,QUIC的表现明显优于TCP。
3. 丢包条件下的首字节时间
QUIC在20%丢包率下保持稳定的首字节延迟,而TCP则经历明显的延迟增加。
要了解CDNetworks如何帮助您实现最快的QUIC流传输,请联系我们或点击此处免费试用。
QUIC常见问题解答
哪些应用使用QUIC?
许多Web浏览器(如Chrome)、YouTube、Gmail、Google地图和Facebook都在使用QUIC。许多流媒体平台和云服务也正在采用QUIC。
是否应该阻止QUIC?
阻止QUIC适合需要进行深度流量检查的企业,但可能会降低用户体验并减慢内容交付速度。
QUIC会取代TLS协议吗?
QUIC将TLS 1.3直接集成到其协议中,是对TLS的增强,而不是作为安全标准取代它。
为什么QUIC可能引发安全担忧?
加密的UDP流量可能会限制传统防火墙的可见性,并使流量检查变得复杂。
