Skip to content

Latest commit

 

History

History
256 lines (196 loc) · 26 KB

README-CN.md

File metadata and controls

256 lines (196 loc) · 26 KB

Awesome QUIC Logo

Awesome QUIC Awesome

关于QUIC协议的论文、IETF进展、博客、视频等等

QUIC 的全称是 Quick UDP Internet Connections protocol, 由 Google 设计提出,目前由 IETF 工作组推动进展。其设计的目标是替代 TCP 成为 HTTP/3 的数据传输层协议。熹乐科技在物联网(IoT)和边缘计算(Edge Computing)场景也一直在打造底层基于 QUIC 通讯协议的边缘计算微服务框架 YoMo,长时间关注 QUIC 协议的发展,遂整理该文集并配以适当的中文翻译,方便更多关注 QUIC 协议的人学习。


QUIC Weekly - 每周一草

在线社区:🍖discord/quic

维护者:🦖YoMo

QUIC Weekly - 20210414期

  • curl之父@Daniel Stenberg的新博客《WHERE IS HTTP/3 RIGHT NOW?》:SPEC已经全部完成了,正在排队等待最终的审核,就能拿到RFC版号(比如RFC2616,这个2616就是HTTP/1.1的第一版被assign的RFC number),然后就能发布了。这也就意味着大家可以拿着现在的SPEC(按照Draft-29版本提交的)来写自己的QUIC实现了
  • netray.io 每周扫描一次IPv4下的QUIC落地速率,他们最近的一次扫描显示已经有210万主机在应用HTTP/3:
  • 浏览器方面,Chrome和Edge是默认开启QUIC支持的,Firefox也马上要加入这个行列,其他的都需要手工开启(如何在iOS上开启QUIC可参考之前的QUIC-Weekly文章)
  • @Robin Robin Marx整理的HTTP/3与HTTP/2、HTTP/1.1协议栈的详细对比图片,并且也开源了源文件: https://github.com/rmarx/h3-protocol-stack
  • 微软的QUIC协议开源实现 将HTTP/3的基础能力融合进Windows Server 2022,被用于SMB over QUIC功能。该功能是一个相比WebDAV机制更安全的实现,无须再为VPN方案付出额外的费用和复杂的应用机制。也为SMB服务替换掉了TCP/IP和RDMA的传输机制。

QUIC Weekly - 20210106期

QUIC Weekly - 20201209期

  • Wireshark v3.4.1 发布,增加了很多与 QUIC 相关的更新
  • 📢 draft-ietf-quic-manageability 讨论了 QUIC 传输协议的可管理性,重点讨论影响 QUIC 流量的网络操作的注意事项,比如,要实现 QUIC 的负载均衡,建议参考该文
  • 📢 Applicability of the QUIC Transport Protocol 讨论了QUIC传输协议的适用性,重点讨论了影响通过QUIC开发和部署应用协议的注意事项,比如,实现0-RTT的过程中要注意的安全问题
  • w3c WebTransport 在WebIDL中定义了一组ECMAScript API,允许在浏览器和服务器之间发送和接收数据,在底层实现可插拔协议,在上面实现通用API。本规范使用可插拔的协议,QUIC-TRANSPORT 就是这样一个协议,向服务器发送数据和从服务器接收数据。它可以像WebSockets一样使用,但支持多流、单向流、无序传输、可靠以及不可靠传输。
  • 📽 Google 的 David Schinaz 的视频 QUIC 101
  • Netty 发布了支持 QUIC 的 0.0.1.Final 该 Codec 实现了 IETF QUIC draft-32 版本,基于 qiuche 项目构建
  • Cloudflare 的博客 为 QUIC 加速 UDP 包传输
  • PDF: 软件模拟器 QUIC 协议的性能分析
  • 📢 draft-schinazi-masque-h3-datagram-01 QUIC DATAGRAM 扩展为在 QUIC 上运行的应用协议提供了一种发送不可靠数据的机制,同时利用了QUIC的安全和拥塞控制特性。本文档定义了当在 QUIC 上运行的应用协议是 HTTP/3 时,如何通过在 frame payload 的开头添加一个标识符来使用 QUIC DATAGRAM frame。这允许HTTP消息使用不可靠的DATAGRAM帧来传递相关信息,确保这些帧与HTTP消息正确关联。

QUIC Weekly - 20201202期

QUIC Weekly - 20201125期

QUIC Weekly - 20201118期

QUIC Weekly - 20201111期

QUIC Weekly - 20201104期

QUIC Weekly - 20201028期

  • 📢 DNS-over-QUIC
    • 对科学那啥可是个好东西,太敏感,咱也不敢多说...
  • Paper 基于QUIC的MQTT协议的实现和分析
    • 在端到端的通讯中,确保可靠和安全通信的基础是Transport和Security协议。对于IoT应用,这些协议必须是轻量级的,毕竟IoT设备通常都是硬件能力受限。不幸的是,目前广为流行的TCP/TLS和UDP/DTLS这两种方式,在建连、时延、连接迁移等方面有很多的不足。这篇论文研究了这些缺陷的根源,展示了如何借助QUIC协议优化IoT场景从而达到更高的网络性能,以IoT领域使用范围较广的MQTT协议为例,团队实现了主要的API和功能,并比较了使用QUIC和TCP构建的MQTT协议在有线网络、无线网络和长距离实验场景(long-distance testbeds)中的差异。
    • 测试的结果标明,基于QUIC协议实现的MQTT协议降低建连开销达56%
    • 在半连接场景下,对CPU和内存的消耗分别降低了83%和50%
    • 因为避免了队头阻塞(HOL Blocking)的问题,数据分发时延降低了55%
    • 数据传输速率的抖动也因为QUIC的连接迁移特性得到明显的改善。
  • Article HTTP/3: 你需要知道的下一代互联内网协议
  • Article QUIC和物联网IoT
    • IoT设备是应用QUIC协议的一个好场景,因为这些设备通常工作在无线(蜂窝)网络下(Cellular network),且需要快速建连、0-RTT和重传。但是,这些设备CPU能力普遍较弱。QUIC的作者其实多次提到QUIC对IoT应用场景有很大的提升,可惜的是,至今还没有一套为这个场景设计的协议栈(其实有啊:基于QUIC协议的Edge Computing框架: 🦖YoMo

QUIC Weekly - 20201021期

QUIC Weekly - 20201014期

  • Adoption Chrome 正在部署 HTTP/3 和 IETF QUIC
    • 当前最新的 Google QUIC 版本(Q050)与 IETF QUIC 有很多相似之处。但是到目前为止,大多数 Chrome 用户在未启用某些命令行选项的情况下没有与 IETF QUIC 服务器通信。
    • Google 搜索延迟减少了2%以上。 YouTube 的重新缓冲时间减少了9%以上,而台式机的客户端吞吐量增加了3%以上,移动设备的客户端吞吐量增加了7%以上。我们很高兴地宣布,Chrome 即将推出对 IETF QUIC(特别是草稿版本 H3-29)的支持。
    • 目前,有25%的 Chrome 稳定用户正在使用 H3-29。我们计划在接下来的几周内增加该数字,并继续监控性能数据。
    • Chrome 将积极支持 IETF QUIC H3-29 和 Google QUIC Q050,让支持 Q050 的服务器有时间更新到 IETF QUIC。
  • Adoption Cloudflare 向用户发送电子邮件,通知从本月开始 H3 将自动启用
  • CDN 最近被误解了。跨站点的浏览器缓存并不是那么重要,重要的是在存在点(POP)进行缓存。这种 POP 与你的终端用户的距离如此之近,可带来性能提升,因为TCP的传输距离很差。QUIC 可以通过改用 UDP 来解决此问题。 HackerNews
  • TechTalk Lucas Pardue:QUIC 和 HTTP/3:开放标准和开放源代码 (2020年10月27日。)
  • OpenSource quiche 已支持 QUIC 和 HTTP/3 不可靠的数据报。在保证数据的传输不是最重要的情况下,它可以降低延迟。
  • 在 Haskell 中开发 QUIC 丢失检测和拥塞控制

IETF进展

学习资源

1.不在爱了 TCP 💔

2.浅尝 QUIC 科普贴 🎱

3.真干实践大厂贴 🏌️‍♂️

4.熬夜充电技术细节贴 🦾

5.墙裂推荐英文贴 🍿

Books

框架和开源实现

C/C++

Name Version Roles Handshake
Microsoft's MsQuic draft-27/28/29/30/31/32 client, server TLS 1.3 RFC
Facebook's mvfst draft-29 library, client, server TLS 1.3
Google's Chromium Q043, Q046, Q050, T050, T051, draft-27, draft-29 library, client, server QUIC Crypto, TLS
ats (Apache Traffic Server) draft-29 client. server TLS 1.3
LiteSpeed's lsquic Draft-32, Draft-29, Draft-28, Draft-27, Q043, Q046, and Q050. library, client, server QUIC Crypto, RFC 8446
ngtcp2 draft-29, draft-30, draft-31, and draft-32 library, client, server TLSv1.3 (RFC 8446)
Cloudflare's nginx-cloudflare draft-27, draft-28, draft-29 server TLSv1.3 (RFC8446)
picoquic draft-32/31/30/29/28/27 library and test tools, test client, test server TLS 1.3 (using picotls)
Pluginized QUIC draft-29 library, client, server TLS 1.3 (using picotls)
quant draft-33, draft-34, v1 library, client, server TLS 1.3
Fastly's quicly draft-27 client, server TLS 1.3 (final)
nginx-quic draft-27 .. draft-32 server TLSv1.3 (RFC8446)

Rust

Name Version Roles Handshake
Cloudflare's quiche draft-27, draft-28, draft-29 library, client, server TLSv1.3 (RFC8446)
Mozilla/Firefox's Neqo draft-30 library, client, server TLS 1.3
Quinn draft-28 library, client, server TLS 1.3

Go

Name Version Roles Handshake
quic-go always the current draft library, client, server TLS 1.3 RFC

Node.js

Name Version Roles Handshake
Node.js QUIC draft-25 client, server TLS 1.3

Python

Name Version Roles Handshake
aioquic draft-29 library, client, server TLS 1.3

Haskell

Name Version Roles Handshake
Haskell quic draft-29 library, client, server TLS 1.3

Java

Name Version Roles Handshake
kwik draft-29, draft-30, draft-31, draft-32 library, client TLS 1.3

Debugging

  • qvis QUIC and HTTP/3 visualization tools
  • qlog This repository contains various programming language integrations for the qlog format.