hyperium / tonic

A native gRPC client & server implementation with async/await support.
https://docs.rs/tonic
MIT License
10.02k stars 1.02k forks source link

gRPC HTTP/3 support in Tonic #339

Closed quentusrex closed 3 years ago

quentusrex commented 4 years ago

Feature Request

Tracking issue for supporting client and server http3 transport for gRPC services. Functionality should mostly be inherited by dependency crates, but would likely need exposure through tonic layer.

Crates

In Tonic: https://github.com/hyperium/tonic/blob/master/tonic/src/transport/mod.rs

Inheriting from Hyper: https://github.com/hyperium/hyper/issues/1818

Inheriting from Quinn: https://github.com/djc/quinn/issues?q=is%3Aissue+is%3Aopen+label%3Ah3

Motivation

To have a rust and tokio framework that is futures based and supports H3 for machine to machine APIs, as well as upcoming browser to server H3 requests.

Alternatives

There are other libraries that implement H3 like quiche, but they all still require significant work to get gRPC based services working.

LucioFranco commented 4 years ago

Thanks for opening this! You are on the right track here, once hyper gets h3 we can easily expose it for tonic.

LucioFranco commented 4 years ago

Initial progress is here https://github.com/hyperium/h3/pull/1

davidpdrsn commented 3 years ago

I think I'll close this for now. Until hyper supports h3 there isn't much we can do.

nashley commented 2 years ago

Here's the issue for adding h3 support into hyper: https://github.com/hyperium/hyper/issues/1818

As of writing, it's currently waiting on this exploratory effort to add h3 support to reqwest, which will inform how h3 is supported in hyper: https://github.com/seanmonstar/reqwest/issues/1558

usmonie commented 1 year ago

any news?

davidpdrsn commented 1 year ago

@usmonie See the linked issues. If nothings been posted there then there is probably nothing new. No need to post on old issues.

makorne commented 1 year ago

waiting on this exploratory effort to add h3 support to reqwest, See the linked issues. If nothings been posted there then there is probably nothing new.

@davidpdrsn But looks like ... This was done in https://github.com/seanmonstar/reqwest/pull/1599, and released in v0.11.15 Current 0.11.18

davidpdrsn commented 1 year ago

That's reqwest. What about hyper?

makorne commented 1 year ago

As of writing, it's currently waiting on this exploratory effort to add h3 support to reqwest

Based on this, it seems that adding h3 to reqwest was the main problem.

TBBle commented 3 weeks ago

As far as I understand, it was hyper waiting on reqwest (for client-side support), and even as of 0.12.5, reqwest's http/3 support still requires an experimental flag; my understanding from https://github.com/hyperium/hyper/issues/1818 is that Hyper is waiting for that to stabilise before taking it on. The request-side issue for this is https://github.com/seanmonstar/reqwest/issues/2303.

So long-story-short, it still appears to be blocked in a grand-dependency in a PRs-welcome state.