-
Notifications
You must be signed in to change notification settings - Fork 5.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
QUIC & HTTP/3 support #1558
Comments
I agree - would be great - and seems relatively accessible with |
Maybe we can also consider https://github.com/cloudflare/quiche |
Existing implementations of QUIC: https://github.com/quicwg/base-drafts/wiki/Implementations The ones (under active development) in Rust: |
|
From my experience with quiche, it's only the CPU bound parts, you bring your own network IO. I have used it with a Tokio UDP socket and converted it to a modern Rust async futures stream+sink. The library is basically only the hard parts of state machine, parsing, and crypto pieces. The bigger problem with using quiche is that they require BoringSSL and have multiple times stated they are unlikely to change (see cloudflare/quiche#129 (comment) and cloudflare/quiche#16 (comment)). But there is an old PR open yet on hold for OpenSSL so maybe there's hope for rustls. |
@ry Is anyone working on this issue? I could give this a shot. Can't give any guarantees though. |
Make sure you check out #3995 as it is more comprehensive of an issue (I missed this one when I opened that) and Ry had some thoughts on implementation. |
An empirical study on QUIC implementations that's worth reading https://qlog.edm.uhasselt.be/epiq |
hyper underpins deno's native http extensions. there is hyperium/hyper#1818 for http3 support in the hyper framework. there's an experimental implementation, hyperium/h3. |
when http/3 can be implemented in deno? |
What's interesting about HTTP/3 is that people will make ESM CDN servers that can server-push module graphs to clients and possibly beat bundlers, and this highly aligns with Deno's vanilla-esm-and-importmaps philosophy. The sooner we have HTTP/3, the sooner we might have even better vanilla ESM support in Deno (and others) where module downloads will be very optimized (f.e. all gzipped and cached from the CDN). |
i'm working on an initial implementation of QUIC here #21942 |
Many of Cloudflare's websites have been blocked. any update? 我发现有的网站的https的tls连接被中间人攻击了,连接被断开了,只有使用quic才能连接成功!比如说"xxxxxxxxxxx.xxxxxxxxxxxxxxxxx.xxxxxxxxx.workers.dev". At present, browsers Firefox, Chrome, and Edge already support HTTP3, and there is also a query of HTTPS type through DNS, and you can find out the server's support for HTTP3. 目前浏览器firefox,chrome,edge都已经支持http3了,还有通过dns查询https类型,可以查到服务器对于http3的支持情况. I found that Chrome was able to open Cloudflare's workers.dev website, but deno couldn't access workers.dev. |
Your issue is not related to |
Any updates on this? |
All web browsers now support HTTP/3 so support in Deno would be great. https://caniuse.com/http3 |
This was merged which implemented QUIC API in Deno. |
Yes this is awesome , any way of accessing this right now in deno since I am excited in trying out the quic api. Also since you've supported quic , does your api also support http/3 ? and can I use this directly with the deno.serve -ish?
|
I guess there's only something like |
How hard is http/3 support though? if Quic has been supported ? |
@SerJaimeLannister please do not spam the users subscribed to this issue. Only the QUIC interface has been merged, now there are still work in progress to be able to use "fetch" using HTTP3. You can follow the work here: #27431 Once there will be something concrete I think it will be announced here. |
HTTP/3 is on the 2025 roadmap for hyper (the http library used by deno). As that moves along, we will be able to hook it up with the QUIC layer in the various places you would expect it to be. |
It would be nice if the Deno standard library had QUIC protocol support out-of-the-box, implemented in Rust underneath. QUIC will likely be the UDP-based alternative to TCP used as the foundation for the Internet Engineering Task Force (IETF)'s upcoming HTTP3 spec. Essentially QUIC is a more efficient implementation of the combined capabilities of TCP and TLS, and a less mature version of QUIC has been used by Google for years in requests from Chrome to its own webservers. Node.js has an open issue for adding in QUIC support, but based on the discussion there I'm assuming that the priority is low for them. They may not understand the significance of adding support.
The text was updated successfully, but these errors were encountered: