3996d6fece | ||
---|---|---|
.. | ||
http3 | ||
internal | ||
logging | ||
qlog | ||
quicvarint | ||
.gitignore | ||
.golangci.yml | ||
Changelog.md | ||
LICENSE | ||
README.md | ||
SECURITY.md | ||
buffer_pool.go | ||
client.go | ||
closed_conn.go | ||
codecov.yml | ||
config.go | ||
conn_id_generator.go | ||
conn_id_manager.go | ||
connection.go | ||
connection_timer.go | ||
crypto_stream.go | ||
crypto_stream_manager.go | ||
datagram_queue.go | ||
errors.go | ||
frame_sorter.go | ||
framer.go | ||
interface.go | ||
mockgen.go | ||
mtu_discoverer.go | ||
multiplexer.go | ||
oss-fuzz.sh | ||
packet_handler_map.go | ||
packet_packer.go | ||
packet_unpacker.go | ||
receive_stream.go | ||
retransmission_queue.go | ||
send_conn.go | ||
send_queue.go | ||
send_stream.go | ||
server.go | ||
stream.go | ||
streams_map.go | ||
streams_map_incoming.go | ||
streams_map_outgoing.go | ||
sys_conn.go | ||
sys_conn_buffers.go | ||
sys_conn_buffers_write.go | ||
sys_conn_df.go | ||
sys_conn_df_darwin.go | ||
sys_conn_df_linux.go | ||
sys_conn_df_windows.go | ||
sys_conn_helper_darwin.go | ||
sys_conn_helper_freebsd.go | ||
sys_conn_helper_linux.go | ||
sys_conn_helper_nonlinux.go | ||
sys_conn_no_oob.go | ||
sys_conn_oob.go | ||
sys_conn_windows.go | ||
token_store.go | ||
tools.go | ||
transport.go | ||
window_update_queue.go |
README.md
A QUIC implementation in pure Go
quic-go is an implementation of the QUIC protocol (RFC 9000, RFC 9001, RFC 9002) in Go. It has support for HTTP/3 (RFC 9114), including QPACK (RFC 9204) and HTTP Datagrams (RFC 9297).
In addition to these base RFCs, it also implements the following RFCs:
- Unreliable Datagram Extension (RFC 9221)
- Datagram Packetization Layer Path MTU Discovery (DPLPMTUD, RFC 8899)
- QUIC Version 2 (RFC 9369)
- QUIC Event Logging using qlog (draft-ietf-quic-qlog-main-schema and draft-ietf-quic-qlog-quic-events)
Support for WebTransport over HTTP/3 (draft-ietf-webtrans-http3) is implemented in webtransport-go.
Detailed documentation can be found on quic-go.net.
Projects using quic-go
Project | Description | Stars |
---|---|---|
AdGuardHome | Free and open source, powerful network-wide ads & trackers blocking DNS server. | |
algernon | Small self-contained pure-Go web server with Lua, Markdown, HTTP/2, QUIC, Redis and PostgreSQL support | |
caddy | Fast, multi-platform web server with automatic HTTPS | |
cloudflared | A tunneling daemon that proxies traffic from the Cloudflare network to your origins | |
frp | A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet | |
go-libp2p | libp2p implementation in Go, powering Kubo (IPFS) and Lotus (Filecoin), among others | |
gost | A simple security tunnel written in Go | |
Hysteria | A powerful, lightning fast and censorship resistant proxy | |
Mercure | An open, easy, fast, reliable and battery-efficient solution for real-time communications | |
OONI Probe | Next generation OONI Probe. Library and CLI tool. | |
RoadRunner | High-performance PHP application server, process manager written in Go and powered with plugins | |
syncthing | Open Source Continuous File Synchronization | |
traefik | The Cloud Native Application Proxy | |
v2ray-core | A platform for building proxies to bypass network restrictions | |
YoMo | Streaming Serverless Framework for Geo-distributed System |
If you'd like to see your project added to this list, please send us a PR.
Release Policy
quic-go always aims to support the latest two Go releases.
Contributing
We are always happy to welcome new contributors! We have a number of self-contained issues that are suitable for first-time contributors, they are tagged with help wanted. If you have any questions, please feel free to reach out by opening an issue or leaving a comment.