quiche icon indicating copy to clipboard operation
quiche copied to clipboard

Media over QUIC (MoQ) support

Open birneee opened this issue 3 months ago • 6 comments

Are you planning to make your MoQ implementation open source?

birneee avatar Aug 26 '25 19:08 birneee

To clarify, the MoQ capability referenced in https://blog.cloudflare.com/moq/ is currently not based on quiche, so there is no non-public implementation of WebTransport or MoQT. @englishm can probably speak to the specific details of the current deployment

We're big fans of MoQ. The implementation details could change in future but we can't commit to any timeline or prioritization at the time.

LPardue avatar Aug 26 '25 21:08 LPardue

@LPardue Thank you for sharing this insight! I guess quinn-rs/quinn was used, and that your implementation builds on englishm/moq-rs. I would like to see WebTransport and MoQ capabilities in quiche eventually.

birneee avatar Aug 27 '25 15:08 birneee

@birneee I'm adding support now by building web-transport-quiche on top of tokio-quiche. Should take a week.

I actually started moq-rs using quiche but wanted to build an async API and it was too much work.

kixelated avatar Nov 07 '25 15:11 kixelated

@kixelated that is great to hear! I am not too familiar with the tokio-quiche implementation, but I have a bit of a concern that everything gets too tightly coupled with tokio. Tokio is great, but there are other great runtimes. I have always liked the state-machine aspect of quiche.

In the meantime, I added WebTransport support to non-async quiche (birneee/quiche/webtransport_streams) and used it to implement MoQ quiche_moq.

birneee avatar Nov 07 '25 16:11 birneee

@kixelated that is great to hear! I am not too familiar with the tokio-quiche implementation, but I have a bit of a concern that everything gets too tightly coupled with tokio. Tokio is great, but there are other great runtimes. I have always liked the state-machine aspect of quiche.

In the meantime, I added WebTransport support to non-async quiche (birneee/quiche/webtransport_streams) and used it to implement MoQ quiche_moq.

Cool, yeah the problem is that my existing stuff uses Tokio. As you probably know there's a LOT of async in MoQ and decided to make an async API. I'm using web-transport-trait to support MoQ over Quinn, WebSocket, WASM (maybe), and soon Quiche.

IDK it's easier to start with Tokio first and target other runtimes as needs arrive. I'd love to make a sans I/O library similar to quiche at some point... but it's currently a waste of time until there's a performance need for a custom runtime.

kixelated avatar Nov 07 '25 17:11 kixelated

Oh and quiche_moq looks pretty cool. I've got draft-14 compatibility if you want to test it against my JS/Rust clients or Rust relay. You should join the Discord if you haven't already: https://moq.dev

kixelated avatar Nov 07 '25 17:11 kixelated