tractor icon indicating copy to clipboard operation
tractor copied to clipboard

`QUIC` transport research

Open goodboy opened this issue 2 years ago • 0 comments

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 trio we 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
  • there is an existing Python sans-io implementation aioquic has asyncio support using protocols, so we'll need to figure an alt to that for trio.
  • Here's a list of uses / example code:

Recent updates on FOSS support:

  • quinn: an async quic impl in rust: https://github.com/quinn-rs/quinn

  • high level breakdown of lang support in (impls) of libp2p

    • official support landed in rust-libp2p last year seemingly based on the impl in quinn (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
  • aioquic asyncio support: https://github.com/aiortc/aioquic/tree/main/src/aioquic/asyncio

  • quicssh GH 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 berty messenger: 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/

goodboy avatar Mar 24 '23 19:03 goodboy