roadrunner icon indicating copy to clipboard operation
roadrunner copied to clipboard

[💡FEATURE REQUEST]: Support for QUIC or HTTP/3

Open cidious opened this issue 5 years ago • 7 comments

Hi guys, thank you for the project.

Do you plan to implement the QUIC protocol AKA HTTP/3?

I cannot into Golang, but i've found several implementations of QUIC: 1 2 3

According to the article from Uber, this should be a very promising feature.

cidious avatar May 19 '20 12:05 cidious

@cidious Quick is currently in the beta stage (or alfa might be). There is a draft document about standard link. I think, when it is supported by default by major browsers (not via the config flags) we will add the support of QUIC.

rustatian avatar May 19 '20 13:05 rustatian

Also, if this request is popular, we will add support for sure ASAP :) From my POV I totally agree with you, this def will be a very promising feature.

rustatian avatar May 19 '20 13:05 rustatian

Technically it's still in draft, but Google already using it in production.

Alex-Bond avatar May 20 '20 01:05 Alex-Bond

The IETF just published QUIC as RFC 9000, supported by RFC 9001, RFC 9002, and RFC 8999. That means QUIC version 1 is officially formalized, and QUIC deployments will now move away from using temporary draft versions to the newly minted version 1. (HTTP/3, the version of HTTP that runs on QUIC, is following closely behind, and should be published soon.)

This news is a big deal, both for the IETF and for the internet ecosystem.

cidious avatar Jun 02 '21 03:06 cidious

ref: https://github.com/golang/go/issues/32204

rustatian avatar Sep 18 '21 21:09 rustatian

Accepted for the v2.11.0. It will be in the http plugin: https://github.com/roadrunner-server/http

rustatian avatar Jul 07 '22 13:07 rustatian

http/3 is now standardized: https://www.rfc-editor.org/rfc/rfc9114.html

EDIT: Since we have a standard now, I'd rather wait for the Go stdlib implementation.

rustatian avatar Jul 12 '22 23:07 rustatian

HTTP(3) crypto/tls accepted: https://github.com/golang/go/issues/44886

rustatian avatar Jun 08 '23 22:06 rustatian

Hi guys, author of quic-go here 👋. Have you considered using quic-go for QUIC support in roadrunner?

quic-go is quite mature at this point. The project has been around for about 8 years, and (among many others) it powers HTTP/3 support in the Caddy web server and QUIC support in IPFS. We’ll actually use the new crypto/tls API (https://github.com/golang/go/issues/44886) linked in the comment above as soon as Go 1.21 is released.

I’d be happy to give you some pointers for integrating it, if there’s interest :)

marten-seemann avatar Jun 13 '23 17:06 marten-seemann

Hey @marten-seemann 👋🏻 nice to meet you :) Yes, I am waiting for the Go 1.21 release to start working on the integration ⚡ Thanks for the quic-go, nice job 👍🏻

rustatian avatar Jun 13 '23 17:06 rustatian

The quic-go v0.37.x releases now support Go 1.21.

marten-seemann avatar Aug 15 '23 05:08 marten-seemann

That's nice, added to the v2024 milestone 👍🏻

rustatian avatar Aug 15 '23 06:08 rustatian

Will be added much faster I think, under the new RR -e (experimental) flag ❤️

rustatian avatar Oct 28 '23 11:10 rustatian

Are there any plans of replacing quic-go with x/net/quic once it gets stable?

readycool avatar Nov 19 '23 01:11 readycool

Hey @readycool 👋 x/net/quic ticket and implementation in go is still in progress. We're working on adding http3 support in RoadRunner, but, since RR is not a web-server it is going slow.

rustatian avatar Nov 19 '23 13:11 rustatian