tractor
tractor copied to clipboard
`QUIC` transport research
As a breakout from #136, I'm dumping some recent research links around
the possibility of supporting QUIC as being our desired transport in
the longer run instead of TCP :surfer:
Seeing as most of the recent implementations are being written in
rust, seems like this potential work will likely go in tandem with
#352 :sunglasses:
Verbatim content from #136 bullet:
QUIC quick history and high level info:
- developed at google. It's branded as a multiplexed-UDP: a low latency TCP replacement and it's being slowly standardized and introduced to http infra on the internet.
- the semantics of QoS / cancellation of sub-streams within
connections since with
triowe can definitely stick to the one-task-per-stream pattern easily. - the stack is implemented in user space and thus it may have
performance benefits to use cloudfare's rust impl
quiche- comment notes on how we might do the python-rust integration
- there is an existing Python sans-io implementation
aioquichasasynciosupport using protocols, so we'll need to figure an alt to that fortrio. - Here's a list of uses / example code:
-
hypercorn's internal protocol support - an example of their
triosupported udp server
-
Recent updates on FOSS support:
-
quinn: an async quic impl inrust: https://github.com/quinn-rs/quinn -
high level breakdown of lang support in (impls) of
libp2p- official support landed in
rust-libp2plast year seemingly based on the impl inquinn(above):- init issue: https://github.com/libp2p/rust-libp2p/issues/2883
- PR: https://github.com/libp2p/rust-libp2p/pull/2289
- support ack: https://github.com/libp2p/rust-libp2p/pull/2289#issuecomment-1312850968
- comment on missing functionality: https://github.com/libp2p/rust-libp2p/issues/2883#issuecomment-1367563242
- official support landed in
-
aioquicasyncio support: https://github.com/aiortc/aioquic/tree/main/src/aioquic/asyncio -
quicsshGH project: https://github.com/moul/quicssh- author's blog: https://github.com/moul/quicssh
- repohub index: https://reposhub.com/go/security/moul-quicssh.html
- initial idea: https://manfred.life/ssh-quic
- WESH protocol from same author, basis for
bertymessenger: https://berty.tech/docs/protocol/#direct-transport
Standards and application compatibility research:
- https://datatracker.ietf.org/doc/id/draft-bider-ssh-quic-03.html
- https://dial.uclouvain.be/memoire/ucl/en/object/thesis%3A14590
- https://blog.denisbider.com/2019/06/the-case-for-ssh-over-udp.html
- https://blogit.michelin.io/quic-analysis-a-udp-based-multiplexed-and-secure-transport/