Skip to content

Latest commit

 

History

History
199 lines (151 loc) · 22.4 KB

README.md

File metadata and controls

199 lines (151 loc) · 22.4 KB

Awesome QUIC Logo

Awesome QUIC Awesome

A collection of various awesome lists for videos, pentesters, libraries and frameworks.

QUIC is the Quick UDP Internet Connections protocol, developed by Google and currently in IETF workgroups for further development. It is being considered for replacing TCP as a transport protocol for HTTP/3. We are building an Open source project for IoT & Edge Computing atop QUIC called 🦖YoMo


QUIC Weekly

🍖discord/quic 🦖YoMo

QUIC Weekly - 20210414

  • @Daniel Stenberg 's blog: WHERE IS HTTP/3 RIGHT NOW?, said the specifications are all done. They’re now waiting in queues to get their final edits and approvals before they will get assigned RFC numbers and get published as such – they will not change any further.
  • netray.io scans the IPv4 address space weekly and checks how many hosts that speak QUIC. Their latest scan found 2.1 million such hosts.
  • All the major browsers have HTTP/3 implementations and most of them allow you to manually enable it if it isn’t already done so. Chrome and Edge have it enabled by default and Firefox will so very soon
  • @Robin Draw digram and open source the source file: https://github.com/rmarx/h3-protocol-stack
  • Microsoft's open-source implementation of the QUIC protocol that will form the basis of HTTP/3 will be in Windows Server 2022. It's being used for SMB over QUIC, which is a more secure replacement for WebDAV to deliver SMB access without the expense and complexity of a VPN. This uses QUIC as the transport for SMB instead of TCP/IP and RDMA, with a tunnel that secures SMB even if encryption isn't enabled. "SMB over QUIC will be available with Azure Automanage and Windows Server 2022," Kumar told TechRepublic. "It will also be supported as a client in Windows 10 and on third-party platforms like Android and others."

QUIC Weekly - 20210106

QUIC Weekly - 20201209

  • Wireshark v3.4.1 release with lots of updates to QUIC
  • 📢 draft-ietf-quic-manageability discusses manageability of the QUIC transport protocol, focusing on caveats impacting network operations involving QUIC traffic
  • 📢 Applicability of the QUIC Transport Protocol discusses the applicability of the QUIC transport protocol, focusing on caveats impacting application protocol development and deployment over QUIC
  • w3c WebTransport defines a set of ECMAScript APIs in WebIDL to allow data to be sent and received between a browser and server, implementing pluggable protocols underneath with common APIs on top. This specification uses pluggable protocols, with QUIC [QUIC-TRANSPORT] as one such protocol, to send data to and receive data from servers. It can be used like WebSockets but with support for multiple streams, unidirectional streams, out-of-order delivery, and reliable as well as unreliable transport.
  • 📽 David Schinaz from Google QUIC 101
  • Netty release 0.0.1.Final This codec provides a QUIC implementation of draft 32 by wrapping quiche and expose QUIC via the Channel API.
  • Cloudflare blog Accelerating UDP packet transmission for QUIC
  • PDF: Performance analysis of Google’s Quick UDP Internet Connection Protocol under Software Simulator
  • 📢 draft-schinazi-masque-h3-datagram-01 QUIC DATAGRAM extension provides application protocols running over QUIC with a mechanism to send unreliable data while leveraging the security and congestion-control properties of QUIC. However,QUIC DATAGRAM frames do not provide a means to demultiplex application contexts. This document defines how to use QUIC DATAGRAM frames when the application protocol running over QUIC is HTTP/3 by adding an identifier at the start of the frame payload. This allows HTTP messages to convey related information using unreliable DATAGRAM frames, ensuring those frames are properly associated with an HTTP message.

QUIC Weekly - 20201202

QUIC Weekly - 20201125

QUIC Weekly - 20201118

QUIC Weekly - 20201111

QUIC Weekly - 20201028

  • 📢 DNS-over-QUIC
  • Paper Implementation and analysis of QUIC for MQTT
    • Transport and security protocols are essential to ensure reliable and secure communication between two parties. For IoT applications, these protocols must be lightweight, since IoT devices are usually resource constrained. Unfortunately, the existing transport and security protocols – namely TCP/TLS and UDP/DTLS – fall short in terms of connection overhead, latency, and connection migration when used in IoT applications. In this paper, after studying the root causes of these shortcomings, we show how utilizing QUIC in IoT scenarios results in a higher performance. Based on these observations, and given the popularity of MQTT as an IoT application layer protocol, we integrate MQTT with QUIC. By presenting the main APIs and functions developed, we explain how connection establishment and message exchange functionalities work. We evaluate the performance of MQTTw/QUIC versus MQTTw/TCP using wired, wireless, and long-distance testbeds. Our results show that MQTTw/QUIC reduces connection overhead in terms of the number of packets exchanged with the broker by up to 56%. In addition, by eliminating half-open connections, MQTTw/QUIC reduces processor and memory usage by up to 83% and 50%, respectively. Furthermore, by removing the head-of-line blocking problem, delivery latency is reduced by up to 55%. We also show that the throughput drops experienced by MQTTw/QUIC when a connection migration happens is considerably lower than that of MQTTw/TCP.
  • Article HTTP/3: Everything you need to know about the next-generation web protocol
  • Article QUIC and IoT
    • One of the oft-touted use cases for QUIC is in Internet-of-Things (IoT) devices, as they often need intermittent (cellular) network access and low-latency connection setup, 0-RTT and better loss resilience are quite interesting in those cases. However, those devices often also have quite slow CPUs.. There are many issues where QUIC’s designers mention the IoT use case and how a certain decision might impact this, though as far as I know there is no stack that has been tested on such hardware yet. Similarly, many issues mention taking into account a hardware QUIC implementation, but at my experience level it’s unclear if this is more wishful thinking and handwaving rather than a guarantee.

QUIC Weekly - 20201021

QUIC Weekly - 20201014

  • Adoption Chrome is deploying HTTP/3 and IETF QUIC
    • current latest Google QUIC version (Q050) has many similarities with IETF QUIC. But up until now, the majority of Chrome users didn't communicate with IETF QUIC servers without enabling some command-line options.
    • Google search latency decreases by over 2%. YouTube rebuffer time decreased by over 9%, while client throughput increased by over 3% on desktop and over 7% on mobile. We're happy to announce that Chrome is rolling out support for IETF QUIC (specifically, draft version h3-29)
    • Today 25% of Chrome Stable users are using h3-29, and we plan on increasing that number over the coming weeks as we continue to monitor performance data
    • Chrome will actively support both IETF QUIC h3-29 and Google QUIC Q050 to provide servers that support Q050 with time to update to IETF QUIC.
  • Adoption Cloudflare begins emailing users that H3 will be automatically enabled starting this month
  • CDNs are misunderstood these days. Caching at the browser across sites is not that important, it caching at a point of presence (POP). This POP being so much closer to your end users brings performance gains because TCP is terrible over distances. QUIC may fix this by it's shift to UDP. HackerNews
  • TechTalk Lucas Pardue: QUIC & HTTP/3: Open Standards and Open Source Code October 27, 2020
  • OpenSource quiche landed supported for QUIC & HTTP/3 unreliable datagram into . It can help support low-latency where guaranteed delivery of data is not paramount.
  • Developing QUIC Loss Detection and Congestion Control in Haskell

Latest IETF draft

Learning Resources

Books

Library & Frameworks

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)
TQUIC v1 library, client, server TLS 1.3

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
TQUIC v1 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.