TCP 有什么问题?
今天 TCP 烂了怎么办?如何看待谷歌 Google 打算用 QUIC 协议替代 TCP/UDP?
什么是 Quic

优势
HTTP/3 利用 QUIC 加速 HTTP 请求,QUIC 提供比 TCP 和 TLS 更高的加密和性能
QUIC 是一种默认加密的新传输协议,旨在加快 HTTP 传输速度以及使其更加安全
HTTP/3 基于 UDP,如果数据包丢失,只会中断一个流,而不会中断所有流,提高了同时获取多个对象的性能
支持 0-RTT,消除服务器的 TLS 确认,使后续连接的启动速度更快
HTTP/2 多路复用 2 个请求。响应被分解为多个数据包,一旦一个数据包丢失了,两个请求都被阻止。

HTTP/3 复用 2 个请求。虽然浅色的数据包丢失了,但是深色的数据包传输得很好。
.gif)
.gif)
在相同丢包率的条件下,HTTP/3 和 HTTP/2 性能测试对比如下
测试环境:服务端(HTTP/3 with cubic & HTTP/2 with bbr)、客户端(cubic)


参考
谷歌官方 2014 年发布的视频:QUIC: next generation multiplexed transport over UDP
Codevel博客文章 https://medium.com/codavel-blog/quic-vs-tcp-tls-and-why-quic-is-not-the-next-big-thing-d4ef59143efd
How Secure and Quick is QUIC? Provable Security and Performance Analyses
🍿 QUIC WG chair Dr.Lars Eggert QUIC: a new internet transport (🎬 58:39) @2017
🍿 Google's QUIC: next generation multiplexed transport over UDP (🎬 51:40) @2014
F5 Sr Solution Architect Jason Rahm What is QUIC? (🎬 08:35) @2018
Codavel's QUIC vs TCP+TLS — and why QUIC is not the next big thing
谁在用
参考:https://w3techs.com/technologies/details/ce-http3
到 2021 年中,QUIC 占互联网流量的 12%。第一个也是最引人注目的 QUIC 采用者是谷歌(这并不奇怪,因为它是由谷歌员工开发的)。谷歌在其自己的生态系统中拥有服务器、应用程序、服务和客户端,因此该公司可以轻松证明一个概念并将大量应用程序迁移到新框架。30% 的 Youtube 流量已经转换到 QUIC。
Facebook 是下一个转换的网站,它已经将超过 75% 的流量迁移到 QUIC。Facebook 和 Instagram 移动应用程序都已充分利用 QUIC。
然而,QUIC 的采用目前基本已经结束。微软的流量很少使用该协议,在流媒体视频中,只有 YouTube 和 Facebook Live 支持 QUIC,但流媒体视频却占到网络流量的近 80%,而这些流量大多仍基于 TCP。Netflix 和 Amazon Prime 等巨头不使用 QUIC。然而,微软倾向于将其 VPN 产品从 TCP 转向 QUIC。
国内
腾讯 QUIC 实践 让互联网更快的协议,QUIC在腾讯的实践及性能优化
阿里 QUIC 实践 AliQUIC:场景化高性能传输网络实践
七牛 QUIC 实践 流畅度提高 100%!七牛云 QUIC 推流方案如何实现直播 0 卡顿
又拍云 QUIC 实践 QUIC协议详解之Initial包的处理
国外
主要采用者
尽管 QUIC 的采用还在增长,但已经有一些主要的互联网巨头开始采用该协议。以下是一些主要的QUIC采用者:
Google: 作为 QUIC 的创建者,Google 是第一个采用该协议的大公司之一。在 Google 生态系统中,包括服务器、应用程序、服务和客户端,QUIC 的部署相对容易。例如,Google 将其视频平台 YouTube 的30%流量迁移到了 QUIC 上。
Facebook: Facebook已将超过75%的流量迁移到QUIC。Facebook和Instagram的移动应用程序也充分利用了QUIC的性能优势。
微软: 尽管微软的采用程度相对较低,但它正在考虑将其VPN产品从TCP转向QUIC,这表明微软也在积极探索QUIC的潜力。
参考:
Facebook QUIC 实践 Building Zero protocol for fast, secure mobile connections
Cloudflare QUIC 实践 The Road to QUIC
Uber QUIC 实践 Employing QUIC Protocol to Optimize Uber’s App Performance
Fastly QUIC 实践 Modernizing the internet with HTTP/3 and QUIC
生态
目前支持 QUIC 的生态系统包括:
浏览器:Chrome(默认);Edge、Firefox、Safari 和其他浏览器默认使用 TCP,但也可以选项 QUIC。
应用程序:所有来自 Google 的移动应用程序,例如 Gmail 和 YouTube;Facebook 应用程序;Uber。
服务器/CDN:Akamai、Microsoft、Apple、Google、Cloudflare、Fastly、Caddy 和 NetApp。其中一些 CDN 使用 QUIC 作为概念验证,但几乎所有流量仍使用 TCP。
Web 服务器:LiteSpeed、H20、Ngnix 和 Apache。
负载均衡器:LiteSpeed 和 F5 BIG-IP。
社区项目:基于chromium实现的 libquic,以及反向代理——作为反向代理服务器的 Docker 镜像。
编程语言:Go(quic-go)、Quic.NET(C#)
框架和开源实现
C/C++
Rust
Go
Node.js
Python
Haskell
Java
IETF进展
draft-ietf-quic-transport-32 QUIC: A UDP-Based Multiplexed and Secure Transport
draft-ietf-quic-tls-32 Using TLS to Secure QUIC
draft-ietf-quic-invariants-11 Version-Independent Properties of QUIC
draft-ietf-quic-recovery-32 QUIC Loss Detection and Congestion Control
draft-ietf-quic-version-negotiation-01 Compatible Version Negotiation for QUIC